fix: improve npm release process (#2055)
This improves the release process by introducing `scripts/publish_to_npm.py` to automate publishing to npm (modulo the human 2fac step). As part of this, it updates `.github/workflows/rust-release.yml` to create the artifact for npm using `npm pack`. And finally, while it is long overdue, this memorializes the release process in `docs/release_management.md`.
This commit is contained in:
47
docs/release_management.md
Normal file
47
docs/release_management.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# Release Management
|
||||
|
||||
Currently, we made Codex binaries available in three places:
|
||||
|
||||
- GitHub Releases https://github.com/openai/codex/releases/
|
||||
- `@openai/codex` on npm: https://www.npmjs.com/package/@openai/codex
|
||||
- `codex` on Homebrew: https://formulae.brew.sh/formula/codex
|
||||
|
||||
# Cutting a Release
|
||||
|
||||
Currently, choosing the version number for the next release is a manual process. In general, just go to https://github.com/openai/codex/releases/latest and see what the latest release is and increase the minor version by `1`, so if the current release is `0.20.0`, then the next release should be `0.21.0`.
|
||||
|
||||
Assuming you are trying to publish `0.21.0`, first you would run:
|
||||
|
||||
```shell
|
||||
VERSION=0.21.0
|
||||
./codex-rs/scripts/create_github_release.sh "$VERSION"
|
||||
```
|
||||
|
||||
This will kick off a GitHub Action to build the release, so go to https://github.com/openai/codex/actions/workflows/rust-release.yml to find the corresponding workflow. (Note: we should automate finding the workflow URL with `gh`.)
|
||||
|
||||
When the workflow finishes, the GitHub Release is "done," but you still have to consider npm and Homebrew.
|
||||
|
||||
## Publishing to npm
|
||||
|
||||
After the GitHub Release is done, you can publish to npm. Note the GitHub Release includes the appropriate artifact for npm (which is the output of `npm pack`), which should be named `codex-npm-VERSION.tgz`. To publish to npm, run:
|
||||
|
||||
```
|
||||
VERSION=0.21.0
|
||||
./scripts/publish_to_npm.py "$VERSION"
|
||||
```
|
||||
|
||||
Note that you must have permissions to publish to https://www.npmjs.com/package/@openai/codex for this to succeed.
|
||||
|
||||
## Publishing to Homebrew
|
||||
|
||||
For Homebrew, we are properly set up with their automation system, so every few hours or so it will check our GitHub repo to see if there is a new release. When it finds one, it will put up a PR to create the equivalent Homebrew release, which entails building Codex CLI from source on various versions of macOS.
|
||||
|
||||
Inevitably, you just have to refresh this page periodically to see if the release has been picked up by their automation system:
|
||||
|
||||
https://github.com/Homebrew/homebrew-core/pulls?q=%3Apr+codex
|
||||
|
||||
Once everything builds, a Homebrew admin has to approve the PR. Again, the whole process takes several hours and we don't have total control over it, but it seems to work pretty well.
|
||||
|
||||
For reference, our Homebrew formula lives at:
|
||||
|
||||
https://github.com/Homebrew/homebrew-core/blob/main/Formula/c/codex.rb
|
||||
Reference in New Issue
Block a user