From 665addb895ade40a192e9215ef0f16905609fbc7 Mon Sep 17 00:00:00 2001 From: Jesper Terkelsen Date: Mon, 5 Oct 2026 19:02:04 +0200 Subject: [PATCH] chore(workflows): remove Blacksmith runner support ARC is the default runner and nothing builds on Blacksmith any more, so the use-blacksmith-runners input, the converter's Blacksmith mapping, component-build's build-blacksmith job and the Blacksmith actionlint labels go. Callers that opt out of ARC, and events without a repository in the payload, now resolve the GitHub-hosted linux-arm64 runners. Co-Authored-By: Claude Opus 5.5 (1M context) --- .github/actionlint.yaml | 2 - .../actions/runner-size-converter/README.md | 28 +++---- .../actions/runner-size-converter/action.yml | 16 +--- .github/workflows/component-build.yml | 73 +------------------ .github/workflows/component-test-kotlin.yml | 8 +- .github/workflows/component-test-python.yml | 8 +- .github/workflows/deploy-generic-v2.yml | 8 +- .github/workflows/deploy-generic.yml | 8 +- .github/workflows/deploy-kotlin-v2.yml | 9 +-- .github/workflows/deploy-kotlin.yml | 9 +-- .github/workflows/deploy-python.yml | 9 +-- .github/workflows/pull-request-bun.yml | 8 +- .github/workflows/pull-request-kotlin.yml | 8 +- .github/workflows/pull-request-react.yml | 8 +- .github/workflows/sonar-cloud.yml | 8 +- CLAUDE.md | 9 ++- docs/workflow-guide.md | 30 +++----- 17 files changed, 41 insertions(+), 208 deletions(-) diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml index 738e918..3d0104c 100644 --- a/.github/actionlint.yaml +++ b/.github/actionlint.yaml @@ -8,8 +8,6 @@ self-hosted-runner: - linux-arm64-xl - self-hosted-arm64 - self-hosted-arm64-2xl - - blacksmith-4vcpu-ubuntu-2404-arm - - blacksmith-16vcpu-ubuntu-2404-arm - arc-arm64-2cpu-4gb - arc-arm64-4cpu-12gb - arc-arm64-8cpu-24gb diff --git a/.github/actions/runner-size-converter/README.md b/.github/actions/runner-size-converter/README.md index f1ad1fc..d08951b 100644 --- a/.github/actions/runner-size-converter/README.md +++ b/.github/actions/runner-size-converter/README.md @@ -1,10 +1,8 @@ # Runner Size Converter Action A composite action that converts a runner size into an arm64 GitHub runner name. -By default it resolves the Blacksmith arm64 cloud runners; set -`use-blacksmith-runners: false` to resolve the self-hosted `linux-arm64` runners -instead, or `use-arc-runners: true` to resolve the self-hosted ARC runners -(this takes precedence). +With `use-arc-runners: true` it resolves the self-hosted ARC runners; otherwise +it resolves the GitHub-hosted `linux-arm64` larger runners. ## Usage @@ -14,8 +12,7 @@ instead, or `use-arc-runners: true` to resolve the self-hosted ARC runners uses: monta-app/github-workflows/.github/actions/runner-size-converter@main with: runner-size: 'large' - use-blacksmith-runners: true # optional, defaults to true - use-arc-runners: false # optional, defaults to false; wins over use-blacksmith-runners + use-arc-runners: true # optional, defaults to false - name: Use runner runs-on: ${{ steps.runner.outputs.runner-name }} @@ -28,24 +25,21 @@ instead, or `use-arc-runners: true` to resolve the self-hosted ARC runners | Input | Required | Default | Description | |-------|----------|---------|-------------| | `runner-size` | Yes | - | Runner size: `normal` or `large` | -| `use-blacksmith-runners` | No | `true` | Resolve Blacksmith arm64 cloud runners (default). Set to `false` to resolve the self-hosted `linux-arm64` runners | -| `use-arc-runners` | No | `false` | Resolve the self-hosted ARC arm64 runners. Takes precedence over `use-blacksmith-runners` | +| `use-arc-runners` | No | `false` | Resolve the self-hosted ARC arm64 runners (private repositories only). Otherwise the GitHub-hosted `linux-arm64` runners | ## Outputs | Output | Description | |--------|-------------| -| `runner-name` | The converted runner name (e.g., `linux-arm64-xl`) | +| `runner-name` | The converted runner name (e.g., `arc-arm64-4cpu-12gb`) | ## Runner Mapping -| Size | `use-arc-runners` | `use-blacksmith-runners` | Output | -|------|-------------------|--------------------------|--------| -| `normal` | `false` | `false` | `linux-arm64` | -| `large` | `false` | `false` | `linux-arm64-xl` | -| `normal` | `false` | `true` | `blacksmith-4vcpu-ubuntu-2404-arm` | -| `large` | `false` | `true` | `blacksmith-16vcpu-ubuntu-2404-arm` | -| `normal` | `true` | any | `arc-arm64-4cpu-12gb` | -| `large` | `true` | any | `arc-arm64-8cpu-24gb` | +| Size | `use-arc-runners` | Output | +|------|-------------------|--------| +| `normal` | `false` | `linux-arm64` | +| `large` | `false` | `linux-arm64-xl` | +| `normal` | `true` | `arc-arm64-4cpu-12gb` | +| `large` | `true` | `arc-arm64-8cpu-24gb` | In a public repository (`github.event.repository.private == false`) the output is always `ubuntu-24.04-arm`, GitHub's standard arm64 runner, whatever the inputs. ARC is only used in private repositories; when the event has no repository (e.g. `schedule`), the table above applies without ARC. diff --git a/.github/actions/runner-size-converter/action.yml b/.github/actions/runner-size-converter/action.yml index 2971ff0..0b932fe 100644 --- a/.github/actions/runner-size-converter/action.yml +++ b/.github/actions/runner-size-converter/action.yml @@ -6,12 +6,8 @@ inputs: runner-size: description: 'Runner size (normal or large)' required: true - use-blacksmith-runners: - description: 'Run on Blacksmith arm64 cloud runners (default). Set to false to run on the self-hosted linux-arm64 runners' - required: false - default: 'true' use-arc-runners: - description: 'Run on the self-hosted ARC arm64 runners. Takes precedence over use-blacksmith-runners' + description: 'Run on the self-hosted ARC arm64 runners (private repositories only). Otherwise the GitHub-hosted linux-arm64 runners are used' required: false default: 'false' @@ -28,7 +24,6 @@ runs: shell: bash run: | SIZE="${{ inputs.runner-size }}" - USE_BLACKSMITH="${{ inputs.use-blacksmith-runners }}" USE_ARC="${{ inputs.use-arc-runners }}" PRIVATE="${{ github.event.repository.private }}" @@ -52,15 +47,8 @@ runs: else RUNNER_NAME="arc-arm64-4cpu-12gb" fi - elif [ "$USE_BLACKSMITH" = "true" ]; then - # Blacksmith managed arm64 cloud runners - if [ "$SIZE" = "large" ]; then - RUNNER_NAME="blacksmith-16vcpu-ubuntu-2404-arm" - else - RUNNER_NAME="blacksmith-4vcpu-ubuntu-2404-arm" - fi else - # Self-hosted arm64 runners + # GitHub-hosted arm64 larger runners RUNNER_NAME="linux-arm64" if [ "$SIZE" = "large" ]; then RUNNER_NAME="$RUNNER_NAME-xl" diff --git a/.github/workflows/component-build.yml b/.github/workflows/component-build.yml index 70346a9..c7b9174 100644 --- a/.github/workflows/component-build.yml +++ b/.github/workflows/component-build.yml @@ -7,16 +7,11 @@ on: type: string default: 'normal' description: 'Runner size (normal or large)' - use-blacksmith-runners: - required: false - type: boolean - default: true - description: "Run on Blacksmith arm64 cloud runners (default). Set to false to run on the self-hosted linux-arm64 runners." use-arc-runners: required: false type: boolean default: true - description: "Run on the self-hosted ARC arm64 runners (default in private repositories, never used in public ones; takes precedence over use-blacksmith-runners). Builds with docker buildx and the ECR registry layer cache, like the self-hosted path." + description: "Run on the self-hosted ARC arm64 runners (default in private repositories, never used in public ones)." stage: required: true type: string @@ -119,77 +114,11 @@ jobs: uses: monta-app/github-workflows/.github/actions/runner-size-converter@main with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ (inputs.use-arc-runners && github.event.repository.private) }} - # Blacksmith path: build on a Blacksmith arm64 cloud runner. Its sticky-disk builder - # hydrates the layer cache from prior runs, so no registry cache directives are needed. - build-blacksmith: - name: Build (Blacksmith) - needs: setup - if: ${{ inputs.use-blacksmith-runners && !(inputs.use-arc-runners && github.event.repository.private) && github.event.repository.private != false }} - runs-on: ${{ needs.setup.outputs.runner }} - timeout-minutes: 30 - steps: - - name: Checkout - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6 - with: - ref: ${{ inputs.git-sha || github.sha }} - - name: Configure AWS credentials via assumed role - uses: aws-actions/configure-aws-credentials@e7f100cf4c008499ea8adda475de1042d6975c7b # v6 - with: - role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/ecr-put-image - role-session-name: push-new-image-to-${{ inputs.service-identifier }}-${{inputs.stage}} - aws-region: ${{ inputs.region }} - - name: Login to Amazon ECR - id: login-ecr - uses: aws-actions/amazon-ecr-login@fa648b43de3d4d023bcb3f89ed6940096949c419 # v2 - - name: Docker meta - id: meta - uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6 - with: - images: ${{ steps.login-ecr.outputs.registry }}/${{ inputs.ecr-repository-name || format('{0}-{1}', inputs.service-identifier, inputs.stage) }} - tags: | - type=raw,value=${{ inputs.git-sha || github.sha }} - type=raw,value=latest - - name: Set up Blacksmith Docker builder - uses: useblacksmith/setup-docker-builder@ab5c1da94f53f5cd75c1038092aa276dddfccbba # v1 - - name: Build and push - id: build - uses: useblacksmith/build-push-action@fb9e3e6a9299c78462bfadd0d93352c316adc9b8 # v2 - env: - BUILDX_NO_DEFAULT_ATTESTATIONS: 1 - with: - context: . - file: ./${{ inputs.docker-file-name }} - push: true - platforms: linux/arm64 - # provenance/sbom off (with BUILDX_NO_DEFAULT_ATTESTATIONS=1 above) so the - # pushed tag is a plain single-arch image, not a manifest list. - provenance: false - sbom: false - build-args: | - ${{ inputs.additional-build-args }} - labels: | - GITHUB_RUN_ID=${{ github.run_id }} - ${{ steps.meta.outputs.labels }} - tags: ${{ steps.meta.outputs.tags }} - secrets: | - GHL_USERNAME=${{ secrets.GHL_USERNAME }} - GHL_PASSWORD=${{ secrets.GHL_PASSWORD }} - SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} - FARO_API_KEY=${{ secrets.FARO_API_KEY }} - AWS_CDN_ACCESS_KEY_ID=${{ secrets.AWS_CDN_ACCESS_KEY_ID }} - AWS_CDN_SECRET_ACCESS_KEY=${{ secrets.AWS_CDN_SECRET_ACCESS_KEY }} - LOKALISE_TOKEN=${{ secrets.LOKALISE_TOKEN }} - LOKALISE_PROJECT_ID=${{ secrets.LOKALISE_PROJECT_ID }} - NEXT_SERVER_ACTIONS_ENCRYPTION_KEY=${{ secrets.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY }} - # Self-hosted path: build on a self-hosted linux-arm64 or ARC runner with docker buildx - # and a registry-backed BuildKit cache in the ECR repo. build-self-hosted: name: Build (self-hosted) needs: setup - if: ${{ !inputs.use-blacksmith-runners || (inputs.use-arc-runners && github.event.repository.private) || github.event.repository.private == false }} runs-on: ${{ needs.setup.outputs.runner }} timeout-minutes: 30 env: diff --git a/.github/workflows/component-test-kotlin.yml b/.github/workflows/component-test-kotlin.yml index 02b4502..d6b8b25 100644 --- a/.github/workflows/component-test-kotlin.yml +++ b/.github/workflows/component-test-kotlin.yml @@ -6,16 +6,11 @@ on: required: false type: string description: 'Runner size for the component-runner-size-converter' - use-blacksmith-runners: - required: false - type: boolean - default: true - description: "Run on Blacksmith arm64 cloud runners (default). Set to false to run on the self-hosted linux-arm64 runners." use-arc-runners: required: false type: boolean default: false - description: "Run on the self-hosted ARC arm64 runners (takes precedence over use-blacksmith-runners)." + description: "Run on the self-hosted ARC arm64 runners." service-name: required: false type: string @@ -65,7 +60,6 @@ jobs: uses: monta-app/github-workflows/.github/actions/runner-size-converter@main with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ inputs.use-arc-runners }} test: name: Test diff --git a/.github/workflows/component-test-python.yml b/.github/workflows/component-test-python.yml index 2d05a8c..6d964c4 100644 --- a/.github/workflows/component-test-python.yml +++ b/.github/workflows/component-test-python.yml @@ -6,16 +6,11 @@ on: required: false type: string description: 'Runner size for the component-runner-size-converter' - use-blacksmith-runners: - required: false - type: boolean - default: true - description: "Run on Blacksmith arm64 cloud runners (default). Set to false to run on the self-hosted linux-arm64 runners." use-arc-runners: required: false type: boolean default: true - description: "Run on the self-hosted ARC arm64 runners (default in private repositories, never used in public ones; takes precedence over use-blacksmith-runners). Set to false to opt out." + description: "Run on the self-hosted ARC arm64 runners (default in private repositories, never used in public ones). Set to false to run on the GitHub-hosted linux-arm64 runners." service-name: required: false type: string @@ -64,7 +59,6 @@ jobs: uses: monta-app/github-workflows/.github/actions/runner-size-converter@main with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ (inputs.use-arc-runners && github.event.repository.private) }} test: name: Test diff --git a/.github/workflows/deploy-generic-v2.yml b/.github/workflows/deploy-generic-v2.yml index e6ee3cc..fd284bb 100644 --- a/.github/workflows/deploy-generic-v2.yml +++ b/.github/workflows/deploy-generic-v2.yml @@ -8,16 +8,11 @@ on: type: string description: "Runner to use for the job (normal, or large)" default: "normal" - use-blacksmith-runners: - required: false - type: boolean - default: true - description: "Run on Blacksmith arm64 cloud runners (default). Set to false to run on the self-hosted linux-arm64 runners." use-arc-runners: required: false type: boolean default: true - description: "Run on the self-hosted ARC arm64 runners (default in private repositories, never used in public ones; takes precedence over use-blacksmith-runners). Set to false to opt out." + description: "Run on the self-hosted ARC arm64 runners (default in private repositories, never used in public ones). Set to false to run on the GitHub-hosted linux-arm64 runners." # DEPRECATED (no-op): all builds and CI run on arm64. Retained for backwards # compatibility with callers still passing it; the value is ignored and this # input will be removed in a future release. @@ -169,7 +164,6 @@ jobs: uses: ./.github/workflows/component-build.yml with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ (inputs.use-arc-runners && github.event.repository.private) }} stage: ${{ inputs.stage }} service-name: ${{ inputs.service-name }} diff --git a/.github/workflows/deploy-generic.yml b/.github/workflows/deploy-generic.yml index 26e8878..ea29094 100644 --- a/.github/workflows/deploy-generic.yml +++ b/.github/workflows/deploy-generic.yml @@ -8,16 +8,11 @@ on: type: string description: "Runner to use for the job (normal, or large)" default: "normal" - use-blacksmith-runners: - required: false - type: boolean - default: true - description: "Run on Blacksmith arm64 cloud runners (default). Set to false to run on the self-hosted linux-arm64 runners." use-arc-runners: required: false type: boolean default: true - description: "Run on the self-hosted ARC arm64 runners (default in private repositories, never used in public ones; takes precedence over use-blacksmith-runners). Set to false to opt out." + description: "Run on the self-hosted ARC arm64 runners (default in private repositories, never used in public ones). Set to false to run on the GitHub-hosted linux-arm64 runners." # DEPRECATED (no-op): all builds and CI run on arm64. Retained for backwards # compatibility with callers still passing it; the value is ignored and this # input will be removed in a future release. @@ -160,7 +155,6 @@ jobs: uses: ./.github/workflows/component-build.yml with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ (inputs.use-arc-runners && github.event.repository.private) }} stage: ${{ inputs.stage }} service-name: ${{ inputs.service-name }} diff --git a/.github/workflows/deploy-kotlin-v2.yml b/.github/workflows/deploy-kotlin-v2.yml index c382099..755b088 100644 --- a/.github/workflows/deploy-kotlin-v2.yml +++ b/.github/workflows/deploy-kotlin-v2.yml @@ -8,16 +8,11 @@ on: type: string description: "Runner to use for the job (normal, or large)" default: "normal" - use-blacksmith-runners: - required: false - type: boolean - default: true - description: "Run on Blacksmith arm64 cloud runners (default). Set to false to run on the self-hosted linux-arm64 runners." use-arc-runners: required: false type: boolean default: true - description: "Run on the self-hosted ARC arm64 runners (default; takes precedence over use-blacksmith-runners). Never used in public repositories: the ARC runner group rejects them, so they keep the Blacksmith/GitHub-hosted runners. Applies to the test, image build and service profile jobs." + description: "Run on the self-hosted ARC arm64 runners (default). Never used in public repositories: the ARC runner group rejects them, so they keep the GitHub-hosted runners. Applies to the test, image build and service profile jobs." # DEPRECATED (no-op): all builds and CI run on arm64. Retained for backwards # compatibility with callers still passing it; the value is ignored and this # input will be removed in a future release. @@ -249,7 +244,6 @@ jobs: uses: ./.github/workflows/component-test-kotlin.yml with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ (inputs.use-arc-runners && github.event.repository.private) }} service-name: ${{ inputs.service-name }} service-emoji: ${{ inputs.service-emoji }} @@ -264,7 +258,6 @@ jobs: uses: ./.github/workflows/component-build.yml with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ (inputs.use-arc-runners && github.event.repository.private) }} stage: ${{ inputs.stage }} service-name: ${{ inputs.service-name }} diff --git a/.github/workflows/deploy-kotlin.yml b/.github/workflows/deploy-kotlin.yml index c49b94d..dc55b3c 100644 --- a/.github/workflows/deploy-kotlin.yml +++ b/.github/workflows/deploy-kotlin.yml @@ -8,16 +8,11 @@ on: type: string description: "Runner to use for the job (normal, or large)" default: "normal" - use-blacksmith-runners: - required: false - type: boolean - default: true - description: "Run on Blacksmith arm64 cloud runners (default). Set to false to run on the self-hosted linux-arm64 runners." use-arc-runners: required: false type: boolean default: true - description: "Run on the self-hosted ARC arm64 runners (default; takes precedence over use-blacksmith-runners). Never used in public repositories: the ARC runner group rejects them, so they keep the Blacksmith/GitHub-hosted runners. Applies to the test, image build and service profile jobs." + description: "Run on the self-hosted ARC arm64 runners (default). Never used in public repositories: the ARC runner group rejects them, so they keep the GitHub-hosted runners. Applies to the test, image build and service profile jobs." # DEPRECATED (no-op): all builds and CI run on arm64. Retained for backwards # compatibility with callers still passing it; the value is ignored and this # input will be removed in a future release. @@ -237,7 +232,6 @@ jobs: uses: ./.github/workflows/component-test-kotlin.yml with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ (inputs.use-arc-runners && github.event.repository.private) }} service-name: ${{ inputs.service-name }} service-emoji: ${{ inputs.service-emoji }} @@ -252,7 +246,6 @@ jobs: uses: ./.github/workflows/component-build.yml with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ (inputs.use-arc-runners && github.event.repository.private) }} stage: ${{ inputs.stage }} service-name: ${{ inputs.service-name }} diff --git a/.github/workflows/deploy-python.yml b/.github/workflows/deploy-python.yml index f8d64bf..3555ec3 100644 --- a/.github/workflows/deploy-python.yml +++ b/.github/workflows/deploy-python.yml @@ -8,16 +8,11 @@ on: type: string description: "Runner to use for the job (normal, or large)" default: "normal" - use-blacksmith-runners: - required: false - type: boolean - default: true - description: "Run on Blacksmith arm64 cloud runners (default). Set to false to run on the self-hosted linux-arm64 runners." use-arc-runners: required: false type: boolean default: true - description: "Run on the self-hosted ARC arm64 runners (default in private repositories, never used in public ones; takes precedence over use-blacksmith-runners). Set to false to opt out." + description: "Run on the self-hosted ARC arm64 runners (default in private repositories, never used in public ones). Set to false to run on the GitHub-hosted linux-arm64 runners." # DEPRECATED (no-op): all builds and CI run on arm64. Retained for backwards # compatibility with callers still passing it; the value is ignored and this # input will be removed in a future release. @@ -120,7 +115,6 @@ jobs: uses: ./.github/workflows/component-test-python.yml with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ (inputs.use-arc-runners && github.event.repository.private) }} service-name: ${{ inputs.service-name }} service-emoji: ${{ inputs.service-emoji }} @@ -132,7 +126,6 @@ jobs: uses: ./.github/workflows/component-build.yml with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ (inputs.use-arc-runners && github.event.repository.private) }} stage: ${{ inputs.stage }} service-name: ${{ inputs.service-name }} diff --git a/.github/workflows/pull-request-bun.yml b/.github/workflows/pull-request-bun.yml index d4d73da..01f8c02 100644 --- a/.github/workflows/pull-request-bun.yml +++ b/.github/workflows/pull-request-bun.yml @@ -7,16 +7,11 @@ on: type: string description: "Runner to use for the job (normal, or large)" default: "normal" - use-blacksmith-runners: - required: false - type: boolean - default: true - description: "Run on Blacksmith arm64 cloud runners (default). Set to false to run on the self-hosted linux-arm64 runners." use-arc-runners: required: false type: boolean default: true - description: "Run on the self-hosted ARC arm64 runners (default in private repositories, never used in public ones; takes precedence over use-blacksmith-runners). Set to false to opt out." + description: "Run on the self-hosted ARC arm64 runners (default in private repositories, never used in public ones). Set to false to run on the GitHub-hosted linux-arm64 runners." # DEPRECATED (no-op): all builds and CI run on arm64. Retained for backwards # compatibility with callers still passing it; the value is ignored and this # input will be removed in a future release. @@ -74,7 +69,6 @@ jobs: uses: monta-app/github-workflows/.github/actions/runner-size-converter@main with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ (inputs.use-arc-runners && github.event.repository.private) }} lint-build-test: name: Lint & Build & Test diff --git a/.github/workflows/pull-request-kotlin.yml b/.github/workflows/pull-request-kotlin.yml index cb2285d..b25e8c0 100644 --- a/.github/workflows/pull-request-kotlin.yml +++ b/.github/workflows/pull-request-kotlin.yml @@ -7,16 +7,11 @@ on: type: string description: "Runner to use for the job (normal, or large)" default: "normal" - use-blacksmith-runners: - required: false - type: boolean - default: true - description: "Run on Blacksmith arm64 cloud runners (default). Set to false to run on the self-hosted linux-arm64 runners." use-arc-runners: required: false type: boolean default: true - description: "Run on the self-hosted ARC arm64 runners (default; takes precedence over use-blacksmith-runners). Never used in public repositories: the ARC runner group rejects them, so they keep the Blacksmith/GitHub-hosted runners. SonarQube is reached in-cluster without Tailscale, and caches go to S3 when the GH_ACTION_ACCESS_KEY_ID and GH_ACTION_SECRET_ACCESS_KEY secrets are passed (GitHub cache otherwise). Set to false to opt out." + description: "Run on the self-hosted ARC arm64 runners (default). Never used in public repositories: the ARC runner group rejects them, so they keep the GitHub-hosted runners. SonarQube is reached in-cluster without Tailscale, and caches go to S3 when the GH_ACTION_ACCESS_KEY_ID and GH_ACTION_SECRET_ACCESS_KEY secrets are passed (GitHub cache otherwise). Set to false to run on the GitHub-hosted linux-arm64 runners." # DEPRECATED (no-op): all builds and CI run on arm64. Retained for backwards # compatibility with callers still passing it; the value is ignored and this # input will be removed in a future release. @@ -117,7 +112,6 @@ jobs: uses: monta-app/github-workflows/.github/actions/runner-size-converter@main with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ (inputs.use-arc-runners && github.event.repository.private) }} check-migration-order: name: Check Migration Order diff --git a/.github/workflows/pull-request-react.yml b/.github/workflows/pull-request-react.yml index a4d9ee4..0ede8b1 100644 --- a/.github/workflows/pull-request-react.yml +++ b/.github/workflows/pull-request-react.yml @@ -7,16 +7,11 @@ on: type: string description: "Runner to use for the job (normal, or large)" default: "normal" - use-blacksmith-runners: - required: false - type: boolean - default: true - description: "Run on Blacksmith arm64 cloud runners (default). Set to false to run on the self-hosted linux-arm64 runners." use-arc-runners: required: false type: boolean default: true - description: "Run on the self-hosted ARC arm64 runners (default in private repositories, never used in public ones; takes precedence over use-blacksmith-runners). Set to false to opt out." + description: "Run on the self-hosted ARC arm64 runners (default in private repositories, never used in public ones). Set to false to run on the GitHub-hosted linux-arm64 runners." # DEPRECATED (no-op): all builds and CI run on arm64. Retained for backwards # compatibility with callers still passing it; the value is ignored and this # input will be removed in a future release. @@ -80,7 +75,6 @@ jobs: uses: monta-app/github-workflows/.github/actions/runner-size-converter@main with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ (inputs.use-arc-runners && github.event.repository.private) }} lint-build-test: name: Lint & Build & Test diff --git a/.github/workflows/sonar-cloud.yml b/.github/workflows/sonar-cloud.yml index d53e443..fd8caa1 100644 --- a/.github/workflows/sonar-cloud.yml +++ b/.github/workflows/sonar-cloud.yml @@ -7,16 +7,11 @@ on: type: string description: "Runner to use for the job (normal, or large)" default: "normal" - use-blacksmith-runners: - required: false - type: boolean - default: true - description: "Run on Blacksmith arm64 cloud runners (default). Set to false to run on the self-hosted linux-arm64 runners." use-arc-runners: required: false type: boolean default: true - description: "Run on the self-hosted ARC arm64 runners (default; takes precedence over use-blacksmith-runners). Never used in public repositories: the ARC runner group rejects them, so they keep the Blacksmith/GitHub-hosted runners. SonarQube is reached in-cluster without Tailscale, and caches go to S3 when the GH_ACTION_ACCESS_KEY_ID and GH_ACTION_SECRET_ACCESS_KEY secrets are passed (GitHub cache otherwise). Set to false to opt out." + description: "Run on the self-hosted ARC arm64 runners (default). Never used in public repositories: the ARC runner group rejects them, so they keep the GitHub-hosted runners. SonarQube is reached in-cluster without Tailscale, and caches go to S3 when the GH_ACTION_ACCESS_KEY_ID and GH_ACTION_SECRET_ACCESS_KEY secrets are passed (GitHub cache otherwise). Set to false to run on the GitHub-hosted linux-arm64 runners." # DEPRECATED (no-op): all builds and CI run on arm64. Retained for backwards # compatibility with callers still passing it; the value is ignored and this # input will be removed in a future release. @@ -77,7 +72,6 @@ jobs: uses: monta-app/github-workflows/.github/actions/runner-size-converter@main with: runner-size: ${{ inputs.runner-size }} - use-blacksmith-runners: ${{ inputs.use-blacksmith-runners }} use-arc-runners: ${{ (inputs.use-arc-runners && github.event.repository.private) }} sonar-cloud: name: SonarQube Analysis diff --git a/CLAUDE.md b/CLAUDE.md index a518afc..ed530f8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,9 +1,12 @@ # Claude Code Notes ## Last Documentation Update -- **Date**: 2026-10-01 -- **Latest SHA**: a455757 (check for newer commits) -- **Changes**: Removed the `code-coverage-kotlin.yml` workflow (and with it `monta-app/push-kover-prometheus-action`) +- **Date**: 2026-10-05 +- **Latest SHA**: 4491679 (check for newer commits) +- **Changes**: Removed Blacksmith runner support + +## Recent Changes (2026-10-05) +1. **Blacksmith runner support removed**: the `use-blacksmith-runners` input is gone from every workflow and from `runner-size-converter`, `component-build` no longer has the `build-blacksmith` job (`build-self-hosted` always runs), and the Blacksmith labels are out of `actionlint.yaml`. The converter now resolves ARC (`use-arc-runners: true` in a private repo), `ubuntu-24.04-arm` (public repo), or else the GitHub-hosted `linux-arm64` / `linux-arm64-xl`; that last case covers callers that opt out of ARC and events without a repository in the payload (`schedule`), which previously fell back to Blacksmith. Callers that still pass `use-blacksmith-runners` fail at startup; changelog-monorepo and service-productops dropped it first. Repos pinned to an older github-workflows SHA keep that SHA's behaviour, and the seven pinned to `f0866ab` (Blacksmith by default) were bumped to `4491679`. ## Recent Changes (2026-10-01) 1. **`migration-naming-pattern` on `pull-request-kotlin.yml`**: forwarded to `check-migration-order`'s `naming-pattern`. Its default duplicates the action's, because a composite action receives an empty `with:` value as `''` rather than falling back to its own default, and the script requires a non-empty pattern; keep the two defaults in sync. diff --git a/docs/workflow-guide.md b/docs/workflow-guide.md index f7bc598..330d876 100644 --- a/docs/workflow-guide.md +++ b/docs/workflow-guide.md @@ -109,8 +109,7 @@ jobs: | `service-emoji` | Yes | - | Emoji for Slack notifications | | `service-identifier` | Yes | - | Service identifier (e.g., "ocpp", "vehicle") | | `runner-size` | No | "normal" | Runner size: "normal" or "large" | -| `use-blacksmith-runners` | No | true | Run on Blacksmith arm64 cloud runners (default). Set to false to run on self-hosted linux-arm64 | -| `use-arc-runners` | No | true | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); the default in private repos, never used in public repos. Takes precedence over `use-blacksmith-runners`. Builds with docker buildx and the ECR registry layer cache. Dockerfile `RUN --mount=type=cache` contents (e.g. `/root/.gradle`) are kept between builds: in S3 when the `GH_ACTION_*` secrets are passed, the GitHub cache otherwise. | +| `use-arc-runners` | No | true | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); the default in private repos, never used in public repos. Builds with docker buildx and the ECR registry layer cache. Dockerfile `RUN --mount=type=cache` contents (e.g. `/root/.gradle`) are kept between builds: in S3 when the `GH_ACTION_*` secrets are passed, the GitHub cache otherwise. | | `region` | No | "eu-west-1" | AWS region | | `docker-file-name` | No | "Dockerfile" | Dockerfile name | | `additional-build-args` | No | - | Additional Docker build arguments | @@ -251,8 +250,7 @@ jobs: | Input | Required | Default | Description | |-------|----------|---------|-------------| | `runner-size` | No | - | Runner size for the job | -| `use-blacksmith-runners` | No | true | Run on Blacksmith arm64 cloud runners (default). Set to false to run on self-hosted linux-arm64 | -| `use-arc-runners` | No | false | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); takes precedence over `use-blacksmith-runners`. Set `java-version` to the Gradle toolchain: the ARC image has no preinstalled JDK. | +| `use-arc-runners` | No | false | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`). Set `java-version` to the Gradle toolchain: the ARC image has no preinstalled JDK. | | `service-name` | No | - | Display name for Slack | | `service-emoji` | No | - | Emoji for Slack | | `gradle-module` | No | - | Gradle module name | @@ -303,8 +301,7 @@ jobs: | Input | Required | Default | Description | |-------|----------|---------|-------------| | `runner-size` | No | - | Runner size for the job | -| `use-blacksmith-runners` | No | true | Run on Blacksmith arm64 cloud runners (default). Set to false to run on self-hosted linux-arm64 | -| `use-arc-runners` | No | true | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); the default in private repos and never used in public repos, which run on `ubuntu-24.04-arm`. Takes precedence over `use-blacksmith-runners`; set to `false` to opt out. | +| `use-arc-runners` | No | true | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); the default in private repos and never used in public repos, which run on `ubuntu-24.04-arm`. Set to `false` to use the GitHub-hosted `linux-arm64` runners. | | `service-name` | No | - | Display name for Slack | | `service-emoji` | No | - | Emoji for Slack | | `python-version` | No | "3.13" | Python version | @@ -367,8 +364,7 @@ This conditional logic ensures the workflow continues properly even when optiona | Input | Required | Default | Description | |-------|----------|---------|-------------| | `runner-size` | No | "normal" | Runner size: "normal" or "large" | -| `use-blacksmith-runners` | No | true | Run on Blacksmith arm64 cloud runners (default). Set to false to run on self-hosted linux-arm64 | -| `use-arc-runners` | No | true | Run the test, image build and service profile jobs on the self-hosted ARC arm64 runners (the service profile job always uses `arc-arm64-4cpu-12gb`); the default in private repos (never used in public repos), and takes precedence over `use-blacksmith-runners`; set to `false` to opt out. Set `java-version` to the Gradle toolchain: the ARC image has no preinstalled JDK. | +| `use-arc-runners` | No | true | Run the test, image build and service profile jobs on the self-hosted ARC arm64 runners (the service profile job always uses `arc-arm64-4cpu-12gb`); the default in private repos (never used in public repos); set to `false` to use the GitHub-hosted `linux-arm64` runners. Set `java-version` to the Gradle toolchain: the ARC image has no preinstalled JDK. | | `stage` | Yes | - | Deployment stage: "dev", "staging", or "production" | | `service-name` | Yes | - | Human-readable service name (e.g., "Charging Service") | | `service-emoji` | Yes | - | Emoji to identify the service in Slack notifications | @@ -480,8 +476,7 @@ jobs: | Input | Required | Default | Description | |-------|----------|---------|-------------| | `runner-size` | No | "normal" | Runner size ("normal" or "large") | -| `use-blacksmith-runners` | No | true | Run on Blacksmith arm64 cloud runners (default). Set to false to run on self-hosted linux-arm64 | -| `use-arc-runners` | No | true | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); the default in private repos and never used in public repos, which run on `ubuntu-24.04-arm`. Takes precedence over `use-blacksmith-runners`; set to `false` to opt out. | +| `use-arc-runners` | No | true | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); the default in private repos and never used in public repos, which run on `ubuntu-24.04-arm`. Set to `false` to use the GitHub-hosted `linux-arm64` runners. | | `stage` | **Yes** | - | Deployment stage (dev/staging/production) | | `service-name` | **Yes** | - | Service display name | | `service-emoji` | **Yes** | - | Service emoji | @@ -557,8 +552,7 @@ jobs: | Input | Required | Default | Description | |-------|----------|---------|-------------| | `runner-size` | No | "normal" | Runner size: "normal" or "large" | -| `use-blacksmith-runners` | No | true | Run on Blacksmith arm64 cloud runners (default). Set to false to run on self-hosted linux-arm64 | -| `use-arc-runners` | No | true | Run the test, image build and service profile jobs on the self-hosted ARC arm64 runners (the service profile job always uses `arc-arm64-4cpu-12gb`); the default in private repos (never used in public repos), and takes precedence over `use-blacksmith-runners`; set to `false` to opt out. Set `java-version` to the Gradle toolchain: the ARC image has no preinstalled JDK. | +| `use-arc-runners` | No | true | Run the test, image build and service profile jobs on the self-hosted ARC arm64 runners (the service profile job always uses `arc-arm64-4cpu-12gb`); the default in private repos (never used in public repos); set to `false` to use the GitHub-hosted `linux-arm64` runners. Set `java-version` to the Gradle toolchain: the ARC image has no preinstalled JDK. | | `stage` | Yes | - | Deployment stage: "dev", "staging", or "production" | | `service-name` | Yes | - | Human-readable service name (e.g., "Charging Service") | | `service-emoji` | Yes | - | Emoji to identify the service in Slack notifications | @@ -808,8 +802,7 @@ jobs: | Input | Required | Default | Description | |-------|----------|---------|-------------| | `runner-size` | No | "normal" | Runner size | -| `use-blacksmith-runners` | No | true | Run on Blacksmith arm64 cloud runners (default). Set to false to run on self-hosted linux-arm64 | -| `use-arc-runners` | No | true | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); the default in private repos (never used in public repos), and takes precedence over `use-blacksmith-runners`; set to `false` to opt out. SonarQube is reached in-cluster without Tailscale, and the Gradle and Sonar caches go to S3 (`monta-github-ci-cache`) when the `GH_ACTION_*` secrets are passed, the GitHub cache otherwise. | +| `use-arc-runners` | No | true | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); the default in private repos (never used in public repos); set to `false` to use the GitHub-hosted `linux-arm64` runners. SonarQube is reached in-cluster without Tailscale, and the Gradle and Sonar caches go to S3 (`monta-github-ci-cache`) when the `GH_ACTION_*` secrets are passed, the GitHub cache otherwise. | | `java-version` | No | "21" | Java version | | `gradle-module` | No | - | Gradle module name | | `kover-report-path` | No | "build/reports/kover/report.xml" | Kover report path | @@ -867,8 +860,7 @@ jobs: | Input | Required | Default | Description | |-------|----------|---------|-------------| | `runner-size` | No | "normal" | Runner size | -| `use-blacksmith-runners` | No | true | Run on Blacksmith arm64 cloud runners (default). Set to false to run on self-hosted linux-arm64 | -| `use-arc-runners` | No | true | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); the default in private repos and never used in public repos, which run on `ubuntu-24.04-arm`. Takes precedence over `use-blacksmith-runners`; set to `false` to opt out. | +| `use-arc-runners` | No | true | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); the default in private repos and never used in public repos, which run on `ubuntu-24.04-arm`. Set to `false` to use the GitHub-hosted `linux-arm64` runners. | | `bun-version` | No | "latest" | Bun version | | `working-directory` | No | "." | Frontend code directory | | `build-timeout-minutes` | No | 15 | Build timeout | @@ -914,8 +906,7 @@ The workflow automatically reports code coverage if your project generates LCOV | Input | Required | Default | Description | |-------|----------|---------|-------------| | `runner-size` | No | "normal" | Runner size | -| `use-blacksmith-runners` | No | true | Run on Blacksmith arm64 cloud runners (default). Set to false to run on self-hosted linux-arm64 | -| `use-arc-runners` | No | true | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); the default in private repos and never used in public repos, which run on `ubuntu-24.04-arm`. Takes precedence over `use-blacksmith-runners`; set to `false` to opt out. | +| `use-arc-runners` | No | true | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); the default in private repos and never used in public repos, which run on `ubuntu-24.04-arm`. Set to `false` to use the GitHub-hosted `linux-arm64` runners. | | `node-version` | No | "lts/jod" | Node.js version | | `pnpm-version` | No | "10" | pnpm version | | `working-directory` | No | "." | Frontend code directory | @@ -1005,8 +996,7 @@ jobs: | Input | Required | Default | Description | |-------|----------|---------|-------------| | `runner-size` | No | "normal" | Runner size | -| `use-blacksmith-runners` | No | true | Run on Blacksmith arm64 cloud runners (default). Set to false to run on self-hosted linux-arm64 | -| `use-arc-runners` | No | true | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); the default in private repos (never used in public repos), and takes precedence over `use-blacksmith-runners`; set to `false` to opt out. SonarQube is reached in-cluster without Tailscale, and the Gradle and Sonar caches go to S3 (`monta-github-ci-cache`) when the `GH_ACTION_*` secrets are passed, the GitHub cache otherwise. | +| `use-arc-runners` | No | true | Run on the self-hosted ARC arm64 runners (`normal` → `arc-arm64-4cpu-12gb`, `large` → `arc-arm64-8cpu-24gb`); the default in private repos (never used in public repos); set to `false` to use the GitHub-hosted `linux-arm64` runners. SonarQube is reached in-cluster without Tailscale, and the Gradle and Sonar caches go to S3 (`monta-github-ci-cache`) when the `GH_ACTION_*` secrets are passed, the GitHub cache otherwise. | | `java-version` | No | "21" | Java version | | `gradle-module` | No | - | Gradle module name | | `sonar-non-blocking` | No | true | When true, a failure of the Tailscale bring-up or the SonarQube analysis step does not fail the job (tests still gate). Set to false to make SonarQube a hard gate. |