[ Web Proxy ]
URL:
Viewing: https://python-version-patch-pr.kitgrid.dev/docs/workflows/ [Back]  [Original]

Workflows CPython Patch PR Action docs
CPython Patch PR Action logo [CPython Patch PR Action logo] CPython Patch PR Action Workflows Configuration Examples Troubleshooting GitHub

Documentation

Workflows

Reference docs for the CPython Patch PR Action.

main

Workflow Recipes

Use these examples to wire the action into your automation. Each snippet is self-contained and safe to copy into .github/workflows/*.yml.

1. Weekly Scheduled Bump

name: CPython Patch Bot
on:
  schedule:
    - cron: '0 9 * * 1'
  workflow_dispatch:
permissions:
  contents: write
  pull-requests: write
jobs:
  bump-python:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Bump CPython patch versions
        uses: casperkristiansson/python-version-patch-pr@v1
        with:
          track: '3.12'
          automerge: false
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

2. Dry-Run Preview with Manual Approval

jobs:
  preview:
    runs-on: ubuntu-latest
    outputs:
      skipped_reason: ${{ steps.bump.outputs.skipped_reason }}
      files_changed: ${{ steps.bump.outputs.files_changed }}
    steps:
      - uses: actions/checkout@v4
      - id: bump
        uses: casperkristiansson/python-version-patch-pr@v1
        with:
          dry_run: true

Pair this with a second job that checks needs.preview.outputs.skipped_reason == '' before applying the change manually or via a follow-up workflow.

3. Security-Gated Rollout

jobs:
  bump-python:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: casperkristiansson/python-version-patch-pr@v1
        with:
          security_keywords: |
            CVE
            security
          include_prerelease: false

The job exits early unless CPython release notes mention one of the keywords. Combine with Slack/Teams notifications to alert security teams when a keyword is found.

4. Matrix Fan-Out for Targeted Tests

jobs:
  bump:
    runs-on: ubuntu-latest
    outputs:
      change_matrix: ${{ steps.bump.outputs.change_matrix }}
      skipped_reason: ${{ steps.bump.outputs.skipped_reason }}
    steps:
      - uses: actions/checkout@v4
      - id: bump
        uses: casperkristiansson/python-version-patch-pr@v1
  targeted-tests:
    needs: bump
    if: ${{ needs.bump.outputs.skipped_reason == '' }}
    strategy:
      matrix: ${{ fromJSON(needs.bump.outputs.change_matrix) }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run focused tests
        run: npm test -- ${{ matrix.file }}

change_matrix turns each touched file into {file, new_version}. Use it to run targeted CI or send file-specific notifications.

5. Handling Workflow File Edits

Workflow files require a PAT with the workflow scope. Configure a secret (PATCH_PR_TOKEN) and map it to GITHUB_TOKEN:

- uses: casperkristiansson/python-version-patch-pr@v1
  env:
    GITHUB_TOKEN: ${{ secrets.PATCH_PR_TOKEN }}

If you do not supply a PAT, the action skips workflow files and sets skipped_reason=workflow_permission_required when nothing else needs updates. Watch the logs for a list of skipped files.

6. Multi-Track Repositories

Split paths per track to avoid multiple_tracks_detected:

jobs:
  bump-311:
    steps:
      - uses: actions/checkout@v4
      - uses: casperkristiansson/python-version-patch-pr@v1
        with:
          track: '3.11'
          paths: |
            Dockerfile
            services/runtime-311/**
  bump-312:
    steps:
      - uses: actions/checkout@v4
      - uses: casperkristiansson/python-version-patch-pr@v1
        with:
          track: '3.12'
          paths: |
            .github/workflows/**/*.yml
            services/runtime-312/**

Each job scopes discovery to its slice of the repo, ensuring only the intended pins update.

7. External Pull Request Mode (Inspection Only)

- id: bump
  uses: casperkristiansson/python-version-patch-pr@v1
  with:
    use_external_pr_action: true

This currently behaves like dry_run: you get new_version, files_changed, and change_matrix, but no files are changed. Use this mode for inventory or dashboards until branch/title/body outputs are added.

8. Referencing the Example Repositories

The examples/ directory ships fully documented templates:

Copy the template that matches your governance model, then follow the README inside each example to wire badges and repository metadata.

Edit this page

On this page


Web Proxy Viewer  |  New URL  |  Original Page