1# Generated from xtask::workflows::release
2# Rebuild with `cargo xtask workflows`.
3name: release
4env:
5 CARGO_TERM_COLOR: always
6 RUST_BACKTRACE: '1'
7on:
8 push:
9 tags:
10 - v*
11jobs:
12 run_tests_mac:
13 if: github.repository_owner == 'zed-industries'
14 runs-on: self-mini-macos
15 steps:
16 - name: steps::checkout_repo
17 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
18 with:
19 clean: false
20 - name: steps::setup_cargo_config
21 run: |
22 mkdir -p ./../.cargo
23 cp ./.cargo/ci-config.toml ./../.cargo/config.toml
24 shell: bash -euxo pipefail {0}
25 - name: steps::setup_node
26 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
27 with:
28 node-version: '20'
29 - name: steps::clippy
30 run: ./script/clippy
31 shell: bash -euxo pipefail {0}
32 - name: steps::cargo_install_nextest
33 run: cargo install cargo-nextest --locked
34 shell: bash -euxo pipefail {0}
35 - name: steps::clear_target_dir_if_large
36 run: ./script/clear-target-dir-if-larger-than 300
37 shell: bash -euxo pipefail {0}
38 - name: steps::cargo_nextest
39 run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
40 shell: bash -euxo pipefail {0}
41 - name: steps::cleanup_cargo_config
42 if: always()
43 run: |
44 rm -rf ./../.cargo
45 shell: bash -euxo pipefail {0}
46 timeout-minutes: 60
47 run_tests_linux:
48 if: github.repository_owner == 'zed-industries'
49 runs-on: namespace-profile-16x32-ubuntu-2204
50 steps:
51 - name: steps::checkout_repo
52 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
53 with:
54 clean: false
55 - name: steps::setup_cargo_config
56 run: |
57 mkdir -p ./../.cargo
58 cp ./.cargo/ci-config.toml ./../.cargo/config.toml
59 shell: bash -euxo pipefail {0}
60 - name: steps::setup_linux
61 run: ./script/linux
62 shell: bash -euxo pipefail {0}
63 - name: steps::install_mold
64 run: ./script/install-mold
65 shell: bash -euxo pipefail {0}
66 - name: steps::setup_node
67 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
68 with:
69 node-version: '20'
70 - name: steps::clippy
71 run: ./script/clippy
72 shell: bash -euxo pipefail {0}
73 - name: steps::cargo_install_nextest
74 run: cargo install cargo-nextest --locked
75 shell: bash -euxo pipefail {0}
76 - name: steps::clear_target_dir_if_large
77 run: ./script/clear-target-dir-if-larger-than 100
78 shell: bash -euxo pipefail {0}
79 - name: steps::cargo_nextest
80 run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
81 shell: bash -euxo pipefail {0}
82 - name: steps::cleanup_cargo_config
83 if: always()
84 run: |
85 rm -rf ./../.cargo
86 shell: bash -euxo pipefail {0}
87 timeout-minutes: 60
88 run_tests_windows:
89 if: github.repository_owner == 'zed-industries'
90 runs-on: self-32vcpu-windows-2022
91 steps:
92 - name: steps::checkout_repo
93 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
94 with:
95 clean: false
96 - name: steps::setup_cargo_config
97 run: |
98 New-Item -ItemType Directory -Path "./../.cargo" -Force
99 Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
100 shell: pwsh
101 - name: steps::setup_node
102 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
103 with:
104 node-version: '20'
105 - name: steps::clippy
106 run: ./script/clippy.ps1
107 shell: pwsh
108 - name: steps::cargo_install_nextest
109 run: cargo install cargo-nextest --locked
110 shell: pwsh
111 - name: steps::clear_target_dir_if_large
112 run: ./script/clear-target-dir-if-larger-than.ps1 250
113 shell: pwsh
114 - name: steps::cargo_nextest
115 run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
116 shell: pwsh
117 - name: steps::cleanup_cargo_config
118 if: always()
119 run: |
120 Remove-Item -Recurse -Path "./../.cargo" -Force -ErrorAction SilentlyContinue
121 shell: pwsh
122 timeout-minutes: 60
123 check_scripts:
124 if: github.repository_owner == 'zed-industries'
125 runs-on: namespace-profile-2x4-ubuntu-2404
126 steps:
127 - name: steps::checkout_repo
128 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
129 with:
130 clean: false
131 - name: run_tests::check_scripts::run_shellcheck
132 run: ./script/shellcheck-scripts error
133 shell: bash -euxo pipefail {0}
134 - id: get_actionlint
135 name: run_tests::check_scripts::download_actionlint
136 run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
137 shell: bash -euxo pipefail {0}
138 - name: run_tests::check_scripts::run_actionlint
139 run: |
140 ${{ steps.get_actionlint.outputs.executable }} -color
141 shell: bash -euxo pipefail {0}
142 - name: run_tests::check_scripts::check_xtask_workflows
143 run: |
144 cargo xtask workflows
145 if ! git diff --exit-code .github; then
146 echo "Error: .github directory has uncommitted changes after running 'cargo xtask workflows'"
147 echo "Please run 'cargo xtask workflows' locally and commit the changes"
148 exit 1
149 fi
150 shell: bash -euxo pipefail {0}
151 timeout-minutes: 60
152 create_draft_release:
153 if: github.repository_owner == 'zed-industries'
154 runs-on: namespace-profile-2x4-ubuntu-2404
155 steps:
156 - name: steps::checkout_repo
157 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
158 with:
159 clean: false
160 fetch-depth: 25
161 ref: ${{ github.ref }}
162 - name: script/determine-release-channel
163 run: script/determine-release-channel
164 shell: bash -euxo pipefail {0}
165 - name: mkdir -p target/
166 run: mkdir -p target/
167 shell: bash -euxo pipefail {0}
168 - name: release::create_draft_release::generate_release_notes
169 run: node --redirect-warnings=/dev/null ./script/draft-release-notes "$RELEASE_VERSION" "$RELEASE_CHANNEL" > target/release-notes.md
170 shell: bash -euxo pipefail {0}
171 - name: release::create_draft_release::create_release
172 run: script/create-draft-release target/release-notes.md
173 shell: bash -euxo pipefail {0}
174 env:
175 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
176 timeout-minutes: 60
177 bundle_linux_aarch64:
178 needs:
179 - run_tests_linux
180 - check_scripts
181 runs-on: namespace-profile-8x32-ubuntu-2004-arm-m4
182 env:
183 CARGO_INCREMENTAL: 0
184 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
185 ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
186 steps:
187 - name: steps::checkout_repo
188 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
189 with:
190 clean: false
191 - name: steps::setup_sentry
192 uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
193 with:
194 token: ${{ secrets.SENTRY_AUTH_TOKEN }}
195 - name: steps::setup_linux
196 run: ./script/linux
197 shell: bash -euxo pipefail {0}
198 - name: steps::install_mold
199 run: ./script/install-mold
200 shell: bash -euxo pipefail {0}
201 - name: ./script/bundle-linux
202 run: ./script/bundle-linux
203 shell: bash -euxo pipefail {0}
204 - name: '@actions/upload-artifact zed-linux-aarch64.tar.gz'
205 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
206 with:
207 name: zed-linux-aarch64.tar.gz
208 path: target/release/zed-*.tar.gz
209 if-no-files-found: error
210 - name: '@actions/upload-artifact zed-remote-server-linux-aarch64.gz'
211 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
212 with:
213 name: zed-remote-server-linux-aarch64.gz
214 path: target/zed-remote-server-*.gz
215 if-no-files-found: error
216 timeout-minutes: 60
217 bundle_linux_x86_64:
218 needs:
219 - run_tests_linux
220 - check_scripts
221 runs-on: namespace-profile-32x64-ubuntu-2004
222 env:
223 CARGO_INCREMENTAL: 0
224 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
225 ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
226 steps:
227 - name: steps::checkout_repo
228 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
229 with:
230 clean: false
231 - name: steps::setup_sentry
232 uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
233 with:
234 token: ${{ secrets.SENTRY_AUTH_TOKEN }}
235 - name: steps::setup_linux
236 run: ./script/linux
237 shell: bash -euxo pipefail {0}
238 - name: steps::install_mold
239 run: ./script/install-mold
240 shell: bash -euxo pipefail {0}
241 - name: ./script/bundle-linux
242 run: ./script/bundle-linux
243 shell: bash -euxo pipefail {0}
244 - name: '@actions/upload-artifact zed-linux-x86_64.tar.gz'
245 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
246 with:
247 name: zed-linux-x86_64.tar.gz
248 path: target/release/zed-*.tar.gz
249 if-no-files-found: error
250 - name: '@actions/upload-artifact zed-remote-server-linux-x86_64.gz'
251 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
252 with:
253 name: zed-remote-server-linux-x86_64.gz
254 path: target/zed-remote-server-*.gz
255 if-no-files-found: error
256 timeout-minutes: 60
257 bundle_mac_aarch64:
258 needs:
259 - run_tests_mac
260 - check_scripts
261 runs-on: self-mini-macos
262 env:
263 CARGO_INCREMENTAL: 0
264 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
265 ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
266 MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
267 MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
268 APPLE_NOTARIZATION_KEY: ${{ secrets.APPLE_NOTARIZATION_KEY }}
269 APPLE_NOTARIZATION_KEY_ID: ${{ secrets.APPLE_NOTARIZATION_KEY_ID }}
270 APPLE_NOTARIZATION_ISSUER_ID: ${{ secrets.APPLE_NOTARIZATION_ISSUER_ID }}
271 steps:
272 - name: steps::checkout_repo
273 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
274 with:
275 clean: false
276 - name: steps::setup_node
277 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
278 with:
279 node-version: '20'
280 - name: steps::setup_sentry
281 uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
282 with:
283 token: ${{ secrets.SENTRY_AUTH_TOKEN }}
284 - name: steps::clear_target_dir_if_large
285 run: ./script/clear-target-dir-if-larger-than 300
286 shell: bash -euxo pipefail {0}
287 - name: run_bundling::bundle_mac::bundle_mac
288 run: ./script/bundle-mac aarch64-apple-darwin
289 shell: bash -euxo pipefail {0}
290 - name: '@actions/upload-artifact Zed-aarch64.dmg'
291 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
292 with:
293 name: Zed-aarch64.dmg
294 path: target/aarch64-apple-darwin/release/Zed-aarch64.dmg
295 if-no-files-found: error
296 - name: '@actions/upload-artifact zed-remote-server-macos-aarch64.gz'
297 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
298 with:
299 name: zed-remote-server-macos-aarch64.gz
300 path: target/zed-remote-server-macos-aarch64.gz
301 if-no-files-found: error
302 timeout-minutes: 60
303 bundle_mac_x86_64:
304 needs:
305 - run_tests_mac
306 - check_scripts
307 runs-on: self-mini-macos
308 env:
309 CARGO_INCREMENTAL: 0
310 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
311 ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
312 MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
313 MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
314 APPLE_NOTARIZATION_KEY: ${{ secrets.APPLE_NOTARIZATION_KEY }}
315 APPLE_NOTARIZATION_KEY_ID: ${{ secrets.APPLE_NOTARIZATION_KEY_ID }}
316 APPLE_NOTARIZATION_ISSUER_ID: ${{ secrets.APPLE_NOTARIZATION_ISSUER_ID }}
317 steps:
318 - name: steps::checkout_repo
319 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
320 with:
321 clean: false
322 - name: steps::setup_node
323 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
324 with:
325 node-version: '20'
326 - name: steps::setup_sentry
327 uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
328 with:
329 token: ${{ secrets.SENTRY_AUTH_TOKEN }}
330 - name: steps::clear_target_dir_if_large
331 run: ./script/clear-target-dir-if-larger-than 300
332 shell: bash -euxo pipefail {0}
333 - name: run_bundling::bundle_mac::bundle_mac
334 run: ./script/bundle-mac x86_64-apple-darwin
335 shell: bash -euxo pipefail {0}
336 - name: '@actions/upload-artifact Zed-x86_64.dmg'
337 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
338 with:
339 name: Zed-x86_64.dmg
340 path: target/x86_64-apple-darwin/release/Zed-x86_64.dmg
341 if-no-files-found: error
342 - name: '@actions/upload-artifact zed-remote-server-macos-x86_64.gz'
343 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
344 with:
345 name: zed-remote-server-macos-x86_64.gz
346 path: target/zed-remote-server-macos-x86_64.gz
347 if-no-files-found: error
348 timeout-minutes: 60
349 bundle_windows_aarch64:
350 needs:
351 - run_tests_windows
352 - check_scripts
353 runs-on: self-32vcpu-windows-2022
354 env:
355 CARGO_INCREMENTAL: 0
356 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
357 ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
358 AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
359 AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
360 AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
361 ACCOUNT_NAME: ${{ vars.AZURE_SIGNING_ACCOUNT_NAME }}
362 CERT_PROFILE_NAME: ${{ vars.AZURE_SIGNING_CERT_PROFILE_NAME }}
363 ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
364 FILE_DIGEST: SHA256
365 TIMESTAMP_DIGEST: SHA256
366 TIMESTAMP_SERVER: http://timestamp.acs.microsoft.com
367 steps:
368 - name: steps::checkout_repo
369 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
370 with:
371 clean: false
372 - name: steps::setup_sentry
373 uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
374 with:
375 token: ${{ secrets.SENTRY_AUTH_TOKEN }}
376 - name: run_bundling::bundle_windows::bundle_windows
377 run: script/bundle-windows.ps1 -Architecture aarch64
378 shell: pwsh
379 working-directory: ${{ env.ZED_WORKSPACE }}
380 - name: '@actions/upload-artifact Zed-aarch64.exe'
381 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
382 with:
383 name: Zed-aarch64.exe
384 path: ${{ env.SETUP_PATH }}
385 if-no-files-found: error
386 timeout-minutes: 60
387 bundle_windows_x86_64:
388 needs:
389 - run_tests_windows
390 - check_scripts
391 runs-on: self-32vcpu-windows-2022
392 env:
393 CARGO_INCREMENTAL: 0
394 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
395 ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
396 AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
397 AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
398 AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
399 ACCOUNT_NAME: ${{ vars.AZURE_SIGNING_ACCOUNT_NAME }}
400 CERT_PROFILE_NAME: ${{ vars.AZURE_SIGNING_CERT_PROFILE_NAME }}
401 ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
402 FILE_DIGEST: SHA256
403 TIMESTAMP_DIGEST: SHA256
404 TIMESTAMP_SERVER: http://timestamp.acs.microsoft.com
405 steps:
406 - name: steps::checkout_repo
407 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
408 with:
409 clean: false
410 - name: steps::setup_sentry
411 uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
412 with:
413 token: ${{ secrets.SENTRY_AUTH_TOKEN }}
414 - name: run_bundling::bundle_windows::bundle_windows
415 run: script/bundle-windows.ps1 -Architecture x86_64
416 shell: pwsh
417 working-directory: ${{ env.ZED_WORKSPACE }}
418 - name: '@actions/upload-artifact Zed-x86_64.exe'
419 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
420 with:
421 name: Zed-x86_64.exe
422 path: ${{ env.SETUP_PATH }}
423 if-no-files-found: error
424 timeout-minutes: 60
425 upload_release_assets:
426 needs:
427 - create_draft_release
428 - bundle_linux_aarch64
429 - bundle_linux_x86_64
430 - bundle_mac_aarch64
431 - bundle_mac_x86_64
432 - bundle_windows_aarch64
433 - bundle_windows_x86_64
434 runs-on: namespace-profile-4x8-ubuntu-2204
435 steps:
436 - name: release::download_workflow_artifacts
437 uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
438 with:
439 path: ./artifacts/
440 - name: ls -lR ./artifacts
441 run: ls -lR ./artifacts
442 shell: bash -euxo pipefail {0}
443 - name: release::prep_release_artifacts
444 run: |-
445 mkdir -p release-artifacts/
446
447 mv ./artifacts/Zed-aarch64.dmg/Zed-aarch64.dmg release-artifacts/Zed-aarch64.dmg
448 mv ./artifacts/Zed-x86_64.dmg/Zed-x86_64.dmg release-artifacts/Zed-x86_64.dmg
449 mv ./artifacts/zed-linux-aarch64.tar.gz/zed-linux-aarch64.tar.gz release-artifacts/zed-linux-aarch64.tar.gz
450 mv ./artifacts/zed-linux-x86_64.tar.gz/zed-linux-x86_64.tar.gz release-artifacts/zed-linux-x86_64.tar.gz
451 mv ./artifacts/Zed-x86_64.exe/Zed-x86_64.exe release-artifacts/Zed-x86_64.exe
452 mv ./artifacts/Zed-aarch64.exe/Zed-aarch64.exe release-artifacts/Zed-aarch64.exe
453 mv ./artifacts/zed-remote-server-macos-aarch64.gz/zed-remote-server-macos-aarch64.gz release-artifacts/zed-remote-server-macos-aarch64.gz
454 mv ./artifacts/zed-remote-server-macos-x86_64.gz/zed-remote-server-macos-x86_64.gz release-artifacts/zed-remote-server-macos-x86_64.gz
455 mv ./artifacts/zed-remote-server-linux-aarch64.gz/zed-remote-server-linux-aarch64.gz release-artifacts/zed-remote-server-linux-aarch64.gz
456 mv ./artifacts/zed-remote-server-linux-x86_64.gz/zed-remote-server-linux-x86_64.gz release-artifacts/zed-remote-server-linux-x86_64.gz
457 shell: bash -euxo pipefail {0}
458 - name: gh release upload "$GITHUB_REF_NAME" --repo=zed-industries/zed release-artifacts/*
459 run: gh release upload "$GITHUB_REF_NAME" --repo=zed-industries/zed release-artifacts/*
460 shell: bash -euxo pipefail {0}
461 env:
462 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
463 auto_release_preview:
464 needs:
465 - upload_release_assets
466 if: |
467 false
468 && startsWith(github.ref, 'refs/tags/v')
469 && endsWith(github.ref, '-pre') && !endsWith(github.ref, '.0-pre')
470 runs-on: namespace-profile-2x4-ubuntu-2404
471 steps:
472 - name: gh release edit "$GITHUB_REF_NAME" --repo=zed-industries/zed --draft=false
473 run: gh release edit "$GITHUB_REF_NAME" --repo=zed-industries/zed --draft=false
474 shell: bash -euxo pipefail {0}
475 env:
476 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
477 - name: release::create_sentry_release
478 uses: getsentry/action-release@526942b68292201ac6bbb99b9a0747d4abee354c
479 with:
480 environment: production
481 env:
482 SENTRY_ORG: zed-dev
483 SENTRY_PROJECT: zed
484 SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
485concurrency:
486 group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }}
487 cancel-in-progress: true