compiler-explorer / compiler-explorer/infra

Update self-hosted runner runs-on labels for bidirectional label matching (ce-ci v8)

Open Beginner friendly
#2,212 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
434
Forks
429
Avg merge
4d 21h
Merged PRs (30d)
38

Description

## Background

The CI runner infra (compiler-explorer/ce-ci) will migrate its label matching from the deprecated `exactMatch` to `bidirectionalLabelMatch` when it upgrades the terraform-aws-github-runner module to **v8** (deprecated in v7.9.0; realistic removal ≈ late 2026). Tracking issue: **compiler-explorer/ce-ci#20**.

`bidirectionalLabelMatch` requires a workflow's `runs-on` to be an **exact** set match with the runner's full registered labels — which include auto-added `self-hosted` + `` + `` on top of our custom labels. Some of our workflows currently use **short `runs-on`** forms that rely on the old subset behaviour and **will stop matching** once ce-ci flips the flag.

## Affected workflows (need `runs-on` widened)

Only the **builder** workflows are affected — they use short forms:

| File | Line | Current `runs-on` | Must become |
|---|---|---|---|
| `.github/workflows/adhoc-command-lin-builder.yml` | 23 | `[lin-builder]` | `[self-hosted, ce, lin-builder, linux, x64]` |
| `.github/workflows/lin-lib-build.yaml` | 38 | `['lin-builder']` | `[self-hosted, ce, lin-builder, linux, x64]` |
| `.github/workflows/win-lib-build.yaml` | 29 | `['win-builder']` | `[self-hosted, ce, win-builder, windows, x64]` |

## Already fine (full label set — no change needed)

- `install.yml` → `[self-hosted, ce, linux, x64, small]`
- `consolidate.yml` → `[self-hosted, ce, linux, x64, medium]`
- `bespoke-build-arm64.yaml` → `[self-hosted, ce, linux, arm64]`
- `bespoke-build.yaml` / `adhoc-command.yml` → dynamic, resolve to full `[self-hosted, ce, linux, x64(, small|medium)]`

## Coordination

**Must ship together with the ce-ci flag flip** (compiler-explorer/ce-ci#20) — landing either side alone breaks builder jobs. After both apply, verify with the `adhoc-command-lin-builder` / `win-lib-build` workflows that runners still pick up jobs.

Contributor guide

Open the contributing guide

Research direction

Start with the three affected workflows: .github/workflows/adhoc-command-lin-builder.yml, lin-lib-build.yaml, and win-lib-build.yaml, then compare their runs-on labels with the full labels listed in the issue. Update the three builder definitions and coordinate with compiler-explorer/ce-ci#20; done means the flag flip and workflow changes land together and adhoc-command-lin-builder and win-lib-build runs are picked up by the intended runners.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, terraform
Domain
ci-cd, infrastructure
Issue type
Refactor
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.