From 0160cd7365a781a5423a930ba718e18728dd4521 Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Tue, 3 Nov 2026 16:35:45 -0800 Subject: [PATCH] ci: retire private Actions runners and use GitHub-hosted capacity --- .github/scripts/private-linux-routing.test.py | 88 ------------------- .github/workflows/ci.yml | 20 ++--- .github/workflows/deploy-relay.yml | 2 +- .../desktop-macos-preview-publish.yml | 4 +- .github/workflows/desktop-macos-preview.yml | 2 +- .github/workflows/fork-ci.yml | 49 +---------- .github/workflows/mobile-android-apk.yml | 2 +- .github/workflows/mobile-eas-preview-fork.yml | 2 +- .github/workflows/mobile-eas-preview.yml | 2 +- .github/workflows/mobile-eas-production.yml | 2 +- .../workflows/mobile-fingerprint-check.yml | 2 +- .../workflows/mobile-showcase-screenshots.yml | 4 +- .github/workflows/publish-aur.yml | 2 +- .github/workflows/relay-preview-cleanup.yml | 6 +- .github/workflows/relay-preview.yml | 2 +- .github/workflows/release.yml | 44 +++++----- .github/workflows/web-preview.yml | 2 +- .github/workflows/windows-tests.yml | 2 +- 18 files changed, 54 insertions(+), 183 deletions(-) delete mode 100644 .github/scripts/private-linux-routing.test.py diff --git a/.github/scripts/private-linux-routing.test.py b/.github/scripts/private-linux-routing.test.py deleted file mode 100644 index 7bc46cec1b1dd..0000000000000 --- a/.github/scripts/private-linux-routing.test.py +++ /dev/null @@ -1,88 +0,0 @@ -import json -import os -from pathlib import Path -import re -import subprocess -import tempfile -import textwrap -import unittest - -WORKFLOW = Path(__file__).parents[1] / 'workflows' / 'fork-ci.yml' -TEXT = WORKFLOW.read_text() - - -def job(name): - return re.search(rf'^ {name}:\n(.*?)(?=^ [\w-]+:|\Z)', TEXT, re.M | re.S)[1] - - -def run_block(text): - return textwrap.dedent(text.split(' run: |\n')[-1]) - - -class RoutingTests(unittest.TestCase): - def request(self, server_tests, exit_code): - with tempfile.TemporaryDirectory() as directory: - output = Path(directory) / 'output' - output.touch() - script = f'gh() {{ return {exit_code}; }}\n' + run_block(job('private-linux-status')) - result = subprocess.run(['bash', '-e', '-c', script], capture_output=True, text=True, - env={**os.environ, 'SERVER_TESTS': server_tests, 'SOURCE_SHA': 'a' * 40, - 'GITHUB_OUTPUT': str(output), 'GITHUB_REPOSITORY': 'ScriptedAlchemy/t3code', - 'GITHUB_RUN_ID': '123', 'GITHUB_RUN_ATTEMPT': '1', - 'GITHUB_SERVER_URL': 'https://github.com'}) - return result.returncode, output.read_text() - - def test_request_publishes_only_after_success(self): - self.assertEqual(self.request('true', 0), (0, 'enabled=true\n')) - code, output = self.request('true', 1) - self.assertNotEqual(code, 0) - self.assertEqual(output, '') - self.assertEqual(self.request('false', 0), (0, 'enabled=false\n')) - - def test_hosted_server_falls_back_on_failed_or_skipped_request(self): - expression = re.search(r' if: >-\n(.*?)(?= runs-on:)', job('server'), re.S)[1].strip() - expression = expression.replace('needs.private-linux-status', 'needs["private-linux-status"]') - for result, enabled, tests, cancelled, expected in [ - ('success', 'true', 'true', False, False), - ('failure', '', 'true', False, True), - ('failure', 'true', 'true', False, True), - ('skipped', '', 'true', False, True), - ('success', 'false', 'true', False, True), - ('skipped', '', 'false', False, False), - ('failure', '', 'true', True, False), - ]: - with self.subTest(result=result, enabled=enabled, tests=tests, cancelled=cancelled): - needs = {'changes': {'outputs': {'test_server': tests}}, - 'private-linux-status': {'result': result, 'outputs': {'enabled': enabled}}} - script = f'const needs={json.dumps(needs)}; const cancelled=()=>{str(cancelled).lower()}; console.log(Boolean({expression}));' - actual = subprocess.check_output(['node', '-e', script], text=True).strip() - self.assertEqual(actual, str(expected).lower()) - - def test_aggregate_requires_server_or_acknowledged_private_route(self): - for private_result, enabled, server_result, expected in [ - ('success', 'true', 'skipped', True), - ('skipped', '', 'success', True), - ('success', 'false', 'skipped', False), - ('failure', 'true', 'skipped', False), - ('success', 'true', 'failure', False), - ]: - with self.subTest(private=private_result, enabled=enabled, server=server_result): - needs = {k: {'result': 'success'} for k in ['checks', 'clients', 'rust', 'mobile_native']} - needs['changes'] = {'result': 'success', 'outputs': {'test_server': 'true'}} - needs['private-linux-status'] = {'result': private_result, 'outputs': {'enabled': enabled}} - needs['server'] = {'result': server_result} - result = subprocess.run(['bash', '-e', '-c', run_block(job('check'))], - env={**os.environ, 'RESULTS': json.dumps(needs)}, capture_output=True) - self.assertEqual(result.returncode == 0, expected) - - def test_privileged_request_never_checks_out_source(self): - request = job('private-linux-status') - self.assertNotRegex(request, r'(?m)^\s+-?\s*uses:') - self.assertIn("github.actor_id == '25274700'", request) - self.assertIn("github.triggering_actor == 'ScriptedAlchemy'", request) - self.assertIn('github.event.pull_request.head.repo.full_name == github.repository', request) - self.assertNotIn('statuses: write', job('changes')) - - -if __name__ == '__main__': - unittest.main() diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b7b74e3049625..dcffa524b23db 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: # open: if the diff cannot be resolved, everything runs. changes: name: Changes - runs-on: blacksmith-2vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 5 outputs: typecheck: ${{ steps.detect.outputs.typecheck }} @@ -75,7 +75,7 @@ jobs: contents: read id-token: write name: Lint - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 steps: - name: Checkout @@ -131,7 +131,7 @@ jobs: name: Build and Typecheck needs: changes if: ${{ !cancelled() && (needs.changes.outputs.build != 'false' || needs.changes.outputs.typecheck != 'false') }} - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 steps: - name: Checkout @@ -230,7 +230,7 @@ jobs: name: Test needs: changes if: ${{ !cancelled() && needs.changes.outputs.test != 'false' }} - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 steps: - name: Checkout @@ -306,7 +306,7 @@ jobs: name: Test Web needs: changes if: ${{ !cancelled() && needs.changes.outputs.test_web != 'false' }} - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 steps: - name: Checkout @@ -370,7 +370,7 @@ jobs: contents: read id-token: write name: Test Server ${{ matrix.shard }} - runs-on: blacksmith-4vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 # Shards take 2-5 minutes. When the shared task cache throttles reads, each # failed fetch stalls vp for 15-90s, which pushed shards past 10 minutes. timeout-minutes: 20 @@ -491,7 +491,7 @@ jobs: name: Rust needs: changes if: ${{ !cancelled() && needs.changes.outputs.rust != 'false' }} - runs-on: blacksmith-4vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 steps: - name: Checkout @@ -529,7 +529,7 @@ jobs: name: Mobile Native Static Analysis needs: changes if: ${{ !cancelled() && needs.changes.outputs.mobile_native != 'false' }} - runs-on: blacksmith-6vcpu-macos-26 + runs-on: macos-26 timeout-minutes: 10 steps: - name: Checkout @@ -562,7 +562,7 @@ jobs: name: Release Smoke needs: changes if: ${{ !cancelled() && needs.changes.outputs.release_smoke != 'false' }} - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 steps: - name: Checkout @@ -602,7 +602,7 @@ jobs: mobile_native_static_analysis, release_smoke, ] - runs-on: blacksmith-2vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 5 steps: - name: Require every job to pass diff --git a/.github/workflows/deploy-relay.yml b/.github/workflows/deploy-relay.yml index 5db7a86eb98c9..1a84903f43a45 100644 --- a/.github/workflows/deploy-relay.yml +++ b/.github/workflows/deploy-relay.yml @@ -27,7 +27,7 @@ jobs: name: Deploy production relay # A manual run from another branch would deploy that branch to production. if: github.repository == 'pingdotgg/t3code' && github.ref == 'refs/heads/main' - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 15 environment: name: production diff --git a/.github/workflows/desktop-macos-preview-publish.yml b/.github/workflows/desktop-macos-preview-publish.yml index 6e8805b7f790b..a4760193d5bbb 100644 --- a/.github/workflows/desktop-macos-preview-publish.yml +++ b/.github/workflows/desktop-macos-preview-publish.yml @@ -309,7 +309,7 @@ jobs: clerk_cli_oauth_client_id: ${{ needs.resolve.outputs.clerk_cli_oauth_client_id }} relay_url: ${{ needs.resolve.outputs.relay_url }} label: macOS arm64 preview - runner: blacksmith-12vcpu-macos-26 + runner: macos-26 platform: mac target: dmg arch: arm64 @@ -325,7 +325,7 @@ jobs: name: Publish anonymous download needs: [resolve, build] if: needs.resolve.outputs.eligible == 'true' && needs.build.result == 'success' - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 # Its own group, so a publish never cancels a newer commit's signing job # (they would share the build group) and is never cancelled mid-upload. diff --git a/.github/workflows/desktop-macos-preview.yml b/.github/workflows/desktop-macos-preview.yml index 7d9940a51b79a..13e6ab50d7ddd 100644 --- a/.github/workflows/desktop-macos-preview.yml +++ b/.github/workflows/desktop-macos-preview.yml @@ -30,7 +30,7 @@ jobs: build: name: Build preview JS bundle if: github.event.label.name == 'preview:mac' - runs-on: blacksmith-32vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 30 steps: # This repository is public, so Git needs no credentials. checkout's diff --git a/.github/workflows/fork-ci.yml b/.github/workflows/fork-ci.yml index 21e197f12c42b..6a318bc7228cd 100644 --- a/.github/workflows/fork-ci.yml +++ b/.github/workflows/fork-ci.yml @@ -45,7 +45,6 @@ jobs: - name: Check workflow runner labels run: | python3 -B .github/scripts/check-runner-labels.test.py - python3 -B .github/scripts/private-linux-routing.test.py python3 -B .github/scripts/check-runner-labels.py - name: Detect affected jobs @@ -144,48 +143,11 @@ jobs: if: needs.changes.outputs.test_web != 'false' run: vp run --filter @t3tools/web test - private-linux-status: - name: Request private server tests - needs: changes - runs-on: ubuntu-24.04 - timeout-minutes: 5 - permissions: - contents: read - statuses: write - outputs: - enabled: ${{ steps.request.outputs.enabled }} - if: >- - !cancelled() && vars.PRIVATE_LINUX_CI == 'true' && - github.actor_id == '25274700' && github.triggering_actor == 'ScriptedAlchemy' && - (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) - steps: - - name: Request private server capacity - id: request - env: - GH_TOKEN: ${{ github.token }} - SERVER_TESTS: ${{ needs.changes.outputs.test_server }} - SOURCE_SHA: ${{ github.event.pull_request.head.sha || github.sha }} - run: | - set -euo pipefail - enabled=false - state=success - description='Hosted Linux CI selected' - if [[ "$SERVER_TESTS" != false ]]; then - enabled=true - state=pending - description="Requested private-linux:$GITHUB_REPOSITORY:$GITHUB_RUN_ID:$GITHUB_RUN_ATTEMPT:full" - fi - gh api --method POST "repos/$GITHUB_REPOSITORY/statuses/$SOURCE_SHA" \ - -f state="$state" -f context='Private Linux CI' -f description="$description" \ - -f target_url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" - echo "enabled=$enabled" >> "$GITHUB_OUTPUT" - server: name: Server tests ${{ matrix.shard }} - needs: [changes, private-linux-status] + needs: [changes] if: >- - !cancelled() && needs.changes.outputs.test_server != 'false' && - !(needs.private-linux-status.result == 'success' && needs.private-linux-status.outputs.enabled == 'true') + !cancelled() && needs.changes.outputs.test_server != 'false' runs-on: ubuntu-24.04 timeout-minutes: 30 strategy: @@ -270,7 +232,7 @@ jobs: check: name: Fork Check if: ${{ !cancelled() && github.repository != 'pingdotgg/t3code' }} - needs: [changes, private-linux-status, checks, clients, server, rust, mobile_native] + needs: [changes, checks, clients, server, rust, mobile_native] runs-on: ubuntu-24.04 timeout-minutes: 5 steps: @@ -279,12 +241,9 @@ jobs: RESULTS: ${{ toJSON(needs) }} run: | echo "$RESULTS" | jq -r 'to_entries[] | "\(.key): \(.value.result)"' - echo "$RESULTS" | jq -e '(."private-linux-status".result == "success" and ."private-linux-status".outputs.enabled == "true") as $private - | .changes.outputs as $gates + echo "$RESULTS" | jq -e '.changes.outputs as $gates | {clients: ["test", "test_web"], server: ["test_server"]} as $renamed | all(to_entries[]; .value.result == "success" - or (.key == "private-linux-status" and .value.result == "skipped") - or (.key == "server" and .value.result == "skipped" and $private) or (.value.result == "skipped" and (($renamed[.key] // [.key]) | all(.[]; $gates[.] == "false"))))' > /dev/null diff --git a/.github/workflows/mobile-android-apk.yml b/.github/workflows/mobile-android-apk.yml index 18d977c50f4a0..e2a87da1da2eb 100644 --- a/.github/workflows/mobile-android-apk.yml +++ b/.github/workflows/mobile-android-apk.yml @@ -16,7 +16,7 @@ jobs: mirror: name: Mirror beta APK if: github.repository == 'pingdotgg/t3code' - runs-on: blacksmith-2vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 permissions: contents: write diff --git a/.github/workflows/mobile-eas-preview-fork.yml b/.github/workflows/mobile-eas-preview-fork.yml index d263461e44317..d12fdd46584e4 100644 --- a/.github/workflows/mobile-eas-preview-fork.yml +++ b/.github/workflows/mobile-eas-preview-fork.yml @@ -22,7 +22,7 @@ jobs: if: >- github.event.pull_request.head.repo.full_name != github.repository && github.event.label.name == '🚀 Mobile Continuous Deployment' - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 concurrency: group: mobile-eas-preview-fork-${{ github.event.pull_request.number }} cancel-in-progress: true diff --git a/.github/workflows/mobile-eas-preview.yml b/.github/workflows/mobile-eas-preview.yml index 08183d0385811..d7652bfaa0c45 100644 --- a/.github/workflows/mobile-eas-preview.yml +++ b/.github/workflows/mobile-eas-preview.yml @@ -12,7 +12,7 @@ jobs: github.event.pull_request.head.repo.full_name == github.repository && contains(github.event.pull_request.labels.*.name, '🚀 Mobile Continuous Deployment') && (github.event.action != 'labeled' || github.event.label.name == '🚀 Mobile Continuous Deployment') - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 concurrency: group: mobile-eas-preview-${{ github.event.pull_request.number }} cancel-in-progress: true diff --git a/.github/workflows/mobile-eas-production.yml b/.github/workflows/mobile-eas-production.yml index 6877f5c831a08..81f26d6ce8f6e 100644 --- a/.github/workflows/mobile-eas-production.yml +++ b/.github/workflows/mobile-eas-production.yml @@ -76,7 +76,7 @@ jobs: production: name: EAS ${{ inputs.profile || 'production' }} ${{ github.event_name == 'push' && 'auto' || inputs.mode }} if: github.repository == 'pingdotgg/t3code' - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 permissions: contents: read env: diff --git a/.github/workflows/mobile-fingerprint-check.yml b/.github/workflows/mobile-fingerprint-check.yml index 9fabb3a5f2ad2..6ef032450e04f 100644 --- a/.github/workflows/mobile-fingerprint-check.yml +++ b/.github/workflows/mobile-fingerprint-check.yml @@ -25,7 +25,7 @@ concurrency: jobs: fingerprint: name: Native fingerprint diff - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 permissions: contents: read env: diff --git a/.github/workflows/mobile-showcase-screenshots.yml b/.github/workflows/mobile-showcase-screenshots.yml index c02be425c1ab7..8c121f3c31580 100644 --- a/.github/workflows/mobile-showcase-screenshots.yml +++ b/.github/workflows/mobile-showcase-screenshots.yml @@ -45,7 +45,7 @@ jobs: ios: name: iPhone, iPhone Duo, and iPad 13 if: inputs.platform == 'all' || inputs.platform == 'ios' - runs-on: blacksmith-12vcpu-macos-26 + runs-on: macos-26 # Capturing every palette multiplies the device matrix by six, and only the # one native build is shared between them. timeout-minutes: ${{ inputs.theme == 'all' && 300 || 60 }} @@ -108,7 +108,7 @@ jobs: android: name: Android phone, 7-inch tablet, and 10-inch tablet if: inputs.platform == 'all' || inputs.platform == 'android' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 # Capturing every palette multiplies the device matrix by six, and only the # one native build is shared between them. timeout-minutes: ${{ inputs.theme == 'all' && 300 || 60 }} diff --git a/.github/workflows/publish-aur.yml b/.github/workflows/publish-aur.yml index 4ab6db89ab703..0854c2b68b24d 100644 --- a/.github/workflows/publish-aur.yml +++ b/.github/workflows/publish-aur.yml @@ -38,7 +38,7 @@ jobs: publish: name: Validate and publish if: github.repository == 'pingdotgg/t3code' - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 30 container: image: archlinux:base-devel diff --git a/.github/workflows/relay-preview-cleanup.yml b/.github/workflows/relay-preview-cleanup.yml index eed067adfd773..6ee1bd96ebc4c 100644 --- a/.github/workflows/relay-preview-cleanup.yml +++ b/.github/workflows/relay-preview-cleanup.yml @@ -40,7 +40,7 @@ jobs: contents: read issues: write pull-requests: write - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 30 environment: name: relay-preview-cleanup @@ -101,7 +101,7 @@ jobs: list_closed_previews: name: List closed relay previews if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request_target' - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 outputs: numbers: ${{ steps.list.outputs.numbers }} @@ -125,7 +125,7 @@ jobs: name: Retry teardown for PR ${{ matrix.number }} needs: list_closed_previews if: github.ref == 'refs/heads/main' && needs.list_closed_previews.outputs.numbers != '[]' - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 30 strategy: fail-fast: false diff --git a/.github/workflows/relay-preview.yml b/.github/workflows/relay-preview.yml index fdce22c68a59e..6bfe78a288060 100644 --- a/.github/workflows/relay-preview.yml +++ b/.github/workflows/relay-preview.yml @@ -22,7 +22,7 @@ jobs: if: >- github.event.pull_request.head.repo.full_name == github.repository && contains(github.event.pull_request.labels.*.name, 'relay:preview') - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 20 environment: name: relay-preview diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6d15509030dd2..fd8327217bea2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,7 +51,7 @@ jobs: resolve_commit: name: Resolve release commit if: github.repository == 'pingdotgg/t3code' - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 5 outputs: ref: ${{ steps.resolve.outputs.ref }} @@ -105,7 +105,7 @@ jobs: if: | needs.resolve_commit.result == 'success' && (github.event_name != 'schedule' || needs.resolve_commit.outputs.has_changes == 'true') - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 outputs: release_channel: ${{ steps.release_meta.outputs.release_channel }} @@ -233,7 +233,7 @@ jobs: name: Release quality checks needs: [preflight] if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' }} - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 steps: - name: Checkout @@ -265,7 +265,7 @@ jobs: name: Release tests needs: [preflight] if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' }} - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 steps: - name: Checkout @@ -301,7 +301,7 @@ jobs: name: Release web tests needs: [preflight] if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' }} - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 steps: - name: Checkout @@ -355,7 +355,7 @@ jobs: name: Release server tests ${{ matrix.shard }} needs: [preflight] if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' }} - runs-on: blacksmith-4vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 strategy: fail-fast: false @@ -398,7 +398,7 @@ jobs: if: | needs.resolve_commit.result == 'success' && (github.event_name != 'schedule' || needs.resolve_commit.outputs.has_changes == 'true') - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 5 # Previews build any branch, but production admits only main and v* tags. # The empty name runs previews with no environment, so their Clerk and relay @@ -520,7 +520,7 @@ jobs: # this runs alongside preflight. See the condition comment there. needs: [preflight, relay_public_config] if: ${{ !cancelled() && needs.preflight.result == 'success' && needs.relay_public_config.result == 'success' }} - runs-on: blacksmith-32vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 30 env: T3CODE_CLERK_PUBLISHABLE_KEY: ${{ needs.relay_public_config.outputs.clerk_publishable_key }} @@ -627,7 +627,7 @@ jobs: clerk_cli_oauth_client_id: ${{ needs.relay_public_config.outputs.clerk_cli_oauth_client_id }} relay_url: ${{ needs.relay_public_config.outputs.relay_url }} label: macOS arm64 - runner: blacksmith-12vcpu-macos-26 + runner: macos-26 platform: mac target: dmg arch: arm64 @@ -651,7 +651,7 @@ jobs: clerk_cli_oauth_client_id: ${{ needs.relay_public_config.outputs.clerk_cli_oauth_client_id }} relay_url: ${{ needs.relay_public_config.outputs.relay_url }} label: macOS x64 - runner: blacksmith-12vcpu-macos-26 + runner: macos-26 platform: mac target: dmg arch: x64 @@ -677,7 +677,7 @@ jobs: clerk_cli_oauth_client_id: ${{ needs.relay_public_config.outputs.clerk_cli_oauth_client_id }} relay_url: ${{ needs.relay_public_config.outputs.relay_url }} label: Linux x64 - runner: blacksmith-32vcpu-ubuntu-2404 + runner: ubuntu-24.04 platform: linux target: AppImage arch: x64 @@ -703,7 +703,7 @@ jobs: clerk_cli_oauth_client_id: ${{ needs.relay_public_config.outputs.clerk_cli_oauth_client_id }} relay_url: ${{ needs.relay_public_config.outputs.relay_url }} label: Linux arm64 - runner: blacksmith-16vcpu-ubuntu-2404-arm + runner: ubuntu-24.04-arm platform: linux target: AppImage arch: arm64 @@ -731,7 +731,7 @@ jobs: clerk_cli_oauth_client_id: ${{ needs.relay_public_config.outputs.clerk_cli_oauth_client_id }} relay_url: ${{ needs.relay_public_config.outputs.relay_url }} label: Windows x64 - runner: blacksmith-16vcpu-ubuntu-2404 + runner: ubuntu-24.04 verify_runner: windows-2025 platform: win target: nsis @@ -755,7 +755,7 @@ jobs: clerk_cli_oauth_client_id: ${{ needs.relay_public_config.outputs.clerk_cli_oauth_client_id }} relay_url: ${{ needs.relay_public_config.outputs.relay_url }} label: Windows arm64 - runner: blacksmith-16vcpu-ubuntu-2404 + runner: ubuntu-24.04 verify_runner: windows-11-arm platform: win target: nsis @@ -782,7 +782,7 @@ jobs: desktop_win_arm64, ] if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' && needs.relay_public_config.result == 'success' && needs.quality.result == 'success' && needs.test.result == 'success' && needs.test_web.result == 'success' && needs.test_server.result == 'success' && needs.desktop_mac_arm64.result == 'success' && needs.desktop_mac_x64.result == 'success' && needs.desktop_linux_x64.result == 'success' && needs.desktop_linux_arm64.result == 'success' && needs.desktop_win_x64.result == 'success' && needs.desktop_win_arm64.result == 'success' }} - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 30 permissions: contents: write @@ -1012,7 +1012,7 @@ jobs: name: Publish CLI to npm needs: [preflight, release] if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' && needs.release.result == 'success' }} - runs-on: ubuntu-24.04 # blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 # ubuntu-24.04 timeout-minutes: 15 permissions: contents: read @@ -1062,7 +1062,7 @@ jobs: name: Build hosted web app needs: [preflight, relay_public_config] if: ${{ !cancelled() && needs.preflight.result == 'success' && needs.relay_public_config.result == 'success' && needs.preflight.outputs.release_channel != 'preview' }} - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 outputs: deployment_url: ${{ steps.deploy.outputs.deployment_url }} @@ -1163,7 +1163,7 @@ jobs: name: Deploy hosted web app needs: [preflight, build_web, release, publish_cli] if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' && needs.build_web.result == 'success' && needs.release.result == 'success' && needs.publish_cli.result == 'success' && needs.preflight.outputs.release_channel != 'preview' }} - runs-on: blacksmith-2vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 env: DEPLOYMENT_URL: ${{ needs.build_web.outputs.deployment_url }} @@ -1235,7 +1235,7 @@ jobs: name: Build marketing site needs: [preflight] if: ${{ !cancelled() && needs.preflight.result == 'success' && needs.preflight.outputs.release_channel == 'nightly' }} - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 outputs: deployment_url: ${{ steps.deploy.outputs.deployment_url }} @@ -1302,7 +1302,7 @@ jobs: name: Deploy marketing site needs: [preflight, build_marketing, release] if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' && needs.build_marketing.result == 'success' && needs.release.result == 'success' && needs.preflight.outputs.release_channel == 'nightly' }} - runs-on: blacksmith-2vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 env: DEPLOYMENT_URL: ${{ needs.build_marketing.outputs.deployment_url }} @@ -1345,7 +1345,7 @@ jobs: name: Finalize release if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' && needs.release.result == 'success' && needs.preflight.outputs.release_channel == 'stable' }} needs: [preflight, release] - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 steps: - id: app_token @@ -1426,7 +1426,7 @@ jobs: needs.deploy_web.result == 'success' && (needs.finalize.result == 'success' || needs.finalize.result == 'skipped') needs: [preflight, relay_public_config, release, deploy_web, finalize] - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 steps: - name: Checkout diff --git a/.github/workflows/web-preview.yml b/.github/workflows/web-preview.yml index 4b3f8952d503d..dfbc7389ea3e8 100644 --- a/.github/workflows/web-preview.yml +++ b/.github/workflows/web-preview.yml @@ -37,7 +37,7 @@ jobs: github.event.pull_request.head.repo.full_name == github.repository && contains(github.event.pull_request.labels.*.name, 'preview:web') && (github.event.action != 'labeled' || github.event.label.name == 'preview:web') - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 timeout-minutes: 10 env: VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} diff --git a/.github/workflows/windows-tests.yml b/.github/workflows/windows-tests.yml index d9da4762c8318..ccb72afb180f9 100644 --- a/.github/workflows/windows-tests.yml +++ b/.github/workflows/windows-tests.yml @@ -27,7 +27,7 @@ jobs: test: name: Test (${{ inputs.package || 'all non-server' }}) # Forks do not inherit upstream's Blacksmith runner integration. - runs-on: ${{ github.repository == 'pingdotgg/t3code' && 'blacksmith-8vcpu-windows-2025' || 'windows-2025' }} + runs-on: ${{ github.repository == 'pingdotgg/t3code' && 'windows-2025' || 'windows-2025' }} timeout-minutes: 45 steps: - name: Checkout