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::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