Signature Assistant workflow (scratchfoundation/scratch-blocks)
The Signature Assistant workflow from scratchfoundation/scratch-blocks, explained and optimized by Latchkey.
CI health: A - excellent
Point runs-on at Latchkey and get job timeouts, self-healing for flaky steps, and up to 58% lower cost, applied automatically.
What it does
This is the Signature Assistant workflow from the scratchfoundation/scratch-blocks repository, a real project running GitHub Actions. It is shown here with attribution under its Apache-2.0 license.
Below, Latchkey shows a faster, safer version produced by its optimization engine.
The workflow
name: 'Signature Assistant'
on:
issue_comment:
types: [created]
pull_request_target:
types: [opened, closed, synchronize]
permissions:
actions: write
contents: read
pull-requests: write
statuses: write
jobs:
CLA-Assistant:
if: github.event_name == 'pull_request_target' ||
(
github.event.comment.body == 'recheck' ||
github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA'
)
runs-on: ubuntu-latest
steps:
- uses: scratchfoundation/scratch-agreements/.github/actions/cla-allowlist@56b5881fe70ad0d74ada0ec51f52ff720be869c0 # main
id: cla-allowlist
- name: 'CLA Assistant'
uses: contributor-assistant/github-action@ca4a40a7d1004f18d9960b404b97e5f30a505a08 # v2.6.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# the below token should have repo scope and must be manually added by you in the repository's secrets
PERSONAL_ACCESS_TOKEN: ${{ secrets.GHA_AGREEMENTS_PAT }}
with:
remote-organization-name: 'scratchfoundation'
remote-repository-name: 'scratch-agreements'
path-to-signatures: 'signatures/version1/cla.json'
path-to-document: 'https://github.com/scratchfoundation/scratch-agreements/blob/main/CLA.md'
branch: 'main'
allowlist: ${{ steps.cla-allowlist.outputs.allowlist }}
The same workflow, on Latchkey
Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.
name: 'Signature Assistant' on: issue_comment: types: [created] pull_request_target: types: [opened, closed, synchronize] permissions: actions: write contents: read pull-requests: write statuses: write jobs: CLA-Assistant: timeout-minutes: 30 if: github.event_name == 'pull_request_target' || ( github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA' ) runs-on: latchkey-small steps: - uses: scratchfoundation/scratch-agreements/.github/actions/cla-allowlist@56b5881fe70ad0d74ada0ec51f52ff720be869c0 # main id: cla-allowlist - name: 'CLA Assistant' uses: contributor-assistant/github-action@ca4a40a7d1004f18d9960b404b97e5f30a505a08 # v2.6.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # the below token should have repo scope and must be manually added by you in the repository's secrets PERSONAL_ACCESS_TOKEN: ${{ secrets.GHA_AGREEMENTS_PAT }} with: remote-organization-name: 'scratchfoundation' remote-repository-name: 'scratch-agreements' path-to-signatures: 'signatures/version1/cla.json' path-to-document: 'https://github.com/scratchfoundation/scratch-agreements/blob/main/CLA.md' branch: 'main' allowlist: ${{ steps.cla-allowlist.outputs.allowlist }}
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. - 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.