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