Skip to content

Commit 80070f7

Browse files
committed
ci: add automatic versioning with release-please
- Auto-generates releases from conventional commits - Creates GitHub releases with binaries and Docker images - Maintains CHANGELOG.md automatically - Semantic versioning (feat = minor, fix = patch)
1 parent 44e1dce commit 80070f7

3 files changed

Lines changed: 116 additions & 0 deletions

File tree

.github/workflows/release.yml

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
branches: [main]
6+
7+
permissions:
8+
contents: write
9+
pull-requests: write
10+
11+
jobs:
12+
release-please:
13+
name: Release Please
14+
runs-on: platform-runner
15+
outputs:
16+
release_created: ${{ steps.release.outputs.release_created }}
17+
tag_name: ${{ steps.release.outputs.tag_name }}
18+
version: ${{ steps.release.outputs.version }}
19+
steps:
20+
- uses: googleapis/release-please-action@v4
21+
id: release
22+
with:
23+
release-type: rust
24+
package-name: platform
25+
26+
build-release:
27+
name: Build Release Artifacts
28+
runs-on: platform-runner
29+
needs: release-please
30+
if: ${{ needs.release-please.outputs.release_created }}
31+
steps:
32+
- uses: actions/checkout@v4
33+
- uses: dtolnay/rust-toolchain@stable
34+
- uses: Swatinem/rust-cache@v2
35+
with:
36+
shared-key: "platform-ci"
37+
38+
- name: Build release binaries
39+
run: cargo build --release
40+
41+
- name: Package binaries
42+
run: |
43+
mkdir -p release
44+
cp target/release/validator-node release/ 2>/dev/null || true
45+
cp target/release/platform-server release/ 2>/dev/null || true
46+
cp target/release/csudo release/ 2>/dev/null || true
47+
tar -czvf platform-${{ needs.release-please.outputs.version }}-linux-x86_64.tar.gz -C release .
48+
49+
- name: Upload release artifacts
50+
uses: softprops/action-gh-release@v2
51+
with:
52+
tag_name: ${{ needs.release-please.outputs.tag_name }}
53+
files: |
54+
platform-${{ needs.release-please.outputs.version }}-linux-x86_64.tar.gz
55+
56+
docker-release:
57+
name: Docker Release
58+
runs-on: platform-runner
59+
needs: release-please
60+
if: ${{ needs.release-please.outputs.release_created }}
61+
permissions:
62+
contents: read
63+
packages: write
64+
steps:
65+
- uses: actions/checkout@v4
66+
- uses: docker/setup-buildx-action@v3
67+
68+
- uses: docker/login-action@v3
69+
with:
70+
registry: ghcr.io
71+
username: ${{ github.actor }}
72+
password: ${{ secrets.GITHUB_TOKEN }}
73+
74+
- id: meta
75+
uses: docker/metadata-action@v5
76+
with:
77+
images: ghcr.io/${{ github.repository }}
78+
tags: |
79+
type=semver,pattern={{version}},value=${{ needs.release-please.outputs.version }}
80+
type=semver,pattern={{major}}.{{minor}},value=${{ needs.release-please.outputs.version }}
81+
type=semver,pattern={{major}},value=${{ needs.release-please.outputs.version }}
82+
type=raw,value=latest
83+
84+
- uses: docker/build-push-action@v6
85+
with:
86+
context: .
87+
push: true
88+
tags: ${{ steps.meta.outputs.tags }}
89+
labels: ${{ steps.meta.outputs.labels }}
90+
cache-from: type=gha
91+
cache-to: type=gha,mode=max

.release-please-manifest.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
".": "0.1.0"
3+
}

release-please-config.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"$schema": "https://github.com/googleapis/release-please/main/schemas/config.json",
3+
"release-type": "rust",
4+
"packages": {
5+
".": {
6+
"package-name": "platform",
7+
"changelog-path": "CHANGELOG.md",
8+
"bump-minor-pre-major": true,
9+
"bump-patch-for-minor-pre-major": true
10+
}
11+
},
12+
"changelog-sections": [
13+
{"type": "feat", "section": "Features"},
14+
{"type": "fix", "section": "Bug Fixes"},
15+
{"type": "perf", "section": "Performance Improvements"},
16+
{"type": "refactor", "section": "Code Refactoring"},
17+
{"type": "docs", "section": "Documentation"},
18+
{"type": "chore", "section": "Miscellaneous"},
19+
{"type": "ci", "section": "CI/CD"},
20+
{"type": "test", "section": "Tests"}
21+
]
22+
}

0 commit comments

Comments
 (0)