Continuous Integration workflow (epsy/clize)
The Continuous Integration workflow from epsy/clize, explained and optimized by Latchkey.
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 Continuous Integration workflow from the epsy/clize 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
name: Continuous Integration
on:
push:
branches:
- 'master'
tags:
- '*'
pull_request:
types:
- 'opened'
- 'synchronize'
workflow_dispatch:
schedule:
# Schedule every Saturday at 00:30 UTC
- cron: '30 0 * * 6'
jobs:
python-ci:
uses: epsy/python-workflows/.github/workflows/python-ci.yaml@main
with:
package-folder: clize
python-windows-ci:
name: "Run tests (Windows)"
runs-on: 'windows-latest'
continue-on-error: true
steps:
- uses: epsy/python-workflows/install-tox@main
with:
python-version: "3.10"
- name: Test with tox
uses: epsy/python-workflows/tox-ci@main
with:
tox-args: ""
python-test-args: "-m unittest"
- name: Verify that tox 'test' env ran
run: cat ./tox-proof-test
shell: bash
mypy:
name: "Run mypy on typed example"
runs-on: 'ubuntu-latest'
steps:
- uses: epsy/python-workflows/install-tox@main
with:
python-version: "3.10"
- name: Run mypy with tox
uses: epsy/python-workflows/tox-ci@main
with:
tox-args: -e typecheck
python-test-args: examples/typed_cli.py
problem-matcher: mypy
The same workflow, on Latchkey
Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.
name: Continuous Integration on: push: branches: - 'master' tags: - '*' pull_request: types: - 'opened' - 'synchronize' workflow_dispatch: schedule: # Schedule every Saturday at 00:30 UTC - cron: '30 0 * * 6' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: python-ci: timeout-minutes: 30 uses: epsy/python-workflows/.github/workflows/python-ci.yaml@main with: package-folder: clize python-windows-ci: timeout-minutes: 30 name: "Run tests (Windows)" runs-on: 'windows-latest' continue-on-error: true steps: - uses: epsy/python-workflows/install-tox@main with: python-version: "3.10" - name: Test with tox uses: epsy/python-workflows/tox-ci@main with: tox-args: "" python-test-args: "-m unittest" - name: Verify that tox 'test' env ran run: cat ./tox-proof-test shell: bash mypy: timeout-minutes: 30 name: "Run mypy on typed example" runs-on: 'ubuntu-latest' steps: - uses: epsy/python-workflows/install-tox@main with: python-version: "3.10" - name: Run mypy with tox uses: epsy/python-workflows/tox-ci@main with: tox-args: -e typecheck python-test-args: examples/typed_cli.py problem-matcher: mypy
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.
1 third-party action is referenced by a movable tag. Pin it to the commit SHA (Latchkey resolves and applies this automatically) so a repointed tag cannot change what runs.
This workflow runs 3 jobs per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.