Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "aur"]
path = aur
url = https://aur.archlinux.org/allium-tools.git
1 change: 1 addition & 0 deletions aur
Submodule aur added at 1fae9c
18 changes: 16 additions & 2 deletions docs/releasing.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Pushing a `v*` tag triggers the release workflow, which builds and publishes all artifacts: Rust binaries, VSIX, npm tarballs, LSP and tree-sitter outputs. Everything ships from a single tag.

Publishing is fully automated: CI publishes the GitHub release, pushes the crates to crates.io (`publish-crates` job, via the `CARGO_REGISTRY_TOKEN` secret) and updates the Homebrew formula (`update-homebrew` job, via the `HOMEBREW_TAP_TOKEN` secret). No local crates.io login or tap checkout is needed.
Publishing is automated for every channel except the AUR: CI publishes the GitHub release, pushes the crates to crates.io (`publish-crates` job, via the `CARGO_REGISTRY_TOKEN` secret) and updates the Homebrew formula (`update-homebrew` job, via the `HOMEBREW_TAP_TOKEN` secret). No local crates.io login or tap checkout is needed. The AUR package is bumped by hand once the tag is live — see [AUR](#aur) below.

## What goes where

Expand All @@ -13,6 +13,7 @@ Publishing is fully automated: CI publishes the GitHub release, pushes the crate
| VSIX | GitHub release | CI |
| npm tarballs (allium-cli, allium-lsp, tree-sitter) | GitHub release | CI |
| Homebrew formula | homebrew-allium tap | CI |
| AUR package | aur.archlinux.org/allium-tools | manual — see [AUR](#aur) |

## Running a release

Expand All @@ -24,13 +25,26 @@ This bumps versions, commits, tags, pushes, and watches CI through to completion

For major language version bumps, also follow the checklist in `docs/versioning.md`.

Requires `gh` (GitHub CLI) and `cargo` on the PATH.
Requires `gh` (GitHub CLI) and `cargo` on the PATH. It does not touch the AUR.

## AUR

The AUR package is the one channel neither CI nor `release.sh` publishes, so it goes stale silently until someone bumps it by hand. It builds `allium` from the release source tarball, which means a bump is only ever "point at the new tag, refresh the checksum, build once to check".

`aur/` is a submodule tracking the AUR repo. The procedure lives in `aur/README.md`:

```bash
git submodule update --init aur
```

Pushing needs an AUR account whose SSH key is registered against the package, so the submodule clones read-only over HTTPS; maintainers set the push URL locally.

## Manual steps (if not using the script)

1. Bump versions: `./scripts/version-bump.sh <version>`
2. Commit, tag and push: `git add -A && git commit -m "v<version>" && git tag v<version> && git push origin main --tags`
3. Watch CI build, attach and publish everything
4. Bump the AUR package — see [AUR](#aur). Needed whether or not you used the script.

If the CI publish jobs fail, the fallbacks are `cargo publish -p allium-parser && cargo publish -p allium-cli` (needs a crates.io login) and `./scripts/update-homebrew-formula.sh <version>` plus a push of the `homebrew-allium` tap repo.

Expand Down