Skip to content

Commit f4710ad

Browse files
committed
feat: add automated release workflow with semantic versioning
1 parent b7c72f1 commit f4710ad

2 files changed

Lines changed: 44 additions & 6 deletions

File tree

.github/workflows/release.yml

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ jobs:
1717
steps:
1818
- name: Checkout code
1919
uses: actions/checkout@v3
20+
with:
21+
fetch-depth: 0
2022

2123
- name: Set up C build tools
2224
run: sudo apt-get update && sudo apt-get install -y build-essential
@@ -30,14 +32,33 @@ jobs:
3032
cp bin/NotesCLI release/
3133
tar -czvf NotesCLI.tar.gz -C release NotesCLI
3234
33-
- name: Create GitHub Release
34-
uses: softprops/action-gh-release@v2
35+
- name: Setup Node.js
36+
uses: actions/setup-node@v3
3537
with:
36-
tag_name: v1.0.0 # Replace with dynamic versioning if needed
37-
name: Release v1.0.0
38-
body: |
39-
🛠️ Built automatically using GitHub Actions
38+
node-version: 'lts/*'
39+
40+
- name: Install semantic-release
41+
run: |
42+
npm install -g semantic-release
43+
npm install -g @semantic-release/changelog
44+
npm install -g @semantic-release/git
45+
46+
- name: Create Release
4047
env:
4148
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
49+
run: |
50+
semantic-release --branches main \
51+
--plugins "@semantic-release/commit-analyzer" \
52+
"@semantic-release/release-notes-generator" \
53+
"@semantic-release/changelog" \
54+
"@semantic-release/github" \
55+
"@semantic-release/git"
56+
57+
- name: Upload Release Asset
58+
uses: softprops/action-gh-release@v2
59+
if: steps.semantic.outputs.new_release_published == 'true'
4260
with:
4361
files: NotesCLI.tar.gz
62+
body_path: CHANGELOG.md
63+
env:
64+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.releaserc.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"branches": ["main"],
3+
"plugins": [
4+
"@semantic-release/commit-analyzer",
5+
"@semantic-release/release-notes-generator",
6+
"@semantic-release/changelog",
7+
["@semantic-release/github", {
8+
"assets": [
9+
{"path": "NotesCLI.tar.gz", "label": "NoteCLI Binary"}
10+
]
11+
}],
12+
["@semantic-release/git", {
13+
"assets": ["CHANGELOG.md"],
14+
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
15+
}]
16+
]
17+
}

0 commit comments

Comments
 (0)