@@ -16,42 +16,123 @@ jobs:
1616 name : Go Tests
1717 secrets : inherit
1818
19- release :
20- name : Release
19+ create_release :
20+ name : Create Release
2121 needs : [tests]
2222 runs-on : ubuntu-latest
23- container : goreleaser/goreleaser-cross
23+ permissions :
24+ contents : write # For creating release
25+ actions : write # For uploading artifact
26+ steps :
27+ - name : Create Release
28+ id : create_release
29+ uses : actions/create-release@v1
30+ env :
31+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
32+ with :
33+ tag_name : ${{ github.ref }}
34+ release_name : Release ${{ github.ref }}
35+ prerelease : true
36+
37+ - name : Output Release URL File
38+ run : echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt
39+
40+ - name : Save Release URL File for publish
41+ uses : actions/upload-artifact@v6
42+ with :
43+ name : release_url
44+ path : release_url.txt
45+ retention-days : 1
46+
47+ publish :
48+ name : Publish
49+ needs : [tests, create_release]
50+ runs-on : ${{ matrix.os }}
51+ strategy :
52+ matrix :
53+ os : [ubuntu-latest, macos-latest, windows-latest]
54+ permissions :
55+ contents : write # For uploading release assets
56+ actions : read # For downloading artifact
2457 steps :
25- - name : Set up Go 1.x
26- uses : actions/setup-go@v6
27- with :
28- go-version : stable
29- id : go
30-
31- - name : Check out code
32- uses : actions/checkout@v6
33- with :
34- fetch-depth : 0
35-
36- - name : Install Fyne
37- run : make setup-webui
38-
39- - name : Install Fyne dependencies
40- run : |
41- apt-get update
42- apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libglib2.0-dev libcairo-gobject2 libpango1.0-dev libatk1.0-dev libcairo2-dev libgdk-pixbuf2.0-dev libxss1 libasound2-dev
43-
44- - uses : goreleaser/goreleaser-action@v7
45- with :
46- distribution : goreleaser
47- version : ' latest'
48- args : release --clean
49- env :
50- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
58+ - name : Set up Go 1.x
59+ uses : actions/setup-go@v6
60+ with :
61+ go-version : stable
62+ id : go
63+
64+ - name : Check out code into the Go module directory
65+ uses : actions/checkout@v6
66+
67+ - name : Load Release URL File from release job
68+ uses : actions/download-artifact@v7
69+ with :
70+ name : release_url
71+ path : release_url
72+
73+ - name : Setup Linux Dependencies
74+ if : runner.os == 'Linux'
75+ run : |
76+ sudo apt-get update
77+ sudo apt-get install -y libgl1-mesa-dev and xorg-dev
78+
79+ - name : Setup Windows Dependencies
80+ if : runner.os == 'Windows'
81+ run : |
82+ choco install -y make mingw
83+
84+ - name : Install Fyne
85+ run : make setup-webui
86+
87+ - name : Distribute
88+ run : make dist
89+
90+ - name : Get Release File Name & Upload URL
91+ id : get_release_info
92+ shell : bash
93+ run : |
94+ value=`cat release_url/release_url.txt`
95+ echo ::set-output name=upload_url::$value
96+ env :
97+ TAG_REF_NAME : ${{ github.ref }}
98+ REPOSITORY_NAME : ${{ github.repository }}
99+
100+ - name : Upload Linux Binary
101+ if : runner.os == 'Linux'
102+ uses : actions/upload-release-asset@v1
103+ env :
104+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
105+ with :
106+ upload_url : ${{ steps.get_release_info.outputs.upload_url }}
107+ asset_path : ./bin/watchman-linux-amd64
108+ asset_name : watchman-linux-amd64
109+ asset_content_type : application/octet-stream
110+
111+ - name : Upload macOS Binary
112+ if : runner.os == 'macOS'
113+ uses : actions/upload-release-asset@v1
114+ env :
115+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
116+ with :
117+ upload_url : ${{ steps.get_release_info.outputs.upload_url }}
118+ asset_path : ./bin/watchman-darwin-arm64
119+ asset_name : watchman-darwin-arm64
120+ asset_content_type : application/octet-stream
121+
122+ - name : Upload Windows Binary
123+ if : runner.os == 'Windows'
124+ uses : actions/upload-release-asset@v1
125+ env :
126+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
127+ with :
128+ upload_url : ${{ steps.get_release_info.outputs.upload_url }}
129+ asset_path : ./bin/watchman.exe
130+ asset_name : watchman.exe
131+ asset_content_type : application/octet-stream
51132
52133 docker-hub :
53134 name : Docker Hub (${{ matrix.platform }})
54- needs : [tests, release ]
135+ needs : [tests, create_release ]
55136 runs-on : ${{ matrix.runner }}
56137 permissions :
57138 contents : read
@@ -129,7 +210,7 @@ jobs:
129210
130211 docker-openshift :
131212 name : Docker Openshift (${{ matrix.platform }})
132- needs : [tests, release ]
213+ needs : [tests, create_release ]
133214 runs-on : ${{ matrix.runner }}
134215 permissions :
135216 contents : read
0 commit comments