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