Repository navigation
ci: place the Iroh release gate's Tailscale job on the owned minis #15139
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -758,6 +758,8 @@ and the retired self-hosted fleet failed `codesign` with | |
| | `ci-macos.yml` `swift-package-tests` | owned side lane via the picker (the side label) when the run builds no Release helper; else Blacksmith macOS 15 | the helper needs an SDK 15 Xcode | | ||
| | the light side lanes above | `CI_LIGHT_LANE_RUNNER` on attempt 1, `CI_SIDE_LANE_RUNNER` on attempt 2, of a pull request, push, schedule or dispatch | light | | ||
| | `test-e2e.yml` (and `dispatch-focused-test.py`) | owned via `e2e_runner_pool.py`; UI runs with `CI_E2E_OWNED_UI=1` | root jobs; Blacksmith when no root runner is free | | ||
| | `iroh-release-gate.yml` `tailscale-version-skew` | owned via `e2e_runner_pool.py` (its `runner` job) on attempt 1 of a trusted ref, only while a machine is free now; else Blacksmith macOS 15 | app-host tests into `$RUNNER_TEMP` DerivedData, no secrets; takes the gui token for its tests | | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win Remove the conflicting version-skew row. This row says 🤖 Prompt for AI Agents |
||
| | `iroh-release-gate.yml` `simulator-e2e` | Blacksmith macOS 15 | staging or production secrets in `$HOME`, shared user DerivedData, keychain and console-session changes | | ||
| | `test-ios.yml`, `ios-screenshots.yml` | owned via `ios_runner_pool.py` behind `CI_IOS_OWNED=1` | needs the `glaeda-ios-sim` label (an iOS 26.x simulator runtime) | | ||
| | `app-host-test-rerun.yml` `rerun` | `CI_SIDE_LANE_RUNNER` for macOS 26 products, attempt 1 only; macOS 15 products on Blacksmith macOS 15 | gui; it takes the product's root itself (`glaeda-canonical-root take`) | | ||
| | `cmux-tui.yml` macOS `lint`, `test`, `cdp-browser-smoke` | `CI_SIDE_LANE_RUNNER`, attempt 1 only | isolated (glaeda classes them by workflow and id) | | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🔎 Supported by static analysis
🏁 Script executed:
Repository: manaflow-ai/cmux
Length of output: 7420
🏁 Script executed:
Repository: manaflow-ai/cmux
Length of output: 43192
🌐 Web query:
GitHub Actions official documentation job outputs available when a needed job fails needs.result conditional expression💡 Result:
Require the watch marker before using an owned runner.
If marker creation or the watch upload fails,
continue-on-errorcan leaverunnerfailed or successful without anowned-pool-watchartifact. The rescue sweeper then cannot discover the queued owned job.A failed job can still expose outputs produced before the failure. Therefore, making the upload mandatory alone does not guarantee Blacksmith fallback. Require
needs.runner.result == 'success'before using the owned label.Suggested fix
- name: Mark a run on a persistent macOS pool id: marker if: ${{ steps.pool.outputs.label != '' && github.run_attempt == 1 }} - continue-on-error: true run: | set -euo pipefail marker="$RUNNER_TEMP/macos-pool-persistent.json" echo '{}' > "$marker" echo "path=$marker" >> "$GITHUB_OUTPUT" - name: Upload the owned-pool watch marker if: ${{ steps.marker.outputs.path != '' }} - continue-on-error: true uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: owned-pool-watch path: ${{ steps.marker.outputs.path }} + if-no-files-found: error retention-days: 1 @@ - runs-on: ${{ github.repository_owner != 'manaflow-ai' && 'macos-26' || (github.run_attempt == 1 && needs.runner.outputs.label || (vars.CI_PAID_MACOS_OVERFLOW == '1' && vars.MACOS_RUNNER_15 || 'blacksmith-6vcpu-macos-15')) }} + runs-on: ${{ github.repository_owner != 'manaflow-ai' && 'macos-26' || (github.run_attempt == 1 && needs.runner.result == 'success' && needs.runner.outputs.label || (vars.CI_PAID_MACOS_OVERFLOW == '1' && vars.MACOS_RUNNER_15 || 'blacksmith-6vcpu-macos-15')) }}🤖 Prompt for AI Agents