Skip to content

Commit 110047c

Browse files
committed
ci: 🚀 create release workflow
1 parent 94fb72f commit 110047c

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

.github/workflows/release.yml

+98
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
check:
10+
name: Check commit message
11+
runs-on: ubuntu-latest
12+
outputs:
13+
commit_message: ${{ steps.check_commit_message.outputs.commit_message }}
14+
15+
steps:
16+
- name: Checkout code
17+
uses: actions/checkout@v2
18+
19+
- name: Check commit message
20+
id: check_commit_message
21+
run: |
22+
commit_message=$(git log --format=%B -n 1 ${{ github.sha }})
23+
if [[ $commit_message =~ ^v[0-9]+\.[0-9]+\.[0-9] ]]; then
24+
echo "Commit message matches version format."
25+
echo "commit_message=$commit_message" >> "$GITHUB_OUTPUT"
26+
else
27+
echo "Commit message does not match version format. Skipping release."
28+
fi
29+
30+
build:
31+
name: Build and compress binary
32+
needs: [check]
33+
if: ${{ needs.check.outputs.commit_message != '' }}
34+
runs-on: ubuntu-latest
35+
36+
steps:
37+
- name: Checkout code
38+
uses: actions/checkout@v2
39+
40+
- run: mkdir -p dist
41+
42+
- name: Build binary
43+
run: |
44+
go build -ldflags "-s -w" -o dist/ui-cli_linux_amd64_uncompressed
45+
46+
- name: Compress binary
47+
run: |
48+
upx -f --best --lzma dist/ui-cli_linux_amd64_uncompressed -o dist/ui-cli_linux_amd64
49+
50+
- name: Upload artifact
51+
uses: actions/upload-artifact@master
52+
with:
53+
name: ui-cli
54+
path: dist
55+
56+
release:
57+
name: Create release and upload asset
58+
needs: [check, build]
59+
if: ${{ needs.check.outputs.commit_message != '' }}
60+
runs-on: ubuntu-latest
61+
permissions: write-all
62+
63+
steps:
64+
- name: Download artifact
65+
uses: actions/download-artifact@master
66+
with:
67+
name: ui-cli
68+
path: dist
69+
70+
- name: Create release
71+
id: create_release
72+
uses: actions/create-release@v1
73+
env:
74+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
75+
with:
76+
tag_name: ${{ needs.check.outputs.commit_message }}
77+
release_name: 🎉 Release ${{ needs.check.outputs.commit_message }}
78+
body: |
79+
This release was automatically created by GitHub Actions.
80+
81+
Please refer to [readme](https://github.com/Update-Install/cli/blob/main/README.md) for more details.
82+
draft: false
83+
prerelease: false
84+
85+
- name: Upload release asset
86+
uses: actions/upload-release-asset@v1
87+
env:
88+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
89+
with:
90+
upload_url: ${{ steps.create_release.outputs.upload_url }}
91+
asset_path: dist/ui-cli_linux_amd64
92+
asset_name: ui-cli_linux_amd64
93+
asset_content_type: application/octet-stream
94+
95+
- name: Delete artifact
96+
uses: geekyeggo/delete-artifact@v5
97+
with:
98+
name: ui-cli

0 commit comments

Comments
 (0)