Blocked PR Check workflow (mochajs/mocha)
The Blocked PR Check workflow from mochajs/mocha, explained and optimized by Latchkey.
C
CI health: C - fair
Point runs-on at Latchkey and get run de-duplication, job timeouts, self-healing for flaky steps, and up to 58% lower cost, applied automatically.
What it does
This is the Blocked PR Check workflow from the mochajs/mocha repository, a real project running GitHub Actions. It is shown here with attribution under its MIT license.
Below, Latchkey shows a faster, safer version produced by its optimization engine.
The workflow
workflow (.yml)
name: Blocked PR Check
on:
pull_request:
branches:
- main
types: [opened, reopened, synchronize, labeled, unlabeled]
workflow_dispatch:
inputs:
pr:
description: "PR ID"
required: true
type: string
permissions:
contents: read
pull-requests: read
jobs:
not-blocked:
name: not-blocked
runs-on: ubuntu-latest
steps:
- name: 'Verify "status: blocked" label is not applied'
if: "github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'status: blocked')"
run: |
echo "::error::This PR has the 'status: blocked' label and cannot be merged until that label is removed."
exit 1
- name: 'Verify "status: blocked" label is not applied (manual runs)'
if: "github.event_name == 'workflow_dispatch'"
env:
GH_TOKEN: ${{ github.token }}
PR: ${{ inputs.pr }}
run: |
labels=$(gh pr view "$PR" --repo "$GITHUB_REPOSITORY" --json labels --jq '.labels[].name')
if echo "$labels" | grep -qx 'status: blocked'; then
echo "::error::PR #$PR has the 'status: blocked' label and cannot be merged until that label is removed."
exit 1
fi
echo "PR #$PR is not blocked."
The same workflow, on Latchkey
Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.
name: Blocked PR Check on: pull_request: branches: - main types: [opened, reopened, synchronize, labeled, unlabeled] workflow_dispatch: inputs: pr: description: "PR ID" required: true type: string permissions: contents: read pull-requests: read concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: not-blocked: timeout-minutes: 30 name: not-blocked runs-on: latchkey-small steps: - name: 'Verify "status: blocked" label is not applied' if: "github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'status: blocked')" run: | echo "::error::This PR has the 'status: blocked' label and cannot be merged until that label is removed." exit 1 - name: 'Verify "status: blocked" label is not applied (manual runs)' if: "github.event_name == 'workflow_dispatch'" env: GH_TOKEN: ${{ github.token }} PR: ${{ inputs.pr }} run: | labels=$(gh pr view "$PR" --repo "$GITHUB_REPOSITORY" --json labels --jq '.labels[].name') if echo "$labels" | grep -qx 'status: blocked'; then echo "::error::PR #$PR has the 'status: blocked' label and cannot be merged until that label is removed." exit 1 fi echo "PR #$PR is not blocked."
What changed
- Run on Latchkey managed runners with one line (
runs-on), which apply the fixes below automatically and self-heal transient failures. This example useslatchkey-small; pick the runner size that fits the job. - Cancel superseded runs when a branch or PR gets a newer push.
- Add a job timeout so a hung step cannot burn hours of runner time.
This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.