Espn API Integration Test workflow (cwendt94/espn-api)
The Espn API Integration Test workflow from cwendt94/espn-api, explained and optimized by Latchkey.
CI health: C - fair
Point runs-on at Latchkey and get caching, job timeouts, self-healing for flaky steps, and up to 58% lower cost, applied automatically.
What it does
This is the Espn API Integration Test workflow from the cwendt94/espn-api 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: Espn API Integration Test
on:
schedule:
# run once a day
- cron: '0 0 * * *'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: '3.8'
- name: Install dependencies
run: python setup.py install
- name: Test integration
run: |
python3 setup.py nosetests --tests tests/football/integration/
python3 setup.py nosetests --tests tests/basketball/integration/
python3 setup.py nosetests --tests tests/hockey/integration/
python3 setup.py nosetests --tests tests/baseball/integration/The same workflow, on Latchkey
Estimated ~20% faster on cache hits, plus fewer wasted runs and a safer supply chain. Added and changed lines are highlighted.
name: Espn API Integration Test on: schedule: # run once a day - cron: '0 0 * * *' jobs: build: timeout-minutes: 30 runs-on: latchkey-small steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v3 with: cache: 'pip' python-version: '3.8' - name: Install dependencies run: python setup.py install - name: Test integration run: | python3 setup.py nosetests --tests tests/football/integration/ python3 setup.py nosetests --tests tests/basketball/integration/ python3 setup.py nosetests --tests tests/hockey/integration/ python3 setup.py nosetests --tests tests/baseball/integration/
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. - Cache dependency installs on the setup step so they are served from cache.
- 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.