Skip to content
Latchkey

Build workflow (vkbottle/vkbottle)

The Build workflow from vkbottle/vkbottle, explained and optimized by Latchkey.

B

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 →
Source: vkbottle/vkbottle.github/workflows/build.ymlLicense MITView source

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

workflow (.yml)
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

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.

Actions used in this workflow