release.yml

  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::clear_target_dir_if_large
 33      run: ./script/clear-target-dir-if-larger-than 300
 34      shell: bash -euxo pipefail {0}
 35    - name: steps::cargo_nextest
 36      run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
 37      shell: bash -euxo pipefail {0}
 38    - name: steps::cleanup_cargo_config
 39      if: always()
 40      run: |
 41        rm -rf ./../.cargo
 42      shell: bash -euxo pipefail {0}
 43    timeout-minutes: 60
 44  run_tests_linux:
 45    if: github.repository_owner == 'zed-industries'
 46    runs-on: namespace-profile-16x32-ubuntu-2204
 47    steps:
 48    - name: steps::checkout_repo
 49      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 50      with:
 51        clean: false
 52    - name: steps::setup_cargo_config
 53      run: |
 54        mkdir -p ./../.cargo
 55        cp ./.cargo/ci-config.toml ./../.cargo/config.toml
 56      shell: bash -euxo pipefail {0}
 57    - name: steps::cache_rust_dependencies_namespace
 58      uses: namespacelabs/nscloud-cache-action@v1
 59      with:
 60        cache: rust
 61    - name: steps::setup_linux
 62      run: ./script/linux
 63      shell: bash -euxo pipefail {0}
 64    - name: steps::install_mold
 65      run: ./script/install-mold
 66      shell: bash -euxo pipefail {0}
 67    - name: steps::download_wasi_sdk
 68      run: ./script/download-wasi-sdk
 69      shell: bash -euxo pipefail {0}
 70    - name: steps::setup_node
 71      uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
 72      with:
 73        node-version: '20'
 74    - name: steps::clippy
 75      run: ./script/clippy
 76      shell: bash -euxo pipefail {0}
 77    - name: steps::cargo_install_nextest
 78      uses: taiki-e/install-action@nextest
 79    - name: steps::clear_target_dir_if_large
 80      run: ./script/clear-target-dir-if-larger-than 250
 81      shell: bash -euxo pipefail {0}
 82    - name: steps::cargo_nextest
 83      run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
 84      shell: bash -euxo pipefail {0}
 85    - name: steps::cleanup_cargo_config
 86      if: always()
 87      run: |
 88        rm -rf ./../.cargo
 89      shell: bash -euxo pipefail {0}
 90    timeout-minutes: 60
 91  run_tests_windows:
 92    if: github.repository_owner == 'zed-industries'
 93    runs-on: self-32vcpu-windows-2022
 94    steps:
 95    - name: steps::checkout_repo
 96      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 97      with:
 98        clean: false
 99    - name: steps::setup_cargo_config
100      run: |
101        New-Item -ItemType Directory -Path "./../.cargo" -Force
102        Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
103      shell: pwsh
104    - name: steps::setup_node
105      uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
106      with:
107        node-version: '20'
108    - name: steps::clippy
109      run: ./script/clippy.ps1
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: steps::download_wasi_sdk
202      run: ./script/download-wasi-sdk
203      shell: bash -euxo pipefail {0}
204    - name: ./script/bundle-linux
205      run: ./script/bundle-linux
206      shell: bash -euxo pipefail {0}
207    - name: '@actions/upload-artifact zed-linux-aarch64.tar.gz'
208      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
209      with:
210        name: zed-linux-aarch64.tar.gz
211        path: target/release/zed-linux-aarch64.tar.gz
212        if-no-files-found: error
213    - name: '@actions/upload-artifact zed-remote-server-linux-aarch64.gz'
214      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
215      with:
216        name: zed-remote-server-linux-aarch64.gz
217        path: target/zed-remote-server-linux-aarch64.gz
218        if-no-files-found: error
219    timeout-minutes: 60
220  bundle_linux_x86_64:
221    needs:
222    - run_tests_linux
223    - check_scripts
224    runs-on: namespace-profile-32x64-ubuntu-2004
225    env:
226      CARGO_INCREMENTAL: 0
227      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
228      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
229    steps:
230    - name: steps::checkout_repo
231      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
232      with:
233        clean: false
234    - name: steps::setup_sentry
235      uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
236      with:
237        token: ${{ secrets.SENTRY_AUTH_TOKEN }}
238    - name: steps::setup_linux
239      run: ./script/linux
240      shell: bash -euxo pipefail {0}
241    - name: steps::install_mold
242      run: ./script/install-mold
243      shell: bash -euxo pipefail {0}
244    - name: steps::download_wasi_sdk
245      run: ./script/download-wasi-sdk
246      shell: bash -euxo pipefail {0}
247    - name: ./script/bundle-linux
248      run: ./script/bundle-linux
249      shell: bash -euxo pipefail {0}
250    - name: '@actions/upload-artifact zed-linux-x86_64.tar.gz'
251      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
252      with:
253        name: zed-linux-x86_64.tar.gz
254        path: target/release/zed-linux-x86_64.tar.gz
255        if-no-files-found: error
256    - name: '@actions/upload-artifact zed-remote-server-linux-x86_64.gz'
257      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
258      with:
259        name: zed-remote-server-linux-x86_64.gz
260        path: target/zed-remote-server-linux-x86_64.gz
261        if-no-files-found: error
262    timeout-minutes: 60
263  bundle_mac_aarch64:
264    needs:
265    - run_tests_mac
266    - check_scripts
267    runs-on: self-mini-macos
268    env:
269      CARGO_INCREMENTAL: 0
270      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
271      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
272      MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
273      MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
274      APPLE_NOTARIZATION_KEY: ${{ secrets.APPLE_NOTARIZATION_KEY }}
275      APPLE_NOTARIZATION_KEY_ID: ${{ secrets.APPLE_NOTARIZATION_KEY_ID }}
276      APPLE_NOTARIZATION_ISSUER_ID: ${{ secrets.APPLE_NOTARIZATION_ISSUER_ID }}
277    steps:
278    - name: steps::checkout_repo
279      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
280      with:
281        clean: false
282    - name: steps::setup_node
283      uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
284      with:
285        node-version: '20'
286    - name: steps::setup_sentry
287      uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
288      with:
289        token: ${{ secrets.SENTRY_AUTH_TOKEN }}
290    - name: steps::clear_target_dir_if_large
291      run: ./script/clear-target-dir-if-larger-than 300
292      shell: bash -euxo pipefail {0}
293    - name: run_bundling::bundle_mac::bundle_mac
294      run: ./script/bundle-mac aarch64-apple-darwin
295      shell: bash -euxo pipefail {0}
296    - name: '@actions/upload-artifact Zed-aarch64.dmg'
297      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
298      with:
299        name: Zed-aarch64.dmg
300        path: target/aarch64-apple-darwin/release/Zed-aarch64.dmg
301        if-no-files-found: error
302    - name: '@actions/upload-artifact zed-remote-server-macos-aarch64.gz'
303      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
304      with:
305        name: zed-remote-server-macos-aarch64.gz
306        path: target/zed-remote-server-macos-aarch64.gz
307        if-no-files-found: error
308    timeout-minutes: 60
309  bundle_mac_x86_64:
310    needs:
311    - run_tests_mac
312    - check_scripts
313    runs-on: self-mini-macos
314    env:
315      CARGO_INCREMENTAL: 0
316      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
317      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
318      MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
319      MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
320      APPLE_NOTARIZATION_KEY: ${{ secrets.APPLE_NOTARIZATION_KEY }}
321      APPLE_NOTARIZATION_KEY_ID: ${{ secrets.APPLE_NOTARIZATION_KEY_ID }}
322      APPLE_NOTARIZATION_ISSUER_ID: ${{ secrets.APPLE_NOTARIZATION_ISSUER_ID }}
323    steps:
324    - name: steps::checkout_repo
325      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
326      with:
327        clean: false
328    - name: steps::setup_node
329      uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
330      with:
331        node-version: '20'
332    - name: steps::setup_sentry
333      uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
334      with:
335        token: ${{ secrets.SENTRY_AUTH_TOKEN }}
336    - name: steps::clear_target_dir_if_large
337      run: ./script/clear-target-dir-if-larger-than 300
338      shell: bash -euxo pipefail {0}
339    - name: run_bundling::bundle_mac::bundle_mac
340      run: ./script/bundle-mac x86_64-apple-darwin
341      shell: bash -euxo pipefail {0}
342    - name: '@actions/upload-artifact Zed-x86_64.dmg'
343      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
344      with:
345        name: Zed-x86_64.dmg
346        path: target/x86_64-apple-darwin/release/Zed-x86_64.dmg
347        if-no-files-found: error
348    - name: '@actions/upload-artifact zed-remote-server-macos-x86_64.gz'
349      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
350      with:
351        name: zed-remote-server-macos-x86_64.gz
352        path: target/zed-remote-server-macos-x86_64.gz
353        if-no-files-found: error
354    timeout-minutes: 60
355  bundle_windows_aarch64:
356    needs:
357    - run_tests_windows
358    - check_scripts
359    runs-on: self-32vcpu-windows-2022
360    env:
361      CARGO_INCREMENTAL: 0
362      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
363      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
364      AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
365      AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
366      AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
367      ACCOUNT_NAME: ${{ vars.AZURE_SIGNING_ACCOUNT_NAME }}
368      CERT_PROFILE_NAME: ${{ vars.AZURE_SIGNING_CERT_PROFILE_NAME }}
369      ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
370      FILE_DIGEST: SHA256
371      TIMESTAMP_DIGEST: SHA256
372      TIMESTAMP_SERVER: http://timestamp.acs.microsoft.com
373    steps:
374    - name: steps::checkout_repo
375      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
376      with:
377        clean: false
378    - name: steps::setup_sentry
379      uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
380      with:
381        token: ${{ secrets.SENTRY_AUTH_TOKEN }}
382    - name: run_bundling::bundle_windows::bundle_windows
383      run: script/bundle-windows.ps1 -Architecture aarch64
384      shell: pwsh
385      working-directory: ${{ env.ZED_WORKSPACE }}
386    - name: '@actions/upload-artifact Zed-aarch64.exe'
387      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
388      with:
389        name: Zed-aarch64.exe
390        path: target/Zed-aarch64.exe
391        if-no-files-found: error
392    timeout-minutes: 60
393  bundle_windows_x86_64:
394    needs:
395    - run_tests_windows
396    - check_scripts
397    runs-on: self-32vcpu-windows-2022
398    env:
399      CARGO_INCREMENTAL: 0
400      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
401      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
402      AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
403      AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
404      AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
405      ACCOUNT_NAME: ${{ vars.AZURE_SIGNING_ACCOUNT_NAME }}
406      CERT_PROFILE_NAME: ${{ vars.AZURE_SIGNING_CERT_PROFILE_NAME }}
407      ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
408      FILE_DIGEST: SHA256
409      TIMESTAMP_DIGEST: SHA256
410      TIMESTAMP_SERVER: http://timestamp.acs.microsoft.com
411    steps:
412    - name: steps::checkout_repo
413      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
414      with:
415        clean: false
416    - name: steps::setup_sentry
417      uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
418      with:
419        token: ${{ secrets.SENTRY_AUTH_TOKEN }}
420    - name: run_bundling::bundle_windows::bundle_windows
421      run: script/bundle-windows.ps1 -Architecture x86_64
422      shell: pwsh
423      working-directory: ${{ env.ZED_WORKSPACE }}
424    - name: '@actions/upload-artifact Zed-x86_64.exe'
425      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
426      with:
427        name: Zed-x86_64.exe
428        path: target/Zed-x86_64.exe
429        if-no-files-found: error
430    timeout-minutes: 60
431  upload_release_assets:
432    needs:
433    - create_draft_release
434    - bundle_linux_aarch64
435    - bundle_linux_x86_64
436    - bundle_mac_aarch64
437    - bundle_mac_x86_64
438    - bundle_windows_aarch64
439    - bundle_windows_x86_64
440    runs-on: namespace-profile-4x8-ubuntu-2204
441    steps:
442    - name: release::download_workflow_artifacts
443      uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
444      with:
445        path: ./artifacts/
446    - name: ls -lR ./artifacts
447      run: ls -lR ./artifacts
448      shell: bash -euxo pipefail {0}
449    - name: release::prep_release_artifacts
450      run: |-
451        mkdir -p release-artifacts/
452
453        mv ./artifacts/Zed-aarch64.dmg/Zed-aarch64.dmg release-artifacts/Zed-aarch64.dmg
454        mv ./artifacts/Zed-x86_64.dmg/Zed-x86_64.dmg release-artifacts/Zed-x86_64.dmg
455        mv ./artifacts/zed-linux-aarch64.tar.gz/zed-linux-aarch64.tar.gz release-artifacts/zed-linux-aarch64.tar.gz
456        mv ./artifacts/zed-linux-x86_64.tar.gz/zed-linux-x86_64.tar.gz release-artifacts/zed-linux-x86_64.tar.gz
457        mv ./artifacts/Zed-x86_64.exe/Zed-x86_64.exe release-artifacts/Zed-x86_64.exe
458        mv ./artifacts/Zed-aarch64.exe/Zed-aarch64.exe release-artifacts/Zed-aarch64.exe
459        mv ./artifacts/zed-remote-server-macos-aarch64.gz/zed-remote-server-macos-aarch64.gz release-artifacts/zed-remote-server-macos-aarch64.gz
460        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
461        mv ./artifacts/zed-remote-server-linux-aarch64.gz/zed-remote-server-linux-aarch64.gz release-artifacts/zed-remote-server-linux-aarch64.gz
462        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
463      shell: bash -euxo pipefail {0}
464    - name: gh release upload "$GITHUB_REF_NAME" --repo=zed-industries/zed release-artifacts/*
465      run: gh release upload "$GITHUB_REF_NAME" --repo=zed-industries/zed release-artifacts/*
466      shell: bash -euxo pipefail {0}
467      env:
468        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
469  auto_release_preview:
470    needs:
471    - upload_release_assets
472    if: startsWith(github.ref, 'refs/tags/v') && endsWith(github.ref, '-pre') && !endsWith(github.ref, '.0-pre')
473    runs-on: namespace-profile-2x4-ubuntu-2404
474    steps:
475    - name: gh release edit "$GITHUB_REF_NAME" --repo=zed-industries/zed --draft=false
476      run: gh release edit "$GITHUB_REF_NAME" --repo=zed-industries/zed --draft=false
477      shell: bash -euxo pipefail {0}
478      env:
479        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
480  notify_on_failure:
481    needs:
482    - upload_release_assets
483    - auto_release_preview
484    if: failure()
485    runs-on: namespace-profile-2x4-ubuntu-2404
486    steps:
487    - name: release::notify_on_failure::notify_slack
488      run: |-
489        curl -X POST -H 'Content-type: application/json'\
490         --data '{"text":"${{ github.workflow }} failed:  ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"}' "$SLACK_WEBHOOK"
491      shell: bash -euxo pipefail {0}
492      env:
493        SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_WORKFLOW_FAILURES }}
494concurrency:
495  group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }}
496  cancel-in-progress: true