Repository navigation
ci: route CI jobs to org self-hosted Pi 4 runners #24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🔎 Supported by static analysis
🏁 Script executed:
Repository: RobotX-Workshops/tello-sim
Length of output: 8707
🌐 Web query:
actionlint self-hosted-runner labels configuration .github/actionlint.yaml custom labels💡 Result:
To configure custom labels for self-hosted runners in actionlint, you must define them in an actionlint configuration file, typically located at.github/actionlint.yaml or.github/actionlint.yml [1][2][3]. When actionlint encounters a label in a workflow's runs-on field that it does not recognize as a standard GitHub-hosted runner, it triggers a runner-label error [4][5][6]. To resolve this for custom self-hosted runner labels, add a self-hosted-runner section to your configuration file [1][4]. Configuration Example: #.github/actionlint.yaml self-hosted-runner: labels: - my-custom-label-1 - my-custom-label-2 - linux-gpu-* Actionlint supports glob patterns for these labels, enabling flexible matching for dynamic runner labels [1][2][7]. The glob support uses the standard Go path.Match syntax [1][2][5]. If you are running actionlint via command line, you can generate a default configuration file using the -init-config flag [1][2]. If you are using actionlint through a CI integration (such as reviewdog/action-actionlint), ensure your step correctly points to your configuration file using the appropriate flags (e.g., -config-file) if it is not in the default.github/ location [8].
Citations:
🌐 Web query:
GitHub Actions self-hosted runner labels runs-on all labels must match custom label documentation💡 Result:
When you specify multiple labels in the runs-on array for a GitHub Actions workflow, the matching logic is cumulative [1][2][3]. This means a self-hosted runner must possess all of the labels specified in the array to be eligible to process the job [1][4]. For example, if you define the runner as: runs-on: [self-hosted, linux, x64, gpu] The job will only be routed to a self-hosted runner that has all four of those labels assigned to it [1][2][3]. Key points regarding this behavior: - Cumulative Logic: The system uses "AND" logic for the labels listed in the array [2][5]. It does not support "OR" (either/or) logic natively through the standard runs-on label array [5]. - Matching Groups and Labels: If you combine a runner group with specific labels, the runner must belong to that group AND possess all the specified labels to be eligible for the job [1][2][4]. - Default Labels: By default, self-hosted runners are assigned labels based on their OS and architecture (e.g., self-hosted, linux, x64) [1]. When using multiple labels, these default labels are treated the same as custom labels, meaning the runner must include them if you list them in your runs-on requirement [1]. - Queuing: If no runner is found that matches all specified labels, the job will remain queued until a matching runner becomes available or the job times out after 24 hours [6].
Citations:
Add
rpito the actionlint runner-label configuration.The three jobs use
rpi, but the repository has no.github/actionlint.yaml. Addrpiunderself-hosted-runner.labels. Also ensure an online runner hasself-hosted,linux,ARM64, andrpi; otherwise GitHub can leave these jobs queued.🧰 Tools
🪛 actionlint (1.7.12)
[error] 103-103: label "rpi" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2025-vs2026", "windows-2022", "windows-11-arm", "ubuntu-slim", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "macos-latest", "macos-latest-xlarge", "macos-latest-large", "macos-26-intel", "macos-26-xlarge", "macos-26-large", "macos-26", "macos-15-intel", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xlarge", "macos-14-large", "macos-14", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
(runner-label)
📍 Affects 2 files
.github/workflows/bot-blocking-gate.yml#L103-L103(this comment).github/workflows/claude-code-review.yml#L16-L16.github/workflows/claude-code-review.yml#L36-L36🤖 Prompt for AI Agents
Sources: MCP tools, Linters/SAST tools
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🔎 Supported by static analysis
🏁 Script executed:
Repository: RobotX-Workshops/tello-sim
Length of output: 48854
🏁 Script executed:
Repository: RobotX-Workshops/tello-sim
Length of output: 2178
Declare and validate the self-hosted runner toolchain.
The gate invokes
gh,jq, andgrep -P, but it does not install or check them. If the[self-hosted, linux, ARM64, rpi]image lacks one command, the job exits before posting theBot Blocking Gatecheck-run. Add a preflight check or document the required image.🧰 Tools
🪛 actionlint (1.7.12)
[error] 103-103: label "rpi" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2025-vs2026", "windows-2022", "windows-11-arm", "ubuntu-slim", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "macos-latest", "macos-latest-xlarge", "macos-latest-large", "macos-26-intel", "macos-26-xlarge", "macos-26-large", "macos-26", "macos-15-intel", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xlarge", "macos-14-large", "macos-14", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
(runner-label)
🤖 Prompt for AI Agents