release_nightly.yml

  1# Generated from xtask::workflows::release_nightly
  2# Rebuild with `cargo xtask workflows`.
  3name: release_nightly
  4env:
  5  CARGO_TERM_COLOR: always
  6  RUST_BACKTRACE: '1'
  7on:
  8  push:
  9    tags:
 10    - nightly
 11  schedule:
 12  - cron: 0 7 * * *
 13jobs:
 14  check_style:
 15    if: github.repository_owner == 'zed-industries'
 16    runs-on: self-mini-macos
 17    steps:
 18    - name: steps::checkout_repo
 19      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 20      with:
 21        clean: false
 22        fetch-depth: 0
 23    - name: steps::cargo_fmt
 24      run: cargo fmt --all -- --check
 25      shell: bash -euxo pipefail {0}
 26    - name: ./script/clippy
 27      run: ./script/clippy
 28      shell: bash -euxo pipefail {0}
 29    timeout-minutes: 60
 30  run_tests_windows:
 31    if: github.repository_owner == 'zed-industries'
 32    runs-on: self-32vcpu-windows-2022
 33    steps:
 34    - name: steps::checkout_repo
 35      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 36      with:
 37        clean: false
 38    - name: steps::setup_cargo_config
 39      run: |
 40        New-Item -ItemType Directory -Path "./../.cargo" -Force
 41        Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
 42      shell: pwsh
 43    - name: steps::setup_node
 44      uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
 45      with:
 46        node-version: '20'
 47    - name: steps::clippy
 48      run: ./script/clippy.ps1
 49      shell: pwsh
 50    - name: steps::clear_target_dir_if_large
 51      run: ./script/clear-target-dir-if-larger-than.ps1 250
 52      shell: pwsh
 53    - name: steps::cargo_nextest
 54      run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
 55      shell: pwsh
 56    - name: steps::cleanup_cargo_config
 57      if: always()
 58      run: |
 59        Remove-Item -Recurse -Path "./../.cargo" -Force -ErrorAction SilentlyContinue
 60      shell: pwsh
 61    timeout-minutes: 60
 62  bundle_linux_aarch64:
 63    needs:
 64    - check_style
 65    - run_tests_windows
 66    runs-on: namespace-profile-8x32-ubuntu-2004-arm-m4
 67    env:
 68      CARGO_INCREMENTAL: 0
 69      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
 70      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
 71    steps:
 72    - name: steps::checkout_repo
 73      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 74      with:
 75        clean: false
 76    - name: run_bundling::set_release_channel_to_nightly
 77      run: |
 78        set -eu
 79        version=$(git rev-parse --short HEAD)
 80        echo "Publishing version: ${version} on release channel nightly"
 81        echo "nightly" > crates/zed/RELEASE_CHANNEL
 82      shell: bash -euxo pipefail {0}
 83    - name: steps::setup_sentry
 84      uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
 85      with:
 86        token: ${{ secrets.SENTRY_AUTH_TOKEN }}
 87    - name: steps::setup_linux
 88      run: ./script/linux
 89      shell: bash -euxo pipefail {0}
 90    - name: steps::install_mold
 91      run: ./script/install-mold
 92      shell: bash -euxo pipefail {0}
 93    - name: steps::download_wasi_sdk
 94      run: ./script/download-wasi-sdk
 95      shell: bash -euxo pipefail {0}
 96    - name: ./script/bundle-linux
 97      run: ./script/bundle-linux
 98      shell: bash -euxo pipefail {0}
 99    - name: '@actions/upload-artifact zed-linux-aarch64.tar.gz'
100      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
101      with:
102        name: zed-linux-aarch64.tar.gz
103        path: target/release/zed-linux-aarch64.tar.gz
104        if-no-files-found: error
105    - name: '@actions/upload-artifact zed-remote-server-linux-aarch64.gz'
106      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
107      with:
108        name: zed-remote-server-linux-aarch64.gz
109        path: target/zed-remote-server-linux-aarch64.gz
110        if-no-files-found: error
111    timeout-minutes: 60
112  bundle_linux_x86_64:
113    needs:
114    - check_style
115    - run_tests_windows
116    runs-on: namespace-profile-32x64-ubuntu-2004
117    env:
118      CARGO_INCREMENTAL: 0
119      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
120      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
121    steps:
122    - name: steps::checkout_repo
123      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
124      with:
125        clean: false
126    - name: run_bundling::set_release_channel_to_nightly
127      run: |
128        set -eu
129        version=$(git rev-parse --short HEAD)
130        echo "Publishing version: ${version} on release channel nightly"
131        echo "nightly" > crates/zed/RELEASE_CHANNEL
132      shell: bash -euxo pipefail {0}
133    - name: steps::setup_sentry
134      uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
135      with:
136        token: ${{ secrets.SENTRY_AUTH_TOKEN }}
137    - name: steps::setup_linux
138      run: ./script/linux
139      shell: bash -euxo pipefail {0}
140    - name: steps::install_mold
141      run: ./script/install-mold
142      shell: bash -euxo pipefail {0}
143    - name: steps::download_wasi_sdk
144      run: ./script/download-wasi-sdk
145      shell: bash -euxo pipefail {0}
146    - name: ./script/bundle-linux
147      run: ./script/bundle-linux
148      shell: bash -euxo pipefail {0}
149    - name: '@actions/upload-artifact zed-linux-x86_64.tar.gz'
150      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
151      with:
152        name: zed-linux-x86_64.tar.gz
153        path: target/release/zed-linux-x86_64.tar.gz
154        if-no-files-found: error
155    - name: '@actions/upload-artifact zed-remote-server-linux-x86_64.gz'
156      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
157      with:
158        name: zed-remote-server-linux-x86_64.gz
159        path: target/zed-remote-server-linux-x86_64.gz
160        if-no-files-found: error
161    timeout-minutes: 60
162  bundle_mac_aarch64:
163    needs:
164    - check_style
165    - run_tests_windows
166    runs-on: self-mini-macos
167    env:
168      CARGO_INCREMENTAL: 0
169      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
170      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
171      MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
172      MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
173      APPLE_NOTARIZATION_KEY: ${{ secrets.APPLE_NOTARIZATION_KEY }}
174      APPLE_NOTARIZATION_KEY_ID: ${{ secrets.APPLE_NOTARIZATION_KEY_ID }}
175      APPLE_NOTARIZATION_ISSUER_ID: ${{ secrets.APPLE_NOTARIZATION_ISSUER_ID }}
176    steps:
177    - name: steps::checkout_repo
178      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
179      with:
180        clean: false
181    - name: run_bundling::set_release_channel_to_nightly
182      run: |
183        set -eu
184        version=$(git rev-parse --short HEAD)
185        echo "Publishing version: ${version} on release channel nightly"
186        echo "nightly" > crates/zed/RELEASE_CHANNEL
187      shell: bash -euxo pipefail {0}
188    - name: steps::setup_node
189      uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
190      with:
191        node-version: '20'
192    - name: steps::setup_sentry
193      uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
194      with:
195        token: ${{ secrets.SENTRY_AUTH_TOKEN }}
196    - name: steps::clear_target_dir_if_large
197      run: ./script/clear-target-dir-if-larger-than 300
198      shell: bash -euxo pipefail {0}
199    - name: run_bundling::bundle_mac::bundle_mac
200      run: ./script/bundle-mac aarch64-apple-darwin
201      shell: bash -euxo pipefail {0}
202    - name: '@actions/upload-artifact Zed-aarch64.dmg'
203      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
204      with:
205        name: Zed-aarch64.dmg
206        path: target/aarch64-apple-darwin/release/Zed-aarch64.dmg
207        if-no-files-found: error
208    - name: '@actions/upload-artifact zed-remote-server-macos-aarch64.gz'
209      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
210      with:
211        name: zed-remote-server-macos-aarch64.gz
212        path: target/zed-remote-server-macos-aarch64.gz
213        if-no-files-found: error
214    timeout-minutes: 60
215  bundle_mac_x86_64:
216    needs:
217    - check_style
218    - run_tests_windows
219    runs-on: self-mini-macos
220    env:
221      CARGO_INCREMENTAL: 0
222      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
223      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
224      MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
225      MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
226      APPLE_NOTARIZATION_KEY: ${{ secrets.APPLE_NOTARIZATION_KEY }}
227      APPLE_NOTARIZATION_KEY_ID: ${{ secrets.APPLE_NOTARIZATION_KEY_ID }}
228      APPLE_NOTARIZATION_ISSUER_ID: ${{ secrets.APPLE_NOTARIZATION_ISSUER_ID }}
229    steps:
230    - name: steps::checkout_repo
231      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
232      with:
233        clean: false
234    - name: run_bundling::set_release_channel_to_nightly
235      run: |
236        set -eu
237        version=$(git rev-parse --short HEAD)
238        echo "Publishing version: ${version} on release channel nightly"
239        echo "nightly" > crates/zed/RELEASE_CHANNEL
240      shell: bash -euxo pipefail {0}
241    - name: steps::setup_node
242      uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
243      with:
244        node-version: '20'
245    - name: steps::setup_sentry
246      uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
247      with:
248        token: ${{ secrets.SENTRY_AUTH_TOKEN }}
249    - name: steps::clear_target_dir_if_large
250      run: ./script/clear-target-dir-if-larger-than 300
251      shell: bash -euxo pipefail {0}
252    - name: run_bundling::bundle_mac::bundle_mac
253      run: ./script/bundle-mac x86_64-apple-darwin
254      shell: bash -euxo pipefail {0}
255    - name: '@actions/upload-artifact Zed-x86_64.dmg'
256      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
257      with:
258        name: Zed-x86_64.dmg
259        path: target/x86_64-apple-darwin/release/Zed-x86_64.dmg
260        if-no-files-found: error
261    - name: '@actions/upload-artifact zed-remote-server-macos-x86_64.gz'
262      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
263      with:
264        name: zed-remote-server-macos-x86_64.gz
265        path: target/zed-remote-server-macos-x86_64.gz
266        if-no-files-found: error
267    timeout-minutes: 60
268  bundle_windows_aarch64:
269    needs:
270    - check_style
271    - run_tests_windows
272    runs-on: self-32vcpu-windows-2022
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      AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
278      AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
279      AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
280      ACCOUNT_NAME: ${{ vars.AZURE_SIGNING_ACCOUNT_NAME }}
281      CERT_PROFILE_NAME: ${{ vars.AZURE_SIGNING_CERT_PROFILE_NAME }}
282      ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
283      FILE_DIGEST: SHA256
284      TIMESTAMP_DIGEST: SHA256
285      TIMESTAMP_SERVER: http://timestamp.acs.microsoft.com
286    steps:
287    - name: steps::checkout_repo
288      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
289      with:
290        clean: false
291    - name: run_bundling::set_release_channel_to_nightly
292      run: |
293        $ErrorActionPreference = "Stop"
294        $version = git rev-parse --short HEAD
295        Write-Host "Publishing version: $version on release channel nightly"
296        "nightly" | Set-Content -Path "crates/zed/RELEASE_CHANNEL"
297      shell: pwsh
298      working-directory: ${{ env.ZED_WORKSPACE }}
299    - name: steps::setup_sentry
300      uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
301      with:
302        token: ${{ secrets.SENTRY_AUTH_TOKEN }}
303    - name: run_bundling::bundle_windows::bundle_windows
304      run: script/bundle-windows.ps1 -Architecture aarch64
305      shell: pwsh
306      working-directory: ${{ env.ZED_WORKSPACE }}
307    - name: '@actions/upload-artifact Zed-aarch64.exe'
308      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
309      with:
310        name: Zed-aarch64.exe
311        path: target/Zed-aarch64.exe
312        if-no-files-found: error
313    timeout-minutes: 60
314  bundle_windows_x86_64:
315    needs:
316    - check_style
317    - run_tests_windows
318    runs-on: self-32vcpu-windows-2022
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      AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
324      AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
325      AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
326      ACCOUNT_NAME: ${{ vars.AZURE_SIGNING_ACCOUNT_NAME }}
327      CERT_PROFILE_NAME: ${{ vars.AZURE_SIGNING_CERT_PROFILE_NAME }}
328      ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
329      FILE_DIGEST: SHA256
330      TIMESTAMP_DIGEST: SHA256
331      TIMESTAMP_SERVER: http://timestamp.acs.microsoft.com
332    steps:
333    - name: steps::checkout_repo
334      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
335      with:
336        clean: false
337    - name: run_bundling::set_release_channel_to_nightly
338      run: |
339        $ErrorActionPreference = "Stop"
340        $version = git rev-parse --short HEAD
341        Write-Host "Publishing version: $version on release channel nightly"
342        "nightly" | Set-Content -Path "crates/zed/RELEASE_CHANNEL"
343      shell: pwsh
344      working-directory: ${{ env.ZED_WORKSPACE }}
345    - name: steps::setup_sentry
346      uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
347      with:
348        token: ${{ secrets.SENTRY_AUTH_TOKEN }}
349    - name: run_bundling::bundle_windows::bundle_windows
350      run: script/bundle-windows.ps1 -Architecture x86_64
351      shell: pwsh
352      working-directory: ${{ env.ZED_WORKSPACE }}
353    - name: '@actions/upload-artifact Zed-x86_64.exe'
354      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
355      with:
356        name: Zed-x86_64.exe
357        path: target/Zed-x86_64.exe
358        if-no-files-found: error
359    timeout-minutes: 60
360  build_nix_linux_x86_64:
361    needs:
362    - check_style
363    - run_tests_windows
364    if: github.repository_owner == 'zed-industries'
365    runs-on: namespace-profile-32x64-ubuntu-2004
366    env:
367      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
368      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
369      ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
370      GIT_LFS_SKIP_SMUDGE: '1'
371    steps:
372    - name: steps::checkout_repo
373      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
374      with:
375        clean: false
376    - name: nix_build::build_nix::install_nix
377      uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f
378      with:
379        github_access_token: ${{ secrets.GITHUB_TOKEN }}
380    - name: nix_build::build_nix::cachix_action
381      uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
382      with:
383        name: zed
384        authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
385        cachixArgs: -v
386    - name: nix_build::build_nix::build
387      run: nix build .#default -L --accept-flake-config
388      shell: bash -euxo pipefail {0}
389    timeout-minutes: 60
390    continue-on-error: true
391  build_nix_mac_aarch64:
392    needs:
393    - check_style
394    - run_tests_windows
395    if: github.repository_owner == 'zed-industries'
396    runs-on: self-mini-macos
397    env:
398      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
399      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
400      ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
401      GIT_LFS_SKIP_SMUDGE: '1'
402    steps:
403    - name: steps::checkout_repo
404      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
405      with:
406        clean: false
407    - name: nix_build::build_nix::set_path
408      run: |
409        echo "/nix/var/nix/profiles/default/bin" >> "$GITHUB_PATH"
410        echo "/Users/administrator/.nix-profile/bin" >> "$GITHUB_PATH"
411      shell: bash -euxo pipefail {0}
412    - name: nix_build::build_nix::cachix_action
413      uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
414      with:
415        name: zed
416        authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
417        cachixArgs: -v
418    - name: nix_build::build_nix::build
419      run: nix build .#default -L --accept-flake-config
420      shell: bash -euxo pipefail {0}
421    - name: nix_build::build_nix::limit_store
422      run: |-
423        if [ "$(du -sm /nix/store | cut -f1)" -gt 50000 ]; then
424            nix-collect-garbage -d || true
425        fi
426      shell: bash -euxo pipefail {0}
427    timeout-minutes: 60
428    continue-on-error: true
429  update_nightly_tag:
430    needs:
431    - bundle_linux_aarch64
432    - bundle_linux_x86_64
433    - bundle_mac_aarch64
434    - bundle_mac_x86_64
435    - bundle_windows_aarch64
436    - bundle_windows_x86_64
437    if: github.repository_owner == 'zed-industries'
438    runs-on: namespace-profile-4x8-ubuntu-2204
439    steps:
440    - name: steps::checkout_repo
441      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
442      with:
443        clean: false
444        fetch-depth: 0
445    - name: release::download_workflow_artifacts
446      uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
447      with:
448        path: ./artifacts/
449    - name: ls -lR ./artifacts
450      run: ls -lR ./artifacts
451      shell: bash -euxo pipefail {0}
452    - name: release::prep_release_artifacts
453      run: |-
454        mkdir -p release-artifacts/
455
456        mv ./artifacts/Zed-aarch64.dmg/Zed-aarch64.dmg release-artifacts/Zed-aarch64.dmg
457        mv ./artifacts/Zed-x86_64.dmg/Zed-x86_64.dmg release-artifacts/Zed-x86_64.dmg
458        mv ./artifacts/zed-linux-aarch64.tar.gz/zed-linux-aarch64.tar.gz release-artifacts/zed-linux-aarch64.tar.gz
459        mv ./artifacts/zed-linux-x86_64.tar.gz/zed-linux-x86_64.tar.gz release-artifacts/zed-linux-x86_64.tar.gz
460        mv ./artifacts/Zed-x86_64.exe/Zed-x86_64.exe release-artifacts/Zed-x86_64.exe
461        mv ./artifacts/Zed-aarch64.exe/Zed-aarch64.exe release-artifacts/Zed-aarch64.exe
462        mv ./artifacts/zed-remote-server-macos-aarch64.gz/zed-remote-server-macos-aarch64.gz release-artifacts/zed-remote-server-macos-aarch64.gz
463        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
464        mv ./artifacts/zed-remote-server-linux-aarch64.gz/zed-remote-server-linux-aarch64.gz release-artifacts/zed-remote-server-linux-aarch64.gz
465        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
466      shell: bash -euxo pipefail {0}
467    - name: ./script/upload-nightly
468      run: ./script/upload-nightly
469      shell: bash -euxo pipefail {0}
470      env:
471        DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
472        DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
473    - name: release_nightly::update_nightly_tag_job::update_nightly_tag
474      run: |
475        if [ "$(git rev-parse nightly)" = "$(git rev-parse HEAD)" ]; then
476          echo "Nightly tag already points to current commit. Skipping tagging."
477          exit 0
478        fi
479        git config user.name github-actions
480        git config user.email github-actions@github.com
481        git tag -f nightly
482        git push origin nightly --force
483      shell: bash -euxo pipefail {0}
484    - name: release::create_sentry_release
485      uses: getsentry/action-release@526942b68292201ac6bbb99b9a0747d4abee354c
486      with:
487        environment: production
488      env:
489        SENTRY_ORG: zed-dev
490        SENTRY_PROJECT: zed
491        SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
492    timeout-minutes: 60
493  notify_on_failure:
494    needs:
495    - bundle_linux_aarch64
496    - bundle_linux_x86_64
497    - bundle_mac_aarch64
498    - bundle_mac_x86_64
499    - bundle_windows_aarch64
500    - bundle_windows_x86_64
501    if: failure()
502    runs-on: namespace-profile-2x4-ubuntu-2404
503    steps:
504    - name: release::notify_on_failure::notify_slack
505      run: |-
506        curl -X POST -H 'Content-type: application/json'\
507         --data '{"text":"${{ github.workflow }} failed:  ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"}' "$SLACK_WEBHOOK"
508      shell: bash -euxo pipefail {0}
509      env:
510        SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_WORKFLOW_FAILURES }}