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