diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6356db2a..cd438cc7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,7 +28,7 @@ jobs: # Cheap repository-wide checks run once, not once per matrix leg, and fail the run before any runner-heavy job starts. lint: name: compliance and icons - runs-on: ubuntu-latest + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && fromJSON('["self-hosted","Linux","X64","yiazmat-linux-x64-emulated"]') || 'ubuntu-latest' }} steps: - uses: actions/checkout@v7 with: @@ -47,9 +47,12 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, windows-latest, macos-latest] + # Windows legs are skipped under TRACE_CI_RUNNERS=self-hosted: no Windows runner exists on the local machine. + os: ${{ fromJSON(vars.TRACE_CI_RUNNERS == 'self-hosted' && '["ubuntu-latest","macos-latest"]' || '["ubuntu-latest","windows-latest","macos-latest"]') }} runtime: [MonoGame, FNA] - runs-on: ${{ matrix.os }} + # Under TRACE_CI_RUNNERS=self-hosted (docs/self-hosted-runners.md in Trace Arena) Linux legs run on the local x64 runner and + # macOS legs on the local macOS runner. + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && (matrix.os == 'macos-latest' && fromJSON('["self-hosted","macOS","ARM64"]') || fromJSON('["self-hosted","Linux","X64","yiazmat-linux-x64-emulated"]')) || matrix.os }} env: FORMA_RUNTIME: ${{ matrix.runtime }} steps: @@ -245,7 +248,7 @@ jobs: run: SvgBackend=Skia bash scripts/check-catalog-smoke.sh parity: - runs-on: ubuntu-latest + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && fromJSON('["self-hosted","Linux","X64","yiazmat-linux-x64-emulated"]') || 'ubuntu-latest' }} steps: - uses: actions/checkout@v7 with: @@ -258,7 +261,7 @@ jobs: run: bash scripts/check-release-api.sh package-consumers: - runs-on: ubuntu-latest + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && fromJSON('["self-hosted","Linux","X64","yiazmat-linux-x64-emulated"]') || 'ubuntu-latest' }} steps: - uses: actions/checkout@v7 with: @@ -287,7 +290,7 @@ jobs: if-no-files-found: error nativeaot: - runs-on: macos-14 + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && fromJSON('["self-hosted","macOS","ARM64"]') || 'macos-14' }} steps: - uses: actions/checkout@v7 with: @@ -299,7 +302,7 @@ jobs: run: bash scripts/retry.sh make nativeaot thorvg-linux: - runs-on: ubuntu-latest + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && fromJSON('["self-hosted","Linux","X64","yiazmat-linux-x64-emulated"]') || 'ubuntu-latest' }} steps: - uses: actions/checkout@v7 with: @@ -320,7 +323,7 @@ jobs: if-no-files-found: warn thorvg-macos: - runs-on: macos-14 + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && fromJSON('["self-hosted","macOS","ARM64"]') || 'macos-14' }} steps: - uses: actions/checkout@v7 with: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 005d6d6f..192b5713 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -52,7 +52,7 @@ jobs: channel: ${{ steps.context.outputs.channel }} maturity: ${{ steps.context.outputs.maturity }} version: ${{ steps.context.outputs.version }} - runs-on: ubuntu-latest + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && fromJSON('["self-hosted","Linux","X64","yiazmat-linux-x64-emulated"]') || 'ubuntu-latest' }} steps: - uses: actions/checkout@v7 with: @@ -110,7 +110,7 @@ jobs: publish: if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) needs: build - runs-on: ubuntu-latest + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && fromJSON('["self-hosted","Linux","X64","yiazmat-linux-x64-emulated"]') || 'ubuntu-latest' }} permissions: contents: write steps: @@ -158,7 +158,7 @@ jobs: deploy: needs: publish - runs-on: ubuntu-latest + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && fromJSON('["self-hosted","Linux","X64","yiazmat-linux-x64-emulated"]') || 'ubuntu-latest' }} permissions: pages: write id-token: write diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 842958b9..5afa9b5d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ concurrency: jobs: thorvg-linux-native: - runs-on: ubuntu-latest + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && fromJSON('["self-hosted","Linux","X64","yiazmat-linux-x64-emulated"]') || 'ubuntu-latest' }} steps: - uses: actions/checkout@v7 with: @@ -33,7 +33,7 @@ jobs: if-no-files-found: error thorvg-macos-native: - runs-on: macos-14 + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && fromJSON('["self-hosted","macOS","ARM64"]') || 'macos-14' }} steps: - uses: actions/checkout@v7 with: @@ -48,7 +48,7 @@ jobs: package: needs: [thorvg-linux-native, thorvg-macos-native] - runs-on: ubuntu-latest + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && fromJSON('["self-hosted","Linux","X64","yiazmat-linux-x64-emulated"]') || 'ubuntu-latest' }} steps: - uses: actions/checkout@v7 with: @@ -108,7 +108,7 @@ jobs: if-no-files-found: error nativeaot: - runs-on: macos-14 + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && fromJSON('["self-hosted","macOS","ARM64"]') || 'macos-14' }} steps: - uses: actions/checkout@v7 with: @@ -133,7 +133,7 @@ jobs: publish: if: startsWith(github.ref, 'refs/tags/v') needs: [package, nativeaot] - runs-on: ubuntu-latest + runs-on: ${{ vars.TRACE_CI_RUNNERS == 'self-hosted' && fromJSON('["self-hosted","Linux","X64","yiazmat-linux-x64-emulated"]') || 'ubuntu-latest' }} environment: nuget-production permissions: contents: write