Skip to content
Open
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
47 changes: 46 additions & 1 deletion DEVELOPMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ mise has tasks for:
- Running unit tests (`test:unit`)
- Running integration tests (`test:integration`, `test:integration:*`)
- Building binaries (`build:binary`) and Docker images (`build:docker`)
- Publishing release artifacts (`release`)
- Creating GitHub releases (`release`) — see [Releasing](#releasing)

These are the important files in the repo:

Expand Down Expand Up @@ -741,3 +741,48 @@ Struct definitions make error message strings slightly clearer.

Note: not all errors do this at the moment, and we will change over time.

## Releasing

Releases are published via GitHub Actions when a GitHub release is created.

### Using mise (recommended)

```bash
mise run release v2.1.9
```

This will:
1. Create a git tag for the version
2. Push the tag to origin
3. Create a GitHub release with auto-generated notes
4. Trigger the release workflow which builds and publishes Docker images

### Manual release

If you need more control over the release process:

```bash
# Create and push the tag
git tag v2.1.9
git push origin v2.1.9

# Create the GitHub release
gh release create v2.1.9 --generate-notes
```

### Re-releasing a version

If a release fails and you need to re-release the same version:

```bash
# Delete the GitHub release
gh release delete v2.1.9 --yes

# Delete the tag (local and remote)
git tag -d v2.1.9
git push origin :refs/tags/v2.1.9

# Create the release again
mise run release v2.1.9
```

17 changes: 15 additions & 2 deletions mise.toml
Original file line number Diff line number Diff line change
Expand Up @@ -666,8 +666,21 @@ mise --env tls run proxy:down
"""

[tasks.release]
description = "Publish release artifacts"
depends = ["release:docker"]
description = "Create a GitHub release"
run = """
#!/usr/bin/env bash
set -euo pipefail

VERSION="${1:?Version required, e.g., mise run release v2.1.9}"

echo "Creating release $VERSION..."

git tag "$VERSION"
git push origin "$VERSION"
gh release create "$VERSION" --generate-notes

echo "Done! Release workflow will run automatically."
"""

[tasks."release:docker"]
description = "Release a Docker image for cipherstash-proxy"
Expand Down