This commit is contained in:
+29
-15
@@ -1,10 +1,12 @@
|
||||
# Releasing bird
|
||||
|
||||
Target destinations:
|
||||
- npm: `@steipete/bird`
|
||||
- npm: `@yuta/bird`
|
||||
- Gitea Packages: `https://git.yutakobayashi.com/api/packages/yuta/npm/`
|
||||
- Nix flake: `packages.<system>.bird` and `apps.<system>.default`
|
||||
- Homebrew: tap formula in `steipete/homebrew-tap` (e.g., `bird.rb`)
|
||||
|
||||
## Checklist (npm + GitHub)
|
||||
## Checklist (npm + Gitea)
|
||||
1) Version bump
|
||||
- Update `package.json` `version` (semver, e.g., `0.5.0`).
|
||||
- Update `CHANGELOG.md` and tag the release section.
|
||||
@@ -13,22 +15,31 @@ Target destinations:
|
||||
- `pnpm install`
|
||||
- `pnpm test`
|
||||
- `pnpm run build`
|
||||
- `nix build .#bird`
|
||||
- `nix flake check`
|
||||
|
||||
3) Publish to npm (scoped)
|
||||
3) Publish to npmjs (scoped)
|
||||
- Ensure you are logged in (`npm whoami`).
|
||||
- `npm publish --access public` (from repo root). Package name is `@steipete/bird`.
|
||||
- `npm publish --access public` (from repo root). Package name is `@yuta/bird`.
|
||||
- Verify:
|
||||
- `npm view @steipete/bird version`
|
||||
- `npx -y @steipete/bird@<version> --help`
|
||||
- `npm view @yuta/bird version`
|
||||
- `npx -y @yuta/bird@<version> --help`
|
||||
|
||||
4) Git tag & GitHub release
|
||||
4) Publish to Gitea Packages
|
||||
- Push a `v<version>` tag or run the `Publish npm package` workflow manually.
|
||||
- The workflow writes npm auth for `https://git.yutakobayashi.com/api/packages/yuta/npm/` and publishes `@yuta/bird`.
|
||||
- Verify:
|
||||
- `npm view @yuta/bird version --registry=https://git.yutakobayashi.com/api/packages/yuta/npm/`
|
||||
- `npm exec --yes --registry=https://git.yutakobayashi.com/api/packages/yuta/npm/ @yuta/bird@<version> -- --help`
|
||||
|
||||
5) Git tag & Gitea release
|
||||
- `git tag v<version> && git push origin v<version>`
|
||||
- Create GitHub release from the tag. Include changelog notes and attach optional binary (see below).
|
||||
- Create a Gitea release from the tag. Include changelog notes and attach optional binary (see below).
|
||||
|
||||
## Optional: attach compiled binary
|
||||
If you want a single-file binary for Homebrew/GitHub assets:
|
||||
If you want a single-file binary for Homebrew/Gitea release assets:
|
||||
- Build: `pnpm run binary` (uses Bun to produce `./bird`).
|
||||
- Upload `bird` to the GitHub release and use it for the Homebrew tarball.
|
||||
- Upload `bird` to the Gitea release and use it for the Homebrew tarball.
|
||||
|
||||
## Homebrew tap update (steipete/homebrew-tap)
|
||||
1) Package the binary
|
||||
@@ -38,7 +49,7 @@ If you want a single-file binary for Homebrew/GitHub assets:
|
||||
2) Update formula in tap repo
|
||||
- File: `homebrew-tap/bird.rb` (create if absent). Model it after `poltergeist.rb`.
|
||||
- Fields to update:
|
||||
- `url "https://github.com/steipete/bird/releases/download/v<version>/bird-macos-universal-v<version>.tar.gz"`
|
||||
- `url "https://git.yutakobayashi.com/yuta/bird/releases/download/v<version>/bird-macos-universal-v<version>.tar.gz"`
|
||||
- `sha256 "<calculated_sha>"`
|
||||
- `version "<version>"`
|
||||
- Install block: `bin.install "bird"`
|
||||
@@ -49,11 +60,14 @@ If you want a single-file binary for Homebrew/GitHub assets:
|
||||
|
||||
## Release order suggestion
|
||||
1) Merge to `main` and tag.
|
||||
2) Publish npm.
|
||||
3) Build binary, upload to GitHub release.
|
||||
4) Update Homebrew tap with new URL/SHA.
|
||||
2) Publish npmjs.
|
||||
3) Let Gitea Actions publish the package to Gitea Packages.
|
||||
4) Build binary, upload to Gitea release.
|
||||
5) Update Homebrew tap with new URL/SHA.
|
||||
|
||||
## Notes
|
||||
- Scoped npm name (`@steipete/bird`) requires `--access public` on first publish.
|
||||
- Scoped npm name (`@yuta/bird`) requires `--access public` on first publish.
|
||||
- Gitea npm registry auth follows Gitea's package registry format:
|
||||
`npm config set @yuta:registry=https://git.yutakobayashi.com/api/packages/yuta/npm/`.
|
||||
- Homebrew formula assumes macOS universal binary; adjust URL/name if you ship per-arch.
|
||||
- Config defaults (JSON5) and twitter safe relay setup are documented in `README.md` — keep that in sync for each release.
|
||||
|
||||
Reference in New Issue
Block a user