This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-graalvm-distro.git
The following commit(s) were added to refs/heads/main by this push:
new 47f4222 Add release guide, disable cancel-in-progress, update
CLAUDE.md
47f4222 is described below
commit 47f422271299d874045abdf992349f1d9c6c4a84
Author: Wu Sheng <[email protected]>
AuthorDate: Sun Mar 15 08:59:23 2026 +0800
Add release guide, disable cancel-in-progress, update CLAUDE.md
- Add docs/release-guide.md covering the full release pipeline
- Add release guide to docs/menu.yml
- Set CI concurrency cancel-in-progress to false
- Add no-auto-commit/push rule to CLAUDE.md
---
.github/workflows/ci.yml | 2 +-
CLAUDE.md | 1 +
docs/menu.yml | 2 +
docs/release-guide.md | 140 +++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 144 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index b83d5de..81e3cd5 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -35,7 +35,7 @@ on:
concurrency:
group: ci-${{ github.ref }}
- cancel-in-progress: true
+ cancel-in-progress: false
env:
GHCR_IMAGE: ghcr.io/apache/skywalking-graalvm-distro
diff --git a/CLAUDE.md b/CLAUDE.md
index 76b8a70..b8c5e40 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -66,6 +66,7 @@ docker compose -f docker/docker-compose.yml up
## Git Commit Rules
- **No Co-Authored-By**: Do not add `Co-Authored-By` lines to commit messages.
+- **No auto commit or push**: Do not commit or push unless explicitly asked by
the user.
## CI Rules
- **Docker tags must use full commit SHA** (`git rev-parse HEAD`), never short
SHA (`--short`). This applies to the `commit-sha` output in CI workflows.
diff --git a/docs/menu.yml b/docs/menu.yml
index eee6b31..fb73c28 100644
--- a/docs/menu.yml
+++ b/docs/menu.yml
@@ -32,6 +32,8 @@ catalog:
path: "/docker-image"
- name: "Configuration"
path: "/configuration"
+ - name: "Release Guide"
+ path: "/release-guide"
- name: "Architecture"
catalog:
- name: "Distribution Policy"
diff --git a/docs/release-guide.md b/docs/release-guide.md
new file mode 100644
index 0000000..2f78deb
--- /dev/null
+++ b/docs/release-guide.md
@@ -0,0 +1,140 @@
+# Release Guide
+
+This guide covers the end-to-end release process for Apache SkyWalking GraalVM
Distro,
+from version bumping through Apache voting.
+
+## Prerequisites
+
+The release manager needs the following tools installed locally:
+
+| Tool | Purpose | Install |
+|------|---------|---------|
+| GraalVM JDK 25 | Build macOS native binary | [sdkman](https://sdkman.io/):
`sdk install java 25-graal` |
+| GPG | Sign release artifacts | `brew install gnupg` |
+| git | Version control | `brew install git` |
+| gh | GitHub CLI (download CI artifacts, create releases) | `brew install gh`
|
+| svn | Upload to Apache dist/dev | `brew install svn` |
+| make | Build orchestration | Xcode Command Line Tools |
+| shasum | SHA-512 checksums | Built-in on macOS |
+
+### GPG Key Setup
+
+Your GPG key must use an `@apache.org` email address. The release script
verifies this.
+
+```bash
+# Generate a key (if you don't have one)
+gpg --full-generate-key
+
+# Export and publish to Apache KEYS file
+gpg --armor --export [email protected] >> KEYS
+```
+
+Ensure your public key is in
https://dist.apache.org/repos/dist/release/skywalking/KEYS.
+
+## Release Process Overview
+
+The release is a three-phase pipeline:
+
+```
+pre-release.sh ──push──> GitHub Actions CI ──wait──> release.sh ──> [VOTE]
email
+```
+
+1. **`pre-release.sh`** — Bump version, tag, bump to next SNAPSHOT
+2. **GitHub Actions CI** — Automatically builds Linux native binaries and
creates GitHub Release
+3. **`release.sh`** — Build macOS binary, create source tarball, sign, upload
to SVN, generate vote email
+
+## Phase 1: Pre-Release
+
+Run from the repo root:
+
+```bash
+release/pre-release.sh
+```
+
+The script will:
+
+1. Read the current SNAPSHOT version from `pom.xml` (e.g. `0.1.0-SNAPSHOT`)
+2. Ask you to confirm the release version (default: `0.1.0`)
+3. Ask you to confirm the next development version (default: `0.2.0-SNAPSHOT`,
must end with `-SNAPSHOT`)
+4. Bump all `pom.xml` files to the release version and commit
+5. Create git tag `v0.1.0`
+6. Bump all `pom.xml` files to the next SNAPSHOT version and commit
+
+After the script completes, review and push:
+
+```bash
+git log --oneline -3
+git push origin v0.1.0
+git push origin main
+```
+
+## Phase 2: GitHub Actions CI (Automatic)
+
+Pushing the `v*` tag triggers the CI workflow (`.github/workflows/ci.yml`) in
release mode.
+
+The CI automatically:
+
+1. Builds Linux native binaries on both `amd64` and `arm64` runners
+2. Pushes Docker images to GHCR and Docker Hub with version and `latest` tags
+3. Creates a GitHub Release page with Linux tarballs and SHA-512 checksums
+
+**Wait for CI to complete** before proceeding. Monitor at:
+`https://github.com/apache/skywalking-graalvm-distro/actions`
+
+The GitHub Release page will have:
+- `apache-skywalking-graalvm-distro-{version}-linux-amd64.tar.gz` + `.sha512`
+- `apache-skywalking-graalvm-distro-{version}-linux-arm64.tar.gz` + `.sha512`
+
+## Phase 3: Release Packaging
+
+Once CI completes, run:
+
+```bash
+release/release.sh 0.1.0
+```
+
+The script performs these steps in order:
+
+| Step | What | Notes |
+|------|------|-------|
+| Pre-flight | Verify GPG key, git tag, GitHub Release exist | Aborts early if
anything is missing |
+| Source tarball | Clone from tag, strip `.git`/binaries, create
`*-src.tar.gz` | Clean clone from GitHub, not local tree |
+| macOS build | `make native-image` locally | Requires GraalVM JDK 25 on macOS
|
+| Upload macOS | Push darwin-arm64 tarball to GitHub Release | Via `gh release
upload` |
+| Download Linux | Pull linux-amd64/arm64 tarballs from GitHub Release |
Verifies SHA-512 checksums |
+| GPG sign | Sign all 4 tarballs, generate SHA-512 | Uses `@apache.org` GPG
key |
+| SVN upload | Upload all artifacts to Apache dist/dev | Asks for Apache LDAP
credentials |
+| Vote email | Generate `[VOTE]` email template | Saved to
`release-package/dist/vote-email.txt` |
+
+### Release Artifacts
+
+After completion, `release/release-package/dist/` contains:
+
+```
+apache-skywalking-graalvm-distro-0.1.0-src.tar.gz{,.asc,.sha512}
+apache-skywalking-graalvm-distro-0.1.0-linux-amd64.tar.gz{,.asc,.sha512}
+apache-skywalking-graalvm-distro-0.1.0-linux-arm64.tar.gz{,.asc,.sha512}
+apache-skywalking-graalvm-distro-0.1.0-darwin-arm64.tar.gz{,.asc,.sha512}
+vote-email.txt
+```
+
+These are also uploaded to:
+`https://dist.apache.org/repos/dist/dev/skywalking/graalvm-distro/0.1.0/`
+
+## Phase 4: Vote
+
+Send the generated vote email to `[email protected]`.
+
+The vote remains open for at least 72 hours and requires PMC approval.
+
+## Quick Reference
+
+```bash
+# Full release flow
+release/pre-release.sh # bump version, tag
+git push origin v0.1.0 # trigger CI
+git push origin main # push next SNAPSHOT
+# ... wait for CI ...
+release/release.sh 0.1.0 # package, sign, upload, generate vote email
+# ... send vote email ...
+```