Build workflow (vkbottle/vkbottle)
The Build workflow from vkbottle/vkbottle, explained and optimized by Latchkey.
CI health: B - good
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 Build workflow from the vkbottle/vkbottle 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: Build
on:
workflow_call:
inputs:
os:
description: "Operating system"
required: true
type: string
python-version:
description: "Python version"
required: true
type: string
defaults:
run:
shell: bash
jobs:
lint-and-test:
uses: ./.github/workflows/lint-and-test.yml
with:
os: ${{ inputs.os }}
python-version: ${{ inputs.python-version }}
build:
needs: lint-and-test
runs-on: ${{ inputs.os }}
steps:
- uses: asottile/workflows/.github/actions/fast-checkout@v1.11.0
- name: Install poetry and dependencies
uses: ./.github/actions/install-dependencies
with:
os: ${{ inputs.os }}
python-version: ${{ inputs.python-version }}
- name: Build wheel
run: poetry build
- name: Get short SHA
run: echo "SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7)" >> $GITHUB_ENV
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
name: vkbottle-${{ inputs.python-version }}-${{ runner.os }}-${{ env.SHORT_SHA }}
path: dist/*.whl
The same workflow, on Latchkey
Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.
name: Build on: workflow_call: inputs: os: description: "Operating system" required: true type: string python-version: description: "Python version" required: true type: string defaults: run: shell: bash jobs: lint-and-test: timeout-minutes: 30 uses: ./.github/workflows/lint-and-test.yml with: os: ${{ inputs.os }} python-version: ${{ inputs.python-version }} build: timeout-minutes: 30 needs: lint-and-test runs-on: ${{ inputs.os }} steps: - uses: asottile/workflows/.github/actions/fast-checkout@v1.11.0 - name: Install poetry and dependencies uses: ./.github/actions/install-dependencies with: os: ${{ inputs.os }} python-version: ${{ inputs.python-version }} - name: Build wheel run: poetry build - name: Get short SHA run: echo "SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7)" >> $GITHUB_ENV - name: Upload wheel uses: actions/upload-artifact@v4 with: name: vkbottle-${{ inputs.python-version }}-${{ runner.os }}-${{ env.SHORT_SHA }} path: dist/*.whl
What changed
- 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 2 jobs per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.