6
6
push :
7
7
branches :
8
8
- master
9
- - dev
10
9
tags :
11
- - ' v[0-9]+.[0-9]+.[0-9]+'
12
- - ' v[0-9]+.[0-9]+.[0-9]+-**'
10
+ - " v[0-9]+.[0-9]+.[0-9]+"
11
+ - " v[0-9]+.[0-9]+.[0-9]+-**"
13
12
14
13
concurrency :
15
14
group : ${{ github.workflow }}
16
-
17
- env :
18
- REGISTRY : ghcr.io
19
- IMAGE_NAME : ${{ github.repository }}
15
+ cancel-in-progress : false
20
16
21
17
jobs :
22
- docker :
23
- runs-on : ubuntu-latest
24
- permissions :
25
- packages : write
26
- steps :
27
- - uses : actions/checkout@v4
28
- - uses : docker/setup-qemu-action@v3
29
- - uses : docker/setup-buildx-action@v3
30
- - uses : docker/login-action@v3
31
- with :
32
- registry : ghcr.io
33
- username : ${{ github.repository_owner }}
34
- password : ${{ secrets.GITHUB_TOKEN }}
35
- - uses : docker/metadata-action@v4
36
- name : Generate tags
37
- id : meta
38
- with :
39
- images : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
40
- tags : |
41
- type=ref,event=branch
42
- type=sha,prefix=
43
- type=semver,pattern={{version}}
44
- - uses : docker/build-push-action@v4
45
- with :
46
- context : .
47
- file : ./docker/Dockerfile
48
- platforms : linux/amd64,linux/arm64
49
- push : true
50
- tags : ${{ steps.meta.outputs.tags }}
51
- build-linux :
52
- runs-on : ubuntu-latest
53
- strategy :
54
- matrix :
55
- arch : [ amd64, arm64 ]
56
- steps :
57
- - uses : actions/checkout@v4
58
- - uses : actions/setup-go@v5
59
- with :
60
- go-version : ' stable'
61
- - name : Setup
62
- run : |
63
- go generate ./...
64
- if [ ${{ matrix.arch }} == "arm64" ]; then
65
- sudo apt update
66
- sudo apt install -y gcc-aarch64-linux-gnu
67
- echo "CC=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
68
- fi
69
- - name : Build ${{ matrix.arch }}
70
- env :
71
- CGO_ENABLED : 1
72
- GOOS : linux
73
- GOARCH : ${{ matrix.arch }}
74
- run : |
75
- mkdir -p release
76
- ZIP_OUTPUT=release/renterd_${GOOS}_${GOARCH}.zip
77
- go build -trimpath -o bin/ -a -ldflags '-s -w -linkmode external -extldflags "-static"' ./cmd/renterd
78
- cp README.md LICENSE bin/
79
- zip -qj $ZIP_OUTPUT bin/*
80
- - uses : actions/upload-artifact@v4
81
- with :
82
- name : renterd_linux_${{ matrix.arch }}
83
- path : release/*
84
- build-mac :
85
- runs-on : macos-latest
86
- strategy :
87
- matrix :
88
- arch : [ amd64, arm64 ]
89
- steps :
90
- - uses : actions/checkout@v4
91
- - uses : actions/setup-go@v5
92
- with :
93
- go-version : ' stable'
94
- - name : Setup Notarization
95
- env :
96
- APPLE_CERT_ID : ${{ secrets.APPLE_CERT_ID }}
97
- APPLE_API_KEY : ${{ secrets.APPLE_API_KEY }}
98
- APPLE_API_ISSUER : ${{ secrets.APPLE_API_ISSUER }}
99
- APPLE_KEY_B64 : ${{ secrets.APPLE_KEY_B64 }}
100
- APPLE_CERT_B64 : ${{ secrets.APPLE_CERT_B64 }}
101
- APPLE_CERT_PASSWORD : ${{ secrets.APPLE_CERT_PASSWORD }}
102
- APPLE_KEYCHAIN_PASSWORD : ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
103
- run : |
104
- # extract apple cert
105
- APPLE_CERT_PATH=$RUNNER_TEMP/apple_cert.p12
106
- KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
107
- echo -n "$APPLE_CERT_B64" | base64 --decode --output $APPLE_CERT_PATH
108
-
109
- # extract apple key
110
- mkdir -p ~/private_keys
111
- APPLE_API_KEY_PATH=~/private_keys/AuthKey_$APPLE_API_KEY.p8
112
- echo -n "$APPLE_KEY_B64" | base64 --decode --output $APPLE_API_KEY_PATH
113
-
114
- # create temp keychain
115
- security create-keychain -p "$APPLE_KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
116
- security default-keychain -s $KEYCHAIN_PATH
117
- security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
118
- security unlock-keychain -p "$APPLE_KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
119
-
120
- # import keychain
121
- security import $APPLE_CERT_PATH -P $APPLE_CERT_PASSWORD -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
122
- security find-identity -v $KEYCHAIN_PATH -p codesigning
123
- security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $APPLE_KEYCHAIN_PASSWORD $KEYCHAIN_PATH
124
-
125
- # generate
126
- go generate ./...
127
- - name : Build ${{ matrix.arch }}
128
- env :
129
- APPLE_CERT_ID : ${{ secrets.APPLE_CERT_ID }}
130
- APPLE_API_KEY : ${{ secrets.APPLE_API_KEY }}
131
- APPLE_API_ISSUER : ${{ secrets.APPLE_API_ISSUER }}
132
- APPLE_KEY_B64 : ${{ secrets.APPLE_KEY_B64 }}
133
- APPLE_CERT_B64 : ${{ secrets.APPLE_CERT_B64 }}
134
- APPLE_CERT_PASSWORD : ${{ secrets.APPLE_CERT_PASSWORD }}
135
- APPLE_KEYCHAIN_PASSWORD : ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
136
- CGO_ENABLED : 1
137
- GOOS : darwin
138
- GOARCH : ${{ matrix.arch }}
139
- run : |
140
- mkdir -p release
141
- ZIP_OUTPUT=release/renterd${{ env.ZIP_OUTPUT_SUFFIX }}_${GOOS}_${GOARCH}.zip
142
- go build -trimpath -o bin/ -a -ldflags '-s -w' ./cmd/renterd
143
- cp README.md LICENSE bin/
144
- /usr/bin/codesign --deep -f -v --timestamp -o runtime,library -s $APPLE_CERT_ID bin/renterd
145
- ditto -ck bin $ZIP_OUTPUT
146
- xcrun notarytool submit -k ~/private_keys/AuthKey_$APPLE_API_KEY.p8 -d $APPLE_API_KEY -i $APPLE_API_ISSUER --wait --timeout 10m $ZIP_OUTPUT
147
- - uses : actions/upload-artifact@v4
148
- with :
149
- name : renterd_darwin_${{ matrix.arch }}
150
- path : release/*
151
- build-windows :
152
- runs-on : windows-latest
153
- strategy :
154
- matrix :
155
- arch : [ amd64 ]
156
- steps :
157
- - uses : actions/checkout@v4
158
- - uses : actions/setup-go@v5
159
- with :
160
- go-version : ' stable'
161
- - name : Setup
162
- shell : bash
163
- run : |
164
- dotnet tool install --global AzureSignTool
165
- go generate ./...
166
- - name : Build ${{ matrix.arch }}
167
- env :
168
- CGO_ENABLED : 1
169
- GOOS : windows
170
- GOARCH : ${{ matrix.arch }}
171
- shell : bash
172
- run : |
173
- mkdir -p release
174
- ZIP_OUTPUT=release/renterd${{ env.ZIP_OUTPUT_SUFFIX }}_${GOOS}_${GOARCH}.zip
175
- go build -trimpath -o bin/ -a -ldflags '-s -w -linkmode external -extldflags "-static"' ./cmd/renterd
176
- azuresigntool sign -kvu "${{ secrets.AZURE_KEY_VAULT_URI }}" -kvi "${{ secrets.AZURE_CLIENT_ID }}" -kvt "${{ secrets.AZURE_TENANT_ID }}" -kvs "${{ secrets.AZURE_CLIENT_SECRET }}" -kvc ${{ secrets.AZURE_CERT_NAME }} -tr http://timestamp.digicert.com -v bin/renterd.exe
177
- cp README.md LICENSE bin/
178
- 7z a $ZIP_OUTPUT bin/*
179
- - uses : actions/upload-artifact@v4
180
- with :
181
- name : renterd_windows_${{ matrix.arch }}
182
- path : release/*
183
-
184
- combine-release-assets :
185
- runs-on : ubuntu-latest
186
- needs : [ build-linux, build-mac, build-windows ]
187
- steps :
188
- - name : Merge Artifacts
189
- uses : actions/upload-artifact/merge@v4
190
- with :
191
- name : renterd
192
-
193
- dispatch-homebrew : # only runs on full releases
194
- if : startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, '-')
195
- needs : [ build-mac ]
196
- runs-on : ubuntu-latest
197
- steps :
198
- - name : Extract Tag Name
199
- id : get_tag
200
- run : echo "tag_name=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
201
-
202
- - name : Dispatch
203
- uses : peter-evans/repository-dispatch@v3
204
- with :
205
- token : ${{ secrets.PAT_REPOSITORY_DISPATCH }}
206
- repository : siafoundation/homebrew-sia
207
- event-type : release-tagged
208
- client-payload : >
209
- {
210
- "description": "Renterd: The Next-Gen Sia Renter",
211
- "tag": "${{ env.tag_name }}",
212
- "project": "renterd",
213
- "workflow_id": "${{ github.run_id }}"
214
- }
215
- dispatch-linux : # run on full releases, release candidates, and master branch
216
- if : startsWith(github.ref, 'refs/tags/v') || endsWith(github.ref, 'master')
217
- needs : [ build-linux ]
218
- runs-on : ubuntu-latest
219
- steps :
220
- - name : Build Dispatch Payload
221
- id : get_payload
222
- uses : actions/github-script@v7
223
- with :
224
- script : |
225
- const isRelease = context.ref.startsWith('refs/tags/v'),
226
- isBeta = isRelease && context.ref.includes('-beta'),
227
- tag = isRelease ? context.ref.replace('refs/tags/', '') : 'master';
228
-
229
- let component = 'nightly';
230
- if (isBeta) {
231
- component = 'beta';
232
- } else if (isRelease) {
233
- component = 'main';
234
- }
235
-
236
- return {
237
- description: "renterd: The Next-Gen Sia Renter",
238
- tag: tag,
239
- project: "renterd",
240
- workflow_id: context.runId,
241
- component: component
242
- };
243
-
244
- - name : Dispatch
245
- uses : peter-evans/repository-dispatch@v3
246
- with :
247
- token : ${{ secrets.PAT_REPOSITORY_DISPATCH }}
248
- repository : siafoundation/linux
249
- event-type : release-tagged
250
- client-payload : ${{ steps.get_payload.outputs.result }}
18
+ publish :
19
+ uses : SiaFoundation/workflows/.github/workflows/go-publish.yml@master
20
+ secrets : inherit
21
+ with :
22
+ linux-build-args : -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w -linkmode external -extldflags "-static"'
23
+ windows-build-args : -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w -linkmode external -extldflags "-static"'
24
+ macos-build-args : -tags='timetzdata netgo' -trimpath -a -ldflags '-s -w'
25
+ cgo-enabled : 1
26
+ project : renterd
27
+ project-desc : " renterd: The Next-Gen Sia Renter"
28
+ version-tag : ${{ github.ref_name }}
0 commit comments