@@ -79,12 +79,14 @@ where `<version>` comes from `package/version`.
7979
8080### Prerequisites
8181
82- Both subcommands run from a checkout of the revision you are releasing, with the
82+ The subcommands run from a checkout of the revision you are releasing, with the
8383following tools on ` PATH ` :
8484
8585- ` nix-cache ` needs ` nix ` and ` cachix ` . It fetches ` kup ` from
8686 ` github:runtimeverification/kup ` itself, so you do not install kup separately.
8787- ` docker ` needs ` docker ` .
88+ - ` release-draft ` , ` release-cut ` , and ` release-abort ` need ` gh ` , authenticated
89+ via ` gh auth login ` or a ` GH_TOKEN ` /` GITHUB_TOKEN ` in the environment.
8890
8991Each subcommand checks its tools up front and exits with a clear message if one
9092is missing, before starting the build.
@@ -102,14 +104,16 @@ further setup.
102104| ----------- | ------------------------------ |
103105| ` nix-cache ` | ` CACHIX_PUBLIC_TOKEN ` , ` CACHIX_PRIVATE_KFB_TOKEN ` |
104106| ` docker ` | ` DOCKERHUB_PASSWORD ` |
107+ | ` release-* ` | none — ` gh ` supplies its own authentication |
105108
106109` OWNER_REPO ` and ` REV ` default to the current checkout's ` origin ` remote and
107110` HEAD ` . Override them if you are publishing a revision other than the one checked
108111out. ` DOCKERHUB_USERNAME ` , ` DOCKERHUB_NAMESPACE ` , and ` DOCKERHUB_REPO ` default to
109112the release account and repository; override them only to publish elsewhere.
110113
111- Both subcommands refuse to run if the working tree is not clean. CI builds from a
112- fresh checkout, so a manual build must too: uncommitted changes and untracked
114+ The ` nix-cache ` and ` docker ` subcommands refuse to run if the working tree is not
115+ clean. CI builds from a fresh checkout, so a manual build must too: uncommitted
116+ changes and untracked
113117files would otherwise be baked into the published image or flake build without
114118matching the ` REV ` they are published under. Commit, stash, or clean the tree
115119first. ` git status --porcelain ` ignores ` .gitignore ` d paths, so runtime artifacts
@@ -118,26 +122,27 @@ deliberately want to publish an uncommitted state.
118122
119123### Manual release while CI is down
120124
121- The workflow also drafts, cleans up, and finalizes the GitHub release around the
122- deployment jobs. When you deploy by hand, run those ` gh ` steps yourself in this
123- order. ` nix-cache ` runs once per architecture (the workflow uses an ` x86_64 ` and
124- an ` ARM64 ` runner), so run it on a machine of each architecture that should be
125+ ` deploy.sh ` wraps the GitHub-release steps too, so a manual release runs the same
126+ subcommands the workflow does, in the same order. Run them from a checkout of the
127+ ` main ` commit you are releasing: ` release-draft ` targets ` REV ` (the current
128+ ` HEAD ` by default), and kup resolves komet-node versions against ` main ` , so a
129+ release built from an unmerged commit will not be installable with ` kup ` .
130+ ` nix-cache ` runs once per architecture (the workflow uses an ` x86_64 ` and an
131+ ` ARM64 ` runner), so run it on a machine of each architecture that should be
125132cached.
126133
127134``` sh
128- VERSION=v$( cat package/version)
129-
130135# 1. Draft the release.
131- gh release create " $VERSION " -- draft --title " $VERSION " --target " $( git rev-parse HEAD ) "
136+ ./scripts/deploy.sh release- draft
132137
133138# 2. Deploy. Export the secrets first (see the table above).
134139# Run nix-cache once per architecture; docker once.
135140./scripts/deploy.sh nix-cache
136141./scripts/deploy.sh docker
137142
138143# 3. Finalize the release once every deployment has succeeded.
139- gh release edit " $VERSION " --draft=false
144+ ./scripts/deploy.sh release-cut
140145
141146# If a deployment fails, remove the draft instead:
142- # gh release delete "$VERSION" --yes --cleanup-tag
147+ # ./scripts/deploy.sh release-abort
143148```
0 commit comments