Skip to repository content1030 lines · 44.3 KB · yaml
tenant.openagents/omega
No repository description is available.
OpenAgents Git authority 2026-07-28T01:48:45.503Z Public web read
NIP-34 coordinate
30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omegaMaintainersHidden in public view
References2 branches · 1 tag
Read-only clone
git clone https://openagents.com/git/tenant.openagents/omega.gitBrowse files
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*
11permissions:
12 contents: read
13jobs:
14 run_tests_mac:
15 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
16 runs-on: namespace-profile-mac-large
17 steps:
18 - name: steps::checkout_repo
19 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
20 with:
21 clean: false
22 - name: steps::setup_cargo_config
23 run: |
24 mkdir -p ./../.cargo
25 cp ./.cargo/ci-config.toml ./../.cargo/config.toml
26 - name: steps::cache_rust_dependencies_namespace
27 uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
28 with:
29 cache: rust
30 path: ~/.rustup
31 - name: steps::setup_node
32 uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
33 with:
34 node-version: '24'
35 check-latest: true
36 package-manager-cache: false
37 - name: steps::cargo_install_nextest
38 uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9
39 with:
40 tool: nextest
41 - name: steps::clear_target_dir_if_large
42 run: ./script/clear-target-dir-if-larger-than 350 200
43 - name: steps::setup_sccache
44 run: ./script/setup-sccache
45 env:
46 R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
47 R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
48 R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
49 SCCACHE_BUCKET: sccache-zed
50 - name: steps::cargo_nextest
51 run: cargo nextest run --workspace --no-fail-fast --no-tests=warn
52 - name: steps::show_sccache_stats
53 run: sccache --show-stats || true
54 - name: steps::cleanup_cargo_config
55 if: always()
56 run: |
57 rm -rf ./../.cargo
58 timeout-minutes: 60
59 run_tests_linux:
60 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
61 runs-on: namespace-profile-16x32-ubuntu-2204
62 env:
63 CC: clang
64 CXX: clang++
65 steps:
66 - name: steps::checkout_repo
67 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
68 with:
69 clean: false
70 - name: steps::setup_cargo_config
71 run: |
72 mkdir -p ./../.cargo
73 cp ./.cargo/ci-config.toml ./../.cargo/config.toml
74 - name: steps::cache_rust_dependencies_namespace
75 uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
76 with:
77 cache: rust
78 path: ~/.rustup
79 - name: steps::setup_linux
80 run: ./script/linux
81 - name: steps::download_wasi_sdk
82 run: ./script/download-wasi-sdk
83 - name: steps::setup_node
84 uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
85 with:
86 node-version: '24'
87 check-latest: true
88 package-manager-cache: false
89 - name: steps::cargo_install_nextest
90 uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9
91 with:
92 tool: nextest
93 - name: steps::clear_target_dir_if_large
94 run: ./script/clear-target-dir-if-larger-than 350 200
95 - name: steps::setup_sccache
96 run: ./script/setup-sccache
97 env:
98 R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
99 R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
100 R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
101 SCCACHE_BUCKET: sccache-zed
102 - name: steps::cargo_nextest
103 run: cargo nextest run --workspace --no-fail-fast --no-tests=warn
104 - name: steps::show_sccache_stats
105 run: sccache --show-stats || true
106 - name: steps::cleanup_cargo_config
107 if: always()
108 run: |
109 rm -rf ./../.cargo
110 timeout-minutes: 60
111 services:
112 postgres:
113 image: postgres:15@sha256:1b92e7a80c021647bf70f5d3eb66066a998e4f5cf43c07bb9dc9f729782cf88e
114 env:
115 POSTGRES_HOST_AUTH_METHOD: trust
116 ports:
117 - 5432:5432
118 options: --health-cmd pg_isready --health-interval 500ms --health-timeout 5s --health-retries 10
119 run_tests_windows:
120 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
121 runs-on: self-32vcpu-windows-2022
122 steps:
123 - name: steps::checkout_repo
124 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
125 with:
126 clean: false
127 - name: steps::setup_cargo_config
128 run: |
129 New-Item -ItemType Directory -Path "./../.cargo" -Force
130 Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
131 shell: pwsh
132 - name: steps::setup_node
133 uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
134 with:
135 node-version: '24'
136 check-latest: true
137 package-manager-cache: false
138 - name: steps::clear_target_dir_if_large
139 run: ./script/clear-target-dir-if-larger-than.ps1 350 200
140 shell: pwsh
141 - name: steps::setup_sccache
142 run: ./script/setup-sccache.ps1
143 shell: pwsh
144 env:
145 R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
146 R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
147 R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
148 SCCACHE_BUCKET: sccache-zed
149 - name: steps::cargo_nextest
150 run: cargo nextest run --workspace --no-fail-fast --no-tests=warn
151 shell: pwsh
152 - name: steps::show_sccache_stats
153 run: if ($env:RUSTC_WRAPPER) { & $env:RUSTC_WRAPPER --show-stats }; exit 0
154 shell: pwsh
155 - name: steps::cleanup_cargo_config
156 if: always()
157 run: |
158 Remove-Item -Recurse -Path "./../.cargo" -Force -ErrorAction SilentlyContinue
159 shell: pwsh
160 timeout-minutes: 60
161 clippy_mac:
162 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
163 runs-on: namespace-profile-mac-large
164 steps:
165 - name: steps::checkout_repo
166 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
167 with:
168 clean: false
169 - name: steps::setup_cargo_config
170 run: |
171 mkdir -p ./../.cargo
172 cp ./.cargo/ci-config.toml ./../.cargo/config.toml
173 - name: steps::cache_rust_dependencies_namespace
174 uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
175 with:
176 cache: rust
177 path: ~/.rustup
178 - name: steps::setup_sccache
179 run: ./script/setup-sccache
180 env:
181 R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
182 R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
183 R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
184 SCCACHE_BUCKET: sccache-zed
185 - name: steps::clippy
186 run: ./script/clippy
187 - name: steps::show_sccache_stats
188 run: sccache --show-stats || true
189 timeout-minutes: 60
190 clippy_linux:
191 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
192 runs-on: namespace-profile-16x32-ubuntu-2204
193 env:
194 CC: clang
195 CXX: clang++
196 steps:
197 - name: steps::checkout_repo
198 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
199 with:
200 clean: false
201 - name: steps::setup_cargo_config
202 run: |
203 mkdir -p ./../.cargo
204 cp ./.cargo/ci-config.toml ./../.cargo/config.toml
205 - name: steps::cache_rust_dependencies_namespace
206 uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
207 with:
208 cache: rust
209 path: ~/.rustup
210 - name: steps::setup_linux
211 run: ./script/linux
212 - name: steps::download_wasi_sdk
213 run: ./script/download-wasi-sdk
214 - name: steps::setup_sccache
215 run: ./script/setup-sccache
216 env:
217 R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
218 R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
219 R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
220 SCCACHE_BUCKET: sccache-zed
221 - name: steps::clippy
222 run: ./script/clippy
223 - name: steps::show_sccache_stats
224 run: sccache --show-stats || true
225 timeout-minutes: 60
226 clippy_windows:
227 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
228 runs-on: self-32vcpu-windows-2022
229 steps:
230 - name: steps::checkout_repo
231 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
232 with:
233 clean: false
234 - name: steps::setup_cargo_config
235 run: |
236 New-Item -ItemType Directory -Path "./../.cargo" -Force
237 Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
238 shell: pwsh
239 - name: steps::setup_sccache
240 run: ./script/setup-sccache.ps1
241 shell: pwsh
242 env:
243 R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
244 R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
245 R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
246 SCCACHE_BUCKET: sccache-zed
247 - name: steps::clippy
248 run: ./script/clippy.ps1
249 shell: pwsh
250 - name: steps::show_sccache_stats
251 run: if ($env:RUSTC_WRAPPER) { & $env:RUSTC_WRAPPER --show-stats }; exit 0
252 shell: pwsh
253 timeout-minutes: 60
254 check_scripts:
255 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
256 runs-on: namespace-profile-8x16-ubuntu-2204
257 steps:
258 - name: steps::checkout_repo
259 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
260 with:
261 clean: false
262 - name: run_tests::check_scripts::run_shellcheck
263 run: ./script/shellcheck-scripts error
264 - name: steps::cache_rust_dependencies_namespace
265 uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
266 with:
267 cache: rust
268 path: ~/.rustup
269 - name: run_tests::check_scripts::check_xtask_workflows
270 run: |
271 cargo xtask workflows
272 if ! git diff --exit-code .github; then
273 echo "Error: .github directory has uncommitted changes after running 'cargo xtask workflows'"
274 echo "Please run 'cargo xtask workflows' locally and commit the changes"
275 exit 1
276 fi
277 - id: get_actionlint
278 name: run_tests::check_scripts::download_actionlint
279 run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
280 - name: run_tests::check_scripts::run_actionlint
281 run: '"$ACTIONLINT_BIN" -color'
282 env:
283 ACTIONLINT_BIN: ${{ steps.get_actionlint.outputs.executable }}
284 - name: run_tests::check_scripts::run_zizmor
285 uses: zizmorcore/zizmor-action@6599ee8b7a49aef6a770f63d261d214911a7ce02
286 with:
287 advanced-security: false
288 min-severity: high
289 version: latest
290 timeout-minutes: 60
291 create_draft_release:
292 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
293 runs-on: namespace-profile-2x4-ubuntu-2404
294 steps:
295 - id: generate-token
296 name: steps::authenticate_as_zippy
297 uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859
298 with:
299 app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
300 private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
301 owner: ${{ github.repository_owner }}
302 repositories: ${{ github.event.repository.name }}
303 permission-contents: write
304 - name: steps::checkout_repo
305 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
306 with:
307 clean: false
308 fetch-depth: 25
309 ref: ${{ github.ref }}
310 - name: script/determine-release-channel
311 run: script/determine-release-channel
312 - name: mkdir -p target/
313 run: mkdir -p target/
314 - name: release::create_draft_release::generate_release_notes
315 run: node --redirect-warnings=/dev/null ./script/draft-release-notes "$RELEASE_VERSION" "$RELEASE_CHANNEL" > target/release-notes.md
316 - name: release::create_draft_release::create_release
317 run: script/create-draft-release target/release-notes.md
318 env:
319 GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
320 timeout-minutes: 60
321 compliance_check:
322 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
323 runs-on: namespace-profile-2x4-ubuntu-2404
324 steps:
325 - name: steps::checkout_repo
326 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
327 with:
328 clean: false
329 fetch-depth: 0
330 ref: ${{ github.ref }}
331 - name: steps::cache_rust_dependencies_namespace
332 uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
333 with:
334 cache: rust
335 path: ~/.rustup
336 - id: run-compliance-check
337 name: release::add_compliance_steps::run_compliance_check
338 run: |
339 cargo xtask compliance version "$GITHUB_REF_NAME" --report-path "compliance-report-${GITHUB_REF_NAME}.md"
340 env:
341 GITHUB_APP_ID: ${{ secrets.ZED_ZIPPY_APP_ID }}
342 GITHUB_APP_KEY: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
343 continue-on-error: true
344 - name: run_bundling::upload_artifact
345 if: always()
346 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
347 with:
348 name: compliance-report-${{ github.ref_name }}.md
349 path: compliance-report-${{ github.ref_name }}.md
350 if-no-files-found: error
351 - name: send_compliance_slack_notification
352 if: ${{ always() }}
353 run: |
354 if [ "$COMPLIANCE_OUTCOME" == "success" ]; then
355 STATUS="✅ Compliance check passed for $COMPLIANCE_TAG"
356 MESSAGE=$(printf "%s\n\nReport: %s" "$STATUS" "$ARTIFACT_URL")
357 else
358 STATUS="❌ Preliminary compliance check failed (but this can still be fixed while the builds are running!) for $COMPLIANCE_TAG"
359 MESSAGE=$(printf "%s\n\nReport: %s\nPRs needing review: %s" "$STATUS" "$ARTIFACT_URL" "https://github.com/zed-industries/zed/pulls?q=is%3Apr+is%3Aclosed+label%3A%22PR+state%3Aneeds+review%22")
360 fi
361
362 curl -X POST -H 'Content-type: application/json' \
363 --data "$(jq -n --arg text "$MESSAGE" '{"text": $text}')" \
364 "$SLACK_WEBHOOK"
365 env:
366 SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_WORKFLOW_FAILURES }}
367 COMPLIANCE_OUTCOME: ${{ steps.run-compliance-check.outcome }}
368 COMPLIANCE_TAG: ${{ github.ref_name }}
369 ARTIFACT_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts
370 outputs:
371 outcome: ${{ steps.run-compliance-check.outputs.outcome }}
372 timeout-minutes: 60
373 bundle_linux_aarch64:
374 needs:
375 - run_tests_linux
376 - clippy_linux
377 - check_scripts
378 runs-on: namespace-profile-8x32-ubuntu-2004-arm-m4
379 env:
380 CARGO_INCREMENTAL: 0
381 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
382 ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
383 CC: clang-18
384 CXX: clang++-18
385 steps:
386 - name: steps::checkout_repo
387 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
388 with:
389 clean: false
390 - name: steps::cache_rust_dependencies_namespace
391 uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
392 with:
393 cache: rust
394 path: ~/.rustup
395 - name: steps::setup_sentry
396 uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
397 with:
398 token: ${{ secrets.SENTRY_AUTH_TOKEN }}
399 - name: steps::setup_linux
400 run: ./script/linux
401 - name: steps::download_wasi_sdk
402 run: ./script/download-wasi-sdk
403 - name: ./script/bundle-linux
404 run: ./script/bundle-linux
405 - name: run_bundling::upload_artifact
406 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
407 with:
408 name: zed-linux-aarch64.tar.gz
409 path: target/release/zed-linux-aarch64.tar.gz
410 if-no-files-found: error
411 - name: run_bundling::upload_artifact
412 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
413 with:
414 name: zed-remote-server-linux-aarch64.gz
415 path: target/zed-remote-server-linux-aarch64.gz
416 if-no-files-found: error
417 timeout-minutes: 60
418 bundle_linux_x86_64:
419 needs:
420 - run_tests_linux
421 - clippy_linux
422 - check_scripts
423 runs-on: namespace-profile-32x64-ubuntu-2004
424 env:
425 CARGO_INCREMENTAL: 0
426 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
427 ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
428 CC: clang-18
429 CXX: clang++-18
430 steps:
431 - name: steps::checkout_repo
432 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
433 with:
434 clean: false
435 - name: steps::cache_rust_dependencies_namespace
436 uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
437 with:
438 cache: rust
439 path: ~/.rustup
440 - name: steps::setup_sentry
441 uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
442 with:
443 token: ${{ secrets.SENTRY_AUTH_TOKEN }}
444 - name: steps::setup_linux
445 run: ./script/linux
446 - name: steps::download_wasi_sdk
447 run: ./script/download-wasi-sdk
448 - name: ./script/bundle-linux
449 run: ./script/bundle-linux
450 - name: run_bundling::upload_artifact
451 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
452 with:
453 name: zed-linux-x86_64.tar.gz
454 path: target/release/zed-linux-x86_64.tar.gz
455 if-no-files-found: error
456 - name: run_bundling::upload_artifact
457 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
458 with:
459 name: zed-remote-server-linux-x86_64.gz
460 path: target/zed-remote-server-linux-x86_64.gz
461 if-no-files-found: error
462 timeout-minutes: 60
463 build_static_bwrap_linux_aarch64:
464 needs:
465 - run_tests_linux
466 - clippy_linux
467 - check_scripts
468 runs-on: namespace-profile-8x32-ubuntu-2004-arm-m4
469 steps:
470 - name: steps::cache_nix_dependencies_namespace
471 uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
472 with:
473 cache: nix
474 - name: run_bundling::build_static_bwrap
475 uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f
476 with:
477 github_access_token: ${{ secrets.GITHUB_TOKEN }}
478 - name: run_bundling::build_static_bwrap
479 uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
480 with:
481 name: zed
482 authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
483 cachixArgs: -v
484 - name: run_bundling::build_static_bwrap
485 run: nix build nixpkgs#pkgsStatic.bubblewrap -L
486 - name: run_bundling::build_static_bwrap
487 run: |
488 cp result/bin/bwrap bwrap-linux-aarch64
489 chmod 755 bwrap-linux-aarch64
490 gzip -f --stdout --best bwrap-linux-aarch64 > bwrap-linux-aarch64.gz
491 - name: run_bundling::upload_artifact
492 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
493 with:
494 name: bwrap-linux-aarch64.gz
495 path: bwrap-linux-aarch64.gz
496 if-no-files-found: error
497 timeout-minutes: 60
498 build_static_bwrap_linux_x86_64:
499 needs:
500 - run_tests_linux
501 - clippy_linux
502 - check_scripts
503 runs-on: namespace-profile-32x64-ubuntu-2004
504 steps:
505 - name: steps::cache_nix_dependencies_namespace
506 uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
507 with:
508 cache: nix
509 - name: run_bundling::build_static_bwrap
510 uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f
511 with:
512 github_access_token: ${{ secrets.GITHUB_TOKEN }}
513 - name: run_bundling::build_static_bwrap
514 uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
515 with:
516 name: zed
517 authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
518 cachixArgs: -v
519 - name: run_bundling::build_static_bwrap
520 run: nix build nixpkgs#pkgsStatic.bubblewrap -L
521 - name: run_bundling::build_static_bwrap
522 run: |
523 cp result/bin/bwrap bwrap-linux-x86_64
524 chmod 755 bwrap-linux-x86_64
525 gzip -f --stdout --best bwrap-linux-x86_64 > bwrap-linux-x86_64.gz
526 - name: run_bundling::upload_artifact
527 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
528 with:
529 name: bwrap-linux-x86_64.gz
530 path: bwrap-linux-x86_64.gz
531 if-no-files-found: error
532 timeout-minutes: 60
533 bundle_mac_aarch64:
534 needs:
535 - run_tests_mac
536 - clippy_mac
537 - check_scripts
538 runs-on: namespace-profile-mac-large
539 env:
540 CARGO_INCREMENTAL: 0
541 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
542 ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
543 MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
544 MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
545 APPLE_NOTARIZATION_KEY: ${{ secrets.APPLE_NOTARIZATION_KEY }}
546 APPLE_NOTARIZATION_KEY_ID: ${{ secrets.APPLE_NOTARIZATION_KEY_ID }}
547 APPLE_NOTARIZATION_ISSUER_ID: ${{ secrets.APPLE_NOTARIZATION_ISSUER_ID }}
548 steps:
549 - name: steps::checkout_repo
550 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
551 with:
552 clean: false
553 - name: steps::cache_rust_dependencies_namespace
554 uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
555 with:
556 cache: rust
557 path: ~/.rustup
558 - name: steps::setup_node
559 uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
560 with:
561 node-version: '24'
562 check-latest: true
563 package-manager-cache: false
564 - name: steps::setup_sentry
565 uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
566 with:
567 token: ${{ secrets.SENTRY_AUTH_TOKEN }}
568 - name: steps::clear_target_dir_if_large
569 run: ./script/clear-target-dir-if-larger-than 350 200
570 - name: run_bundling::bundle_mac::bundle_mac
571 run: ./script/bundle-mac aarch64-apple-darwin
572 - name: run_bundling::upload_artifact
573 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
574 with:
575 name: Zed-aarch64.dmg
576 path: target/aarch64-apple-darwin/release/Zed-aarch64.dmg
577 if-no-files-found: error
578 - name: run_bundling::upload_artifact
579 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
580 with:
581 name: zed-remote-server-macos-aarch64.gz
582 path: target/zed-remote-server-macos-aarch64.gz
583 if-no-files-found: error
584 timeout-minutes: 60
585 bundle_mac_x86_64:
586 needs:
587 - run_tests_mac
588 - clippy_mac
589 - check_scripts
590 runs-on: namespace-profile-mac-large
591 env:
592 CARGO_INCREMENTAL: 0
593 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
594 ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
595 MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
596 MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
597 APPLE_NOTARIZATION_KEY: ${{ secrets.APPLE_NOTARIZATION_KEY }}
598 APPLE_NOTARIZATION_KEY_ID: ${{ secrets.APPLE_NOTARIZATION_KEY_ID }}
599 APPLE_NOTARIZATION_ISSUER_ID: ${{ secrets.APPLE_NOTARIZATION_ISSUER_ID }}
600 steps:
601 - name: steps::checkout_repo
602 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
603 with:
604 clean: false
605 - name: steps::cache_rust_dependencies_namespace
606 uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
607 with:
608 cache: rust
609 path: ~/.rustup
610 - name: steps::setup_node
611 uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
612 with:
613 node-version: '24'
614 check-latest: true
615 package-manager-cache: false
616 - name: steps::setup_sentry
617 uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
618 with:
619 token: ${{ secrets.SENTRY_AUTH_TOKEN }}
620 - name: steps::clear_target_dir_if_large
621 run: ./script/clear-target-dir-if-larger-than 350 200
622 - name: run_bundling::bundle_mac::bundle_mac
623 run: ./script/bundle-mac x86_64-apple-darwin
624 - name: run_bundling::upload_artifact
625 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
626 with:
627 name: Zed-x86_64.dmg
628 path: target/x86_64-apple-darwin/release/Zed-x86_64.dmg
629 if-no-files-found: error
630 - name: run_bundling::upload_artifact
631 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
632 with:
633 name: zed-remote-server-macos-x86_64.gz
634 path: target/zed-remote-server-macos-x86_64.gz
635 if-no-files-found: error
636 timeout-minutes: 60
637 bundle_windows_aarch64:
638 needs:
639 - run_tests_windows
640 - clippy_windows
641 - check_scripts
642 runs-on: self-32vcpu-windows-2022
643 env:
644 CARGO_INCREMENTAL: 0
645 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
646 ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
647 AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
648 AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
649 AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
650 ACCOUNT_NAME: ${{ vars.AZURE_SIGNING_ACCOUNT_NAME }}
651 CERT_PROFILE_NAME: ${{ vars.AZURE_SIGNING_CERT_PROFILE_NAME }}
652 ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
653 FILE_DIGEST: SHA256
654 TIMESTAMP_DIGEST: SHA256
655 TIMESTAMP_SERVER: http://timestamp.acs.microsoft.com
656 steps:
657 - name: steps::checkout_repo
658 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
659 with:
660 clean: false
661 - name: steps::setup_sentry
662 uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
663 with:
664 token: ${{ secrets.SENTRY_AUTH_TOKEN }}
665 - name: steps::clear_target_dir_if_large
666 run: ./script/clear-target-dir-if-larger-than.ps1 350 200
667 shell: pwsh
668 - name: run_bundling::bundle_windows::bundle_windows
669 run: script/bundle-windows.ps1 -Architecture aarch64
670 shell: pwsh
671 working-directory: ${{ env.ZED_WORKSPACE }}
672 - name: run_bundling::upload_artifact
673 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
674 with:
675 name: Zed-aarch64.exe
676 path: target/Zed-aarch64.exe
677 if-no-files-found: error
678 - name: run_bundling::upload_artifact
679 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
680 with:
681 name: zed-remote-server-windows-aarch64.zip
682 path: target/zed-remote-server-windows-aarch64.zip
683 if-no-files-found: error
684 timeout-minutes: 60
685 bundle_windows_x86_64:
686 needs:
687 - run_tests_windows
688 - clippy_windows
689 - check_scripts
690 runs-on: self-32vcpu-windows-2022
691 env:
692 CARGO_INCREMENTAL: 0
693 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
694 ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
695 AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
696 AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
697 AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
698 ACCOUNT_NAME: ${{ vars.AZURE_SIGNING_ACCOUNT_NAME }}
699 CERT_PROFILE_NAME: ${{ vars.AZURE_SIGNING_CERT_PROFILE_NAME }}
700 ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
701 FILE_DIGEST: SHA256
702 TIMESTAMP_DIGEST: SHA256
703 TIMESTAMP_SERVER: http://timestamp.acs.microsoft.com
704 steps:
705 - name: steps::checkout_repo
706 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
707 with:
708 clean: false
709 - name: steps::setup_sentry
710 uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
711 with:
712 token: ${{ secrets.SENTRY_AUTH_TOKEN }}
713 - name: steps::clear_target_dir_if_large
714 run: ./script/clear-target-dir-if-larger-than.ps1 350 200
715 shell: pwsh
716 - name: run_bundling::bundle_windows::bundle_windows
717 run: script/bundle-windows.ps1 -Architecture x86_64
718 shell: pwsh
719 working-directory: ${{ env.ZED_WORKSPACE }}
720 - name: run_bundling::upload_artifact
721 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
722 with:
723 name: Zed-x86_64.exe
724 path: target/Zed-x86_64.exe
725 if-no-files-found: error
726 - name: run_bundling::upload_artifact
727 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
728 with:
729 name: zed-remote-server-windows-x86_64.zip
730 path: target/zed-remote-server-windows-x86_64.zip
731 if-no-files-found: error
732 timeout-minutes: 60
733 upload_release_assets:
734 needs:
735 - create_draft_release
736 - bundle_linux_aarch64
737 - bundle_linux_x86_64
738 - build_static_bwrap_linux_aarch64
739 - build_static_bwrap_linux_x86_64
740 - bundle_mac_aarch64
741 - bundle_mac_x86_64
742 - bundle_windows_aarch64
743 - bundle_windows_x86_64
744 runs-on: namespace-profile-4x8-ubuntu-2204
745 permissions:
746 contents: write
747 steps:
748 - name: release::download_workflow_artifacts
749 uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
750 with:
751 path: ./artifacts/
752 - name: ls -lR ./artifacts
753 run: ls -lR ./artifacts
754 - name: release::prep_release_artifacts
755 run: |-
756 mkdir -p release-artifacts/
757
758 mv ./artifacts/Zed-aarch64.dmg/Zed-aarch64.dmg release-artifacts/Zed-aarch64.dmg
759 mv ./artifacts/Zed-x86_64.dmg/Zed-x86_64.dmg release-artifacts/Zed-x86_64.dmg
760 mv ./artifacts/zed-linux-aarch64.tar.gz/zed-linux-aarch64.tar.gz release-artifacts/zed-linux-aarch64.tar.gz
761 mv ./artifacts/zed-linux-x86_64.tar.gz/zed-linux-x86_64.tar.gz release-artifacts/zed-linux-x86_64.tar.gz
762 mv ./artifacts/bwrap-linux-aarch64.gz/bwrap-linux-aarch64.gz release-artifacts/bwrap-linux-aarch64.gz
763 mv ./artifacts/bwrap-linux-x86_64.gz/bwrap-linux-x86_64.gz release-artifacts/bwrap-linux-x86_64.gz
764 mv ./artifacts/Zed-x86_64.exe/Zed-x86_64.exe release-artifacts/Zed-x86_64.exe
765 mv ./artifacts/Zed-aarch64.exe/Zed-aarch64.exe release-artifacts/Zed-aarch64.exe
766 mv ./artifacts/zed-remote-server-macos-aarch64.gz/zed-remote-server-macos-aarch64.gz release-artifacts/zed-remote-server-macos-aarch64.gz
767 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
768 mv ./artifacts/zed-remote-server-linux-aarch64.gz/zed-remote-server-linux-aarch64.gz release-artifacts/zed-remote-server-linux-aarch64.gz
769 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
770 mv ./artifacts/zed-remote-server-windows-aarch64.zip/zed-remote-server-windows-aarch64.zip release-artifacts/zed-remote-server-windows-aarch64.zip
771 mv ./artifacts/zed-remote-server-windows-x86_64.zip/zed-remote-server-windows-x86_64.zip release-artifacts/zed-remote-server-windows-x86_64.zip
772 - name: gh release upload "$GITHUB_REF_NAME" --repo=zed-industries/zed release-artifacts/*
773 run: gh release upload "$GITHUB_REF_NAME" --repo=zed-industries/zed release-artifacts/*
774 env:
775 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
776 validate_release_assets:
777 needs:
778 - upload_release_assets
779 runs-on: namespace-profile-2x4-ubuntu-2404
780 permissions:
781 contents: write
782 steps:
783 - name: release::validate_release_assets
784 run: |
785 EXPECTED_ASSETS='["Zed-aarch64.dmg", "Zed-x86_64.dmg", "zed-linux-aarch64.tar.gz", "zed-linux-x86_64.tar.gz", "bwrap-linux-aarch64.gz", "bwrap-linux-x86_64.gz", "Zed-x86_64.exe", "Zed-aarch64.exe", "zed-remote-server-macos-aarch64.gz", "zed-remote-server-macos-x86_64.gz", "zed-remote-server-linux-aarch64.gz", "zed-remote-server-linux-x86_64.gz", "zed-remote-server-windows-aarch64.zip", "zed-remote-server-windows-x86_64.zip"]'
786 TAG="$GITHUB_REF_NAME"
787
788 ACTUAL_ASSETS=$(gh release view "$TAG" --repo=zed-industries/zed --json assets -q '[.assets[].name]')
789
790 MISSING_ASSETS=$(echo "$EXPECTED_ASSETS" | jq -r --argjson actual "$ACTUAL_ASSETS" '. - $actual | .[]')
791
792 if [ -n "$MISSING_ASSETS" ]; then
793 echo "Error: The following assets are missing from the release:"
794 echo "$MISSING_ASSETS"
795 exit 1
796 fi
797
798 echo "All expected assets are present in the release."
799 env:
800 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
801 release_compliance_check:
802 needs:
803 - upload_release_assets
804 - compliance_check
805 runs-on: namespace-profile-8x16-ubuntu-2204
806 steps:
807 - name: steps::checkout_repo
808 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
809 with:
810 clean: false
811 fetch-depth: 0
812 ref: ${{ github.ref }}
813 - name: steps::cache_rust_dependencies_namespace
814 uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
815 with:
816 cache: rust
817 path: ~/.rustup
818 - id: run-compliance-check
819 name: release::add_compliance_steps::run_compliance_check
820 run: |
821 cargo xtask compliance version "$GITHUB_REF_NAME" --report-path "compliance-report-${GITHUB_REF_NAME}.md"
822 env:
823 GITHUB_APP_ID: ${{ secrets.ZED_ZIPPY_APP_ID }}
824 GITHUB_APP_KEY: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
825 - name: run_bundling::upload_artifact
826 if: always()
827 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
828 with:
829 name: compliance-report-${{ github.ref_name }}.md
830 path: compliance-report-${{ github.ref_name }}.md
831 if-no-files-found: error
832 overwrite: true
833 - name: send_compliance_slack_notification
834 if: ${{ failure() || needs.compliance_check.outputs.outcome != 'success' }}
835 run: |
836 if [ "$COMPLIANCE_OUTCOME" == "success" ]; then
837 STATUS="✅ Compliance check passed for $COMPLIANCE_TAG"
838 MESSAGE=$(printf "%s\n\nReport: %s" "$STATUS" "$ARTIFACT_URL")
839 else
840 STATUS="❌ Compliance check failed for $COMPLIANCE_TAG"
841 MESSAGE=$(printf "%s\n\nReport: %s\nPRs needing review: %s" "$STATUS" "$ARTIFACT_URL" "https://github.com/zed-industries/zed/pulls?q=is%3Apr+is%3Aclosed+label%3A%22PR+state%3Aneeds+review%22")
842 fi
843
844 curl -X POST -H 'Content-type: application/json' \
845 --data "$(jq -n --arg text "$MESSAGE" '{"text": $text}')" \
846 "$SLACK_WEBHOOK"
847 env:
848 SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_WORKFLOW_FAILURES }}
849 COMPLIANCE_OUTCOME: ${{ steps.run-compliance-check.outcome }}
850 COMPLIANCE_TAG: ${{ github.ref_name }}
851 ARTIFACT_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts
852 auto_release_preview:
853 needs:
854 - validate_release_assets
855 - release_compliance_check
856 if: startsWith(github.ref, 'refs/tags/v') && endsWith(github.ref, '-pre')
857 runs-on: namespace-profile-2x4-ubuntu-2404
858 steps:
859 - id: generate-token
860 name: steps::authenticate_as_zippy
861 uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859
862 with:
863 app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
864 private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
865 owner: ${{ github.repository_owner }}
866 repositories: ${{ github.event.repository.name }}
867 permission-contents: write
868 - name: steps::checkout_repo
869 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
870 with:
871 clean: false
872 ref: ${{ github.ref }}
873 token: ${{ steps.generate-token.outputs.token }}
874 - id: auto-release-preview
875 name: release::auto_release_preview::auto_release_preview
876 run: |
877 tag="$GITHUB_REF_NAME"
878 release_published=false
879
880 if [[ ! "$tag" =~ ^v([0-9]+)\.([0-9]+)\.([0-9]+)-pre$ ]]; then
881 echo "::error::expected preview release tag in the form vMAJOR.MINOR.PATCH-pre, got $tag"
882 exit 1
883 fi
884
885 major="${BASH_REMATCH[1]}"
886 minor="${BASH_REMATCH[2]}"
887 should_release=true
888
889 released_preview="$(script/get-released-version preview)"
890 if [[ -z "$released_preview" || "$released_preview" == "null" ]]; then
891 echo "::error::could not determine released preview version"
892 exit 1
893 fi
894
895 released_preview_major="$(echo "$released_preview" | cut -d. -f1)"
896 released_preview_minor="$(echo "$released_preview" | cut -d. -f2)"
897
898 if [[ "$released_preview_major" != "$major" || "$released_preview_minor" != "$minor" ]]; then
899 should_release=false
900 echo "Leaving $tag as a draft because it is the first preview release for v${major}.${minor}.x"
901 fi
902
903 if [[ "$should_release" == "true" ]]; then
904 gh release edit "$tag" --repo=zed-industries/zed --draft=false
905 release_published=true
906 fi
907
908 echo "release_published=$release_published" >> "$GITHUB_OUTPUT"
909 env:
910 GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
911 outputs:
912 release_published: ${{ steps.auto-release-preview.outputs.release_published }}
913 push_release_update_notification:
914 needs:
915 - create_draft_release
916 - upload_release_assets
917 - validate_release_assets
918 - release_compliance_check
919 - auto_release_preview
920 - run_tests_mac
921 - run_tests_linux
922 - run_tests_windows
923 - clippy_mac
924 - clippy_linux
925 - clippy_windows
926 - check_scripts
927 - bundle_linux_aarch64
928 - bundle_linux_x86_64
929 - build_static_bwrap_linux_aarch64
930 - build_static_bwrap_linux_x86_64
931 - bundle_mac_aarch64
932 - bundle_mac_x86_64
933 - bundle_windows_aarch64
934 - bundle_windows_x86_64
935 if: always()
936 runs-on: namespace-profile-2x4-ubuntu-2404
937 steps:
938 - id: generate-webhook-message
939 name: release::generate_slack_message
940 run: |
941 MESSAGE=$(if [ "$DRAFT_RESULT" == "failure" ]; then
942 echo "❌ Draft release creation failed for $TAG: $RUN_URL"
943 else
944 RELEASE_URL=$(gh release view "$TAG" --repo=zed-industries/zed --json url -q '.url')
945 if [ "$UPLOAD_RESULT" == "failure" ]; then
946 echo "❌ Release asset upload failed for $TAG: $RELEASE_URL"
947 elif [ "$UPLOAD_RESULT" == "cancelled" ] || [ "$UPLOAD_RESULT" == "skipped" ]; then
948 FAILED_JOBS=""
949 if [ "$RESULT_RUN_TESTS_MAC" == "failure" ];then FAILED_JOBS="$FAILED_JOBS run_tests_mac"; fi
950 if [ "$RESULT_RUN_TESTS_LINUX" == "failure" ];then FAILED_JOBS="$FAILED_JOBS run_tests_linux"; fi
951 if [ "$RESULT_RUN_TESTS_WINDOWS" == "failure" ];then FAILED_JOBS="$FAILED_JOBS run_tests_windows"; fi
952 if [ "$RESULT_CLIPPY_MAC" == "failure" ];then FAILED_JOBS="$FAILED_JOBS clippy_mac"; fi
953 if [ "$RESULT_CLIPPY_LINUX" == "failure" ];then FAILED_JOBS="$FAILED_JOBS clippy_linux"; fi
954 if [ "$RESULT_CLIPPY_WINDOWS" == "failure" ];then FAILED_JOBS="$FAILED_JOBS clippy_windows"; fi
955 if [ "$RESULT_CHECK_SCRIPTS" == "failure" ];then FAILED_JOBS="$FAILED_JOBS check_scripts"; fi
956 if [ "$RESULT_BUNDLE_LINUX_AARCH64" == "failure" ];then FAILED_JOBS="$FAILED_JOBS bundle_linux_aarch64"; fi
957 if [ "$RESULT_BUNDLE_LINUX_X86_64" == "failure" ];then FAILED_JOBS="$FAILED_JOBS bundle_linux_x86_64"; fi
958 if [ "$RESULT_BUILD_STATIC_BWRAP_LINUX_AARCH64" == "failure" ];then FAILED_JOBS="$FAILED_JOBS build_static_bwrap_linux_aarch64"; fi
959 if [ "$RESULT_BUILD_STATIC_BWRAP_LINUX_X86_64" == "failure" ];then FAILED_JOBS="$FAILED_JOBS build_static_bwrap_linux_x86_64"; fi
960 if [ "$RESULT_BUNDLE_MAC_AARCH64" == "failure" ];then FAILED_JOBS="$FAILED_JOBS bundle_mac_aarch64"; fi
961 if [ "$RESULT_BUNDLE_MAC_X86_64" == "failure" ];then FAILED_JOBS="$FAILED_JOBS bundle_mac_x86_64"; fi
962 if [ "$RESULT_BUNDLE_WINDOWS_AARCH64" == "failure" ];then FAILED_JOBS="$FAILED_JOBS bundle_windows_aarch64"; fi
963 if [ "$RESULT_BUNDLE_WINDOWS_X86_64" == "failure" ];then FAILED_JOBS="$FAILED_JOBS bundle_windows_x86_64"; fi
964 FAILED_JOBS=$(echo "$FAILED_JOBS" | xargs)
965 if [ "$UPLOAD_RESULT" == "cancelled" ]; then
966 if [ -n "$FAILED_JOBS" ]; then
967 echo "❌ Release job for $TAG was cancelled, most likely because tests \`$FAILED_JOBS\` failed: $RUN_URL"
968 else
969 echo "❌ Release job for $TAG was cancelled: $RUN_URL"
970 fi
971 else
972 if [ -n "$FAILED_JOBS" ]; then
973 echo "❌ Tests \`$FAILED_JOBS\` for $TAG failed: $RUN_URL"
974 else
975 echo "❌ Tests for $TAG failed: $RUN_URL"
976 fi
977 fi
978 elif [ "$COMPLIANCE_RESULT" == "failure" ]; then
979 # We already notify within that job
980 echo ""
981 elif [ "$VALIDATE_RESULT" == "failure" ]; then
982 echo "❌ Release validation failed for $TAG: missing assets: $RUN_URL"
983 elif [ "$AUTO_RELEASE_RESULT" == "failure" ]; then
984 echo "❌ Auto release failed for $TAG: $RUN_URL"
985 elif [ "$AUTO_RELEASE_RESULT" == "success" ] && [ "$AUTO_RELEASE_PUBLISHED" == "true" ]; then
986 echo "✅ Release $TAG was auto-released successfully: $RELEASE_URL"
987 else
988 echo "👀 Release $TAG sitting freshly baked in the oven and waiting to be published: $RELEASE_URL"
989 fi
990 fi
991 )
992 echo "message=$MESSAGE" >> "$GITHUB_OUTPUT"
993 env:
994 GH_TOKEN: ${{ github.token }}
995 DRAFT_RESULT: ${{ needs.create_draft_release.result }}
996 UPLOAD_RESULT: ${{ needs.upload_release_assets.result }}
997 VALIDATE_RESULT: ${{ needs.validate_release_assets.result }}
998 COMPLIANCE_RESULT: ${{ needs.release_compliance_check.result }}
999 AUTO_RELEASE_RESULT: ${{ needs.auto_release_preview.result }}
1000 AUTO_RELEASE_PUBLISHED: ${{ needs.auto_release_preview.outputs.release_published }}
1001 RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
1002 TAG: ${{ github.ref_name }}
1003 RESULT_RUN_TESTS_MAC: ${{ needs.run_tests_mac.result }}
1004 RESULT_RUN_TESTS_LINUX: ${{ needs.run_tests_linux.result }}
1005 RESULT_RUN_TESTS_WINDOWS: ${{ needs.run_tests_windows.result }}
1006 RESULT_CLIPPY_MAC: ${{ needs.clippy_mac.result }}
1007 RESULT_CLIPPY_LINUX: ${{ needs.clippy_linux.result }}
1008 RESULT_CLIPPY_WINDOWS: ${{ needs.clippy_windows.result }}
1009 RESULT_CHECK_SCRIPTS: ${{ needs.check_scripts.result }}
1010 RESULT_BUNDLE_LINUX_AARCH64: ${{ needs.bundle_linux_aarch64.result }}
1011 RESULT_BUNDLE_LINUX_X86_64: ${{ needs.bundle_linux_x86_64.result }}
1012 RESULT_BUILD_STATIC_BWRAP_LINUX_AARCH64: ${{ needs.build_static_bwrap_linux_aarch64.result }}
1013 RESULT_BUILD_STATIC_BWRAP_LINUX_X86_64: ${{ needs.build_static_bwrap_linux_x86_64.result }}
1014 RESULT_BUNDLE_MAC_AARCH64: ${{ needs.bundle_mac_aarch64.result }}
1015 RESULT_BUNDLE_MAC_X86_64: ${{ needs.bundle_mac_x86_64.result }}
1016 RESULT_BUNDLE_WINDOWS_AARCH64: ${{ needs.bundle_windows_aarch64.result }}
1017 RESULT_BUNDLE_WINDOWS_X86_64: ${{ needs.bundle_windows_x86_64.result }}
1018 - name: release::send_slack_message
1019 if: steps.generate-webhook-message.outputs.message != ''
1020 run: 'curl -X POST -H ''Content-type: application/json'' --data "$(jq -n --arg text "$SLACK_MESSAGE" ''{"text": $text}'')" "$SLACK_WEBHOOK"'
1021 env:
1022 SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_WORKFLOW_FAILURES }}
1023 SLACK_MESSAGE: ${{ steps.generate-webhook-message.outputs.message }}
1024concurrency:
1025 group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }}
1026 cancel-in-progress: true
1027defaults:
1028 run:
1029 shell: bash -euxo pipefail {0}
1030