CI/CD (pull request) workflow (carpentries/amy)
The CI/CD (pull request) workflow from carpentries/amy, explained and optimized by Latchkey.
C
CI health: C - fair
Run this on Latchkey for self-healing, caching, and up to 58% lower cost.
Grade your own workflow free or run it on Latchkey →What it does
This is the CI/CD (pull request) workflow from the carpentries/amy 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)
# CI/CD for pull requests
name: CI/CD (pull request)
on: pull_request
jobs:
accessibility:
uses: ./.github/workflows/incl_accessibility.yml
lint:
uses: ./.github/workflows/incl_linter.yml
test:
uses: ./.github/workflows/incl_test.yml
needs: lint
build_container:
uses: ./.github/workflows/incl_build_container_image.yml
needs: test
# build_deploy:
# needs: test
# environment: staging
# uses: ./.github/workflows/incl_build_and_deploy.yml
The same workflow, on Latchkey
Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.
# CI/CD for pull requests name: CI/CD (pull request) on: pull_request concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: accessibility: timeout-minutes: 30 uses: ./.github/workflows/incl_accessibility.yml lint: timeout-minutes: 30 uses: ./.github/workflows/incl_linter.yml test: timeout-minutes: 30 uses: ./.github/workflows/incl_test.yml needs: lint build_container: timeout-minutes: 30 uses: ./.github/workflows/incl_build_container_image.yml needs: test # build_deploy: # needs: test # environment: staging # uses: ./.github/workflows/incl_build_and_deploy.yml
What changed
- 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 4 jobs per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.