Use long-lived runners for TestFlight waits
Some checks failed
Build Rust / Cargo Test (push) Successful in 4m4s
Build Site / Next.js Build (push) Failing after 4s
Lint Governance / BEP Metadata (push) Successful in 1s
Cache: Publish Nix / Publish Nix Cache (push) Successful in 3m13s

This commit is contained in:
Conrad Kramer 2026-06-07 19:49:22 -07:00
parent 99499b78f9
commit feb64febc4
5 changed files with 23 additions and 11 deletions

View file

@ -407,7 +407,7 @@ jobs:
- prepare - prepare
- sign-apple - sign-apple
if: ${{ github.event.inputs.upload_app_store == 'true' }} if: ${{ github.event.inputs.upload_app_store == 'true' }}
runs-on: namespace-profile-macos-large-apple-v2 runs-on: namespace-profile-macos-large-testflight
steps: steps:
- name: Checkout - name: Checkout
uses: https://code.forgejo.org/actions/checkout@v4 uses: https://code.forgejo.org/actions/checkout@v4

View file

@ -36,7 +36,7 @@ env:
jobs: jobs:
distribute-ios-testflight: distribute-ios-testflight:
name: Distribute (TestFlight iOS Testers) name: Distribute (TestFlight iOS Testers)
runs-on: namespace-profile-linux-medium runs-on: namespace-profile-linux-testflight
steps: steps:
- name: Checkout - name: Checkout
uses: https://code.forgejo.org/actions/checkout@v4 uses: https://code.forgejo.org/actions/checkout@v4

View file

@ -223,7 +223,7 @@ jobs:
name: Release (TestFlight iOS Testers) name: Release (TestFlight iOS Testers)
needs: upload-app-store needs: upload-app-store
if: ${{ inputs.upload_app_store == 'true' }} if: ${{ inputs.upload_app_store == 'true' }}
runs-on: namespace-profile-linux-medium runs-on: namespace-profile-linux-testflight
steps: steps:
- name: Checkout - name: Checkout
uses: https://code.forgejo.org/actions/checkout@v4 uses: https://code.forgejo.org/actions/checkout@v4
@ -261,7 +261,7 @@ jobs:
distribute-ios-testflight: distribute-ios-testflight:
name: Distribute (TestFlight iOS Testers) name: Distribute (TestFlight iOS Testers)
if: ${{ inputs.upload_app_store != 'true' && inputs.distribute_testflight == 'true' }} if: ${{ inputs.upload_app_store != 'true' && inputs.distribute_testflight == 'true' }}
runs-on: namespace-profile-linux-medium runs-on: namespace-profile-linux-testflight
steps: steps:
- name: Checkout - name: Checkout
uses: https://code.forgejo.org/actions/checkout@v4 uses: https://code.forgejo.org/actions/checkout@v4

View file

@ -195,12 +195,16 @@ The same change also makes the forge itself the release authority: release tags
`apple-distribute-testers` and `publish-store-uploads` wait up to 7200 `apple-distribute-testers` and `publish-store-uploads` wait up to 7200
seconds by default and allow Forgejo variable seconds by default and allow Forgejo variable
`TESTFLIGHT_WAIT_PROCESSING_TIMEOUT_SECONDS` to tune that ceiling without a `TESTFLIGHT_WAIT_PROCESSING_TIMEOUT_SECONDS` to tune that ceiling without a
repo change. `publish-store-uploads` has a separate no-`needs` repo change. TestFlight wait jobs must use `namespace-profile-linux-testflight`
`distribute-ios-testflight` retry job for `distribute_testflight=true` and or `namespace-profile-macos-large-testflight`; the generic Linux and Apple
`upload_app_store=false`, so skipped upload/signing jobs cannot suppress macOS profiles expire before the 7200-second processing window. The
distribution of an already-uploaded build. `distribute-testflight` is the autoscaler-to-dispatcher timeout must stay above those runner TTLs because
narrower one-job retry workflow when only App Store Connect processing and dispatch requests block until the one-job runner exits. `publish-store-uploads`
tester assignment need to be retried. has a separate no-`needs` `distribute-ios-testflight` retry job for
`distribute_testflight=true` and `upload_app_store=false`, so skipped
upload/signing jobs cannot suppress distribution of an already-uploaded build.
`distribute-testflight` is the narrower one-job retry workflow when only App
Store Connect processing and tester assignment need to be retried.
- Add `infra/releases` as the OpenTofu boundary for the GCS release and package repository backup buckets. Garage is the required S3-compatible primary distribution target after host bootstrap. `infra/identity` remains the boundary for Google KMS signing keys, the Authentik WIF pool/provider, and the runner service account. - Add `infra/releases` as the OpenTofu boundary for the GCS release and package repository backup buckets. Garage is the required S3-compatible primary distribution target after host bootstrap. `infra/identity` remains the boundary for Google KMS signing keys, the Authentik WIF pool/provider, and the runner service account.
- Serve `releases.burrow.net` and `packages.burrow.net` from the forge Caddy - Serve `releases.burrow.net` and `packages.burrow.net` from the forge Caddy
edge as stable Burrow domains backed by the GCS release and package buckets. edge as stable Burrow domains backed by the GCS release and package buckets.

View file

@ -2,7 +2,7 @@ listen: "127.0.0.1:8090"
dispatcher: dispatcher:
url: "http://127.0.0.1:8080" url: "http://127.0.0.1:8080"
timeout: "2h" timeout: "3h"
instances: instances:
- name: burrow - name: burrow
@ -30,6 +30,10 @@ instances:
min_idle: 0 min_idle: 0
ttl: "30m" ttl: "30m"
machine_type: "8x16" machine_type: "8x16"
- labels: ["namespace-profile-linux-testflight"]
min_idle: 0
ttl: "150m"
machine_type: "8x16"
- labels: ["namespace-profile-macos-large"] - labels: ["namespace-profile-macos-large"]
min_idle: 0 min_idle: 0
ttl: "60m" ttl: "60m"
@ -38,6 +42,10 @@ instances:
min_idle: 0 min_idle: 0
ttl: "90m" ttl: "90m"
machine_type: "12x28" machine_type: "12x28"
- labels: ["namespace-profile-macos-large-testflight"]
min_idle: 0
ttl: "150m"
machine_type: "12x28"
- labels: ["namespace-profile-windows-large"] - labels: ["namespace-profile-windows-large"]
min_idle: 0 min_idle: 0
ttl: "45m" ttl: "45m"