Releases: AppRafter/apprafter
Release list
apprafter-backup 0.2.63
apprafter-backup 0.2.63
In-cluster backup runner image for the 2.6d-4 off-site S3
backup CronJobs. Consumed by the platform-stack chart's
templates/backup.yaml via .Values.backup.image.
Pull
docker pull ghcr.io/apprafter/apprafter-backup:v0.2.63Source: cli/apprafter-backup/.
apprafter-backup 0.2.62
apprafter-backup 0.2.62
In-cluster backup runner image for the 2.6d-4 off-site S3
backup CronJobs. Consumed by the platform-stack chart's
templates/backup.yaml via .Values.backup.image.
Pull
docker pull ghcr.io/apprafter/apprafter-backup:v0.2.62Source: cli/apprafter-backup/.
v0.2.62
cli v0.2.62 — four defects a live run found in apprafter status (2.23h, unreleased)
The roll-up shipped in v0.2.60 was run against a real cluster for the
first time. Everything below was invisible to the unit tests, the gates
and the review that passed it.
Fixed
-
Two healthy conditions were reported as problems. A clean cluster
read2 condition(s) not healthy, namingReady=True(the parent
Application is healthy) andUnauthorizedSourceModification=False
(no foreign writer has been detected). Both readings were inverted,
by one omission: the polarity table classified six condition types and
the operator declares eight.The completeness test that existed to prevent exactly this could not:
its list of six came from the same grep that produced the table, so it
asserted that the build classified what the build already classified.
It now reads the operator's ownCOND_*declarations, with a floor on
the count so a renamed prefix cannot leave it judging an empty list.
Reverting the fix makes it fail — checked. -
apprafter statusprinted the whole state store above its report.
Aninfo!(?state, …)inherited from the skeleton the command
replaced, where the struct was the output. The smoke test now
asserts the dump is absent. -
Node disk:could print forever from a poisoned cache. Freshness
wasnow.saturating_sub(fetched_at), which is0for a stamp in the
future — inside every TTL, so such an entry never expires. A machine
here carried a stamp in the year 5138 and printedNode disk: warm
above every command for two days, on a node with 69% free. A future
stamp is now a miss. -
The tier read
(unset)on a cluster that has one.State.tieris
written byapprafter init; a cluster stood up the documented way —
target addthenup— never runs it. The header falls back to the
target's configured tier, with the state file still winning when it
has one: the target's is a default for the next provision, the state's
is what was actually provisioned.
v0.2.61
cli v0.2.61 + landing — the documented install command works (2.23b, unreleased)
Fixed
-
The install command in the README and both quickstarts could not
work. All three resolved the version through GitHub's
/releases/latest, which returns the newest non-prerelease across
every tag series this monorepo publishes — five of them. So
VERSIONcould come back asoperator/v0.1.134, and the download URL
built from it 404s. The developer quickstart had a fourth route to the
same place:gh release downloadwith no tag. The CLI already knew
this and worked around it in v0.1.151 (pick_canonical_cli_tag); the
documentation never did. -
The CLI's own upgrade banner pointed at that same URL. Fixing the
fetch in v0.1.151 and leaving the printed notice on
/releases/latestfixed half the bug — the reader who followed the
banner landed on whichever release was newest across all five series,
usually a chart. It now points atapprafter.dev/download.
Added
-
https://apprafter.dev/install.sh— detects the platform, resolves
the newest CLI release with an exactvMAJOR.MINOR.PATCHfilter
(stricter than the CLI's own semver check, which accepts the real
v0.1.0-mvptag), downloads the archive with its.sha256, and
verifies the checksum before installing. With no checksum tool
available it refuses rather than installing unverified: a script that
reports success without verifying is worse than one that stops.
APPRAFTER_VERSIONpins,APPRAFTER_INSTALL_DIRrelocates. -
A download surface on the landing — a section on
/and the page
/download, from one component. No version is baked into the markup:
every asset link is resolved client-side by the same filter, so there
is nothing indist/to go stale.
Changed
shasumandsha256sumjoin the docsgen recipe allowlist. Verifying a
release artefact happens before the binary exists — the same
pre-install family ascurlandtar, which are already there.
v0.2.60
cli v0.2.60 — up is the command, status is the answer, platform is the platform (2.23a, unreleased)
Three renames' worth of honesty, no new capability. Every signal apprafter status now prints already had a reader; what changed is which command owns it.
Added
-
apprafter statusanswers "is anything wrong with my cluster?" It rolls
up the active target, the platform's version and any unhealthy condition, the
applications reporting problems, the applications held at an image digest, and
the MigrationPlans awaiting approval — in that order, from one cluster-wide
application read shared by both application sections so they describe one
instant.Every cluster-side section degrades to a labelled line instead of failing.
An operator runs this command because something looks wrong, and an
unreachable cluster is one of the things that can be wrong; a command that
errors out on the first failed read is useless in exactly that case. The
local half always prints, and an unreachable cluster is told apart from a
cluster with no PlatformStack — different problems, different next steps.Exit status stays 0 even when sections are unhealthy.
doctorowns the
"exit non-zero on FAIL" contract, and a second differently-shaped failing
contract is a promise this does not make.
Changed
-
apprafter upis the canonical command name;bootstrap-allis now its
alias. Both spellings keep working, and a test asserts both directions —
a one-directional test passes just as happily against a definition that
dropped the alias entirely. -
apprafter platform statusprints the platform stack and nothing else.
The pinned-application list and the application problem roll-up moved to
apprafter status. Neither ever read the PlatformStack; they were built here
because this was the only command with a cluster-wide view, which is a reason
to have built them and never was a reason to file them underplatform.
Nothing about how they render changed — the move is a move, and the test that
pins the roll-up andapp statusto one filter moved with them. -
status's conditions section shows only what is unhealthy, by polarity
rather than bystatus != "True". That filter is exactly backwards for
YankedVersionandNodeDiskPressure, which are bad news because they are
True— so it would have hidden the two conditions a reader most needs. A
condition type this build does not classify is always surfaced, and a unit
test fails when the operator grows a type the CLI has not classified.
Fixed
docs/reference/environment.mdlinked tocli/bootstrap-all.md, which the
rename removes.docsgen generateis write-only by design, so the stale page
was removed by hand rather than left as a stray fordocsgen checkto find.
v0.2.59
v0.2.59
No dedicated changelog section found for this tag.
See docs/changelog/UNRELEASED.md for the broader
release context.
platform-stack 0.2.66
platform-stack 0.2.66
AppRafter platform-stack umbrella Helm chart. CUE source
in platform-stack/cue/.
Install via Argo CD (recommended)
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: platform
namespace: argocd
spec:
source:
repoURL: oci://ghcr.io/apprafter/platform-stack
chart: platform-stack
targetRevision: 0.2.66
destination: { server: https://kubernetes.default.svc, namespace: argocd }Install via plain Helm
helm install platform oci://ghcr.io/apprafter/platform-stack --version 0.2.66Verify the signature
# OCI artifact (Argo CD path):
cosign verify ghcr.io/apprafter/platform-stack@sha256:554b230469a7a1e607391f0cd6a015f587a99cb3aea042c61141c236299b6e2c \
--certificate-identity-regexp "https://github.com/AppRafter/apprafter/" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
# .tgz attachment (plain Helm path):
cosign verify-blob \
--certificate platform-stack-0.2.66.tgz.pem \
--signature platform-stack-0.2.66.tgz.sig \
--certificate-identity-regexp "https://github.com/AppRafter/apprafter/" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
platform-stack-0.2.66.tgzCompatibility class + operator pairing in
platform-stack/cue/compatibility.cue.
apprafter-backup 0.2.59
apprafter-backup 0.2.59
In-cluster backup runner image for the 2.6d-4 off-site S3
backup CronJobs. Consumed by the platform-stack chart's
templates/backup.yaml via .Values.backup.image.
Pull
docker pull ghcr.io/apprafter/apprafter-backup:v0.2.59Source: cli/apprafter-backup/.
v0.2.58
v0.2.58
No dedicated changelog section found for this tag.
See docs/changelog/UNRELEASED.md for the broader
release context.
v0.2.57
v0.2.57
No dedicated changelog section found for this tag.
See docs/changelog/UNRELEASED.md for the broader
release context.