Skip to content
Latchkey

CalVer Automation workflow (wizarrrr/wizarr)

The CalVer Automation workflow from wizarrrr/wizarr, explained and optimized by Latchkey.

F

CI health: F - at risk

Point runs-on at Latchkey and get caching, run de-duplication, job timeouts, SHA-pinned actions, self-healing for flaky steps, and up to 58% lower cost, applied automatically.

Grade your own workflow free or run it on Latchkey →
Source: wizarrrr/wizarr.github/workflows/calver-automation.ymlLicense MITView source

What it does

This is the CalVer Automation workflow from the wizarrrr/wizarr 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: CalVer Automation

on:
  push:
    branches:
      - main
      - 'release/**'  # Trigger on release branch pushes to update PR description
  workflow_dispatch:
    inputs:
      dry-run:
        description: 'Run in dry-run mode (no PR creation)'
        type: boolean
        default: false

env:
  PYTHON_VERSION: '3.12'

jobs:
  release-please:
    runs-on: ubuntu-24.04
    if: github.repository_owner == 'wizarrrr'
    permissions:
      contents: write
      pull-requests: write
      
    outputs:
      release-created: ${{ steps.release.outputs.release-created }}
      tag-name: ${{ steps.release.outputs.tag-name }}
      pr-number: ${{ steps.release.outputs.pr-number }}
    
    steps:
      - name: Checkout
        uses: actions/checkout@v7
        with:
          token: ${{ secrets.RELEASE_PLEASE_TOKEN || secrets.GITHUB_TOKEN }}
          fetch-depth: 0  # Need full history for changelog

      - name: Install uv
        uses: astral-sh/setup-uv@v7

      - name: Set up Python
        uses: actions/setup-python@v6
        with:
          python-version-file: pyproject.toml

      - name: Generate CalVer Release
        id: release
        uses: ./.github/actions/calver-automation
        with:
          token: ${{ secrets.RELEASE_PLEASE_TOKEN || secrets.GITHUB_TOKEN }}
          dry-run: ${{ inputs.dry-run || 'false' }}
      
      - name: Summary
        if: steps.release.outputs.release-created == 'true'
        run: |
          echo "🚀 **Release PR Created!**" >> $GITHUB_STEP_SUMMARY
          echo "" >> $GITHUB_STEP_SUMMARY
          echo "- **Version**: ${{ steps.release.outputs.tag-name }}" >> $GITHUB_STEP_SUMMARY
          echo "- **Release PR**: #${{ steps.release.outputs.pr-number }}" >> $GITHUB_STEP_SUMMARY
          echo "" >> $GITHUB_STEP_SUMMARY
          echo "## Workflow" >> $GITHUB_STEP_SUMMARY
          echo "1. **Review and merge Release PR** when ready" >> $GITHUB_STEP_SUMMARY
          echo "2. **GitHub Release** created automatically" >> $GITHUB_STEP_SUMMARY
          echo "3. **Docker images** built and pushed with :latest and version tags" >> $GITHUB_STEP_SUMMARY

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: CalVer Automation
 
on:
  push:
    branches:
      - main
      - 'release/**'  # Trigger on release branch pushes to update PR description
  workflow_dispatch:
    inputs:
      dry-run:
        description: 'Run in dry-run mode (no PR creation)'
        type: boolean
        default: false
 
env:
  PYTHON_VERSION: '3.12'
 
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
 
jobs:
  release-please:
    timeout-minutes: 30
    runs-on: latchkey-small
    if: github.repository_owner == 'wizarrrr'
    permissions:
      contents: write
      pull-requests: write
      
    outputs:
      release-created: ${{ steps.release.outputs.release-created }}
      tag-name: ${{ steps.release.outputs.tag-name }}
      pr-number: ${{ steps.release.outputs.pr-number }}
    
    steps:
      - name: Checkout
        uses: actions/checkout@v7
        with:
          token: ${{ secrets.RELEASE_PLEASE_TOKEN || secrets.GITHUB_TOKEN }}
          fetch-depth: 0  # Need full history for changelog
 
      - name: Install uv
        uses: astral-sh/setup-uv@v7
 
      - name: Set up Python
        uses: actions/setup-python@v6
        with:
          cache: 'pip'
          python-version-file: pyproject.toml
 
      - name: Generate CalVer Release
        id: release
        uses: ./.github/actions/calver-automation
        with:
          token: ${{ secrets.RELEASE_PLEASE_TOKEN || secrets.GITHUB_TOKEN }}
          dry-run: ${{ inputs.dry-run || 'false' }}
      
      - name: Summary
        if: steps.release.outputs.release-created == 'true'
        run: |
          echo "🚀 **Release PR Created!**" >> $GITHUB_STEP_SUMMARY
          echo "" >> $GITHUB_STEP_SUMMARY
          echo "- **Version**: ${{ steps.release.outputs.tag-name }}" >> $GITHUB_STEP_SUMMARY
          echo "- **Release PR**: #${{ steps.release.outputs.pr-number }}" >> $GITHUB_STEP_SUMMARY
          echo "" >> $GITHUB_STEP_SUMMARY
          echo "## Workflow" >> $GITHUB_STEP_SUMMARY
          echo "1. **Review and merge Release PR** when ready" >> $GITHUB_STEP_SUMMARY
          echo "2. **GitHub Release** created automatically" >> $GITHUB_STEP_SUMMARY
          echo "3. **Docker images** built and pushed with :latest and version tags" >> $GITHUB_STEP_SUMMARY
 

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 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.

Actions used in this workflow