Skip to main content

GitHub Actions Deprecation Preflight

Read-only scanner for GitHub Actions workflow files, local JavaScript action metadata, and Markdown workflow snippets. It is meant to catch CI migration risks before they become broken builds or surprise release blockers.

Use it when a repository is preparing for GitHub Actions action-major upgrades, Node runtime changes, artifact/cache migrations, or runner-image cleanup.

What this catches

Current v1 rules flag or review:

  • retired/deprecated artifact actions: actions/upload-artifact@v3, actions/download-artifact@v3;
  • older action majors that often need migration review: actions/cache@v3, actions/checkout@v3, actions/setup-node@v3;
  • local JavaScript actions using old runtimes such as runs.using: node16;
  • local JavaScript actions using node20 as a low-severity future runtime review signal;
  • workflow snippets inside Markdown docs, not only .github/workflows/*.yml.

It is intentionally narrow: this is a preflight checklist/scanner, not an automatic migration tool.

60-second quick start

python3 -m pip install github-actions-deprecation-preflight
gha-deprecation-preflight . --format markdown --output gha-deprecation-report.md
gha-deprecation-preflight . --format json --output gha-deprecation-report.json
gha-deprecation-preflight . --fail-on-severity high

Short alias:

gha-deprecation-preflight path/to/repo --min-severity high

PyPI: https://pypi.org/project/github-actions-deprecation-preflight/

Example: failing workflow → finding → fix

Risky workflow snippet:

jobs:
  build:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v3
      - uses: actions/cache@v3
        with:
          path: ~/.npm
          key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
      - run: npm ci && npm test
      - uses: actions/upload-artifact@v3
        with:
          name: test-output
          path: test-results/

Scanner finding excerpt:

- high `upload-artifact-v3`
  - Signal: `- uses: actions/upload-artifact@v3`
  - Why: upload-artifact v3 is retired/deprecated; workflows should move to the current major.
  - Fix: Upgrade to actions/upload-artifact@v4 and review changed artifact behavior, overwrite/merge assumptions, and retention settings.

Safer migration direction:

      - uses: actions/cache@v4
        with:
          path: ~/.npm
          key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
      - uses: actions/upload-artifact@v4
        with:
          name: test-output
          path: test-results/
          if-no-files-found: warn

Review current example fixtures and generated reports:

CI usage

See docs/CI_USAGE.md for report-only, high-risk gate, and scoped rollout examples.

Minimal report-only GitHub Actions step:

- name: GitHub Actions deprecation preflight
  run: |
    python -m pip install github-actions-deprecation-preflight
    gha-deprecation-preflight . --format markdown --output gha-deprecation-report.md

Try from a clone

python3 scanner.py examples
python3 scanner.py examples --format json
python3 scanner.py examples --output report.md
python3 scanner.py examples --fail-on-severity high
python3 scanner.py examples --min-severity high
python3 scanner.py examples --only-rule upload-artifact-v3
python3 scanner.py --list-rules
python3 scanner.py --list-rules --format json
python3 scanner.py examples --ignore-rule local-action-node20-review

Example output:

# GitHub Actions Deprecation Preflight

Scanned files: 6
Active rules: 7
Findings: 13

Intended workflow

  1. Run the scanner at a repository root.
  2. Review high-severity findings first, especially retired artifact actions and old local JavaScript runtimes.
  3. Use --min-severity high for a high-risk-only report, --only-rule while validating one migration family, or --ignore-rule for a documented false-positive/noise window.
  4. Upgrade action majors on a branch.
  5. Verify workflow behavior before merging.

Safe by default

  • Read-only local scan.
  • No GitHub API calls.
  • No GitHub token required.
  • No workflow upload or telemetry.
  • No automatic migrations or commits.
  • CI failure is opt-in via --fail-on-severity.
  • Rule filtering is explicit and local; unknown rule ids fail fast instead of silently changing coverage.
  • --list-rules can be used to review active rule coverage before adding the scanner to CI.

For AI agents and automation

Use JSON mode as the stable machine interface:

gha-deprecation-preflight . --format json --output gha-deprecation-report.json --quiet --no-color

Machine contract: schemas/report.schema.json (schema_version: 1.0). Findings include rule id, severity, file/line, matched signal, fix guidance, and stable fingerprints for reruns. GitHub annotation output is available with --format annotations.

Exit codes: 0 completed/report-only, 1 configured severity gate matched, 2 usage/config/rule-id error, 3 reserved for runtime/tool errors.

Agent workflow docs: docs/AGENT_INTEGRATION.md.

Roadmap

  • Expand the rule inventory as GitHub Actions deprecations change.
  • Add more fixtures for common workflow patterns.
  • Expand CI adoption examples and release notes.
  • Keep the default mode deterministic, local, and read-only.

Metadata

Release files for github-actions-deprecation-preflight 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for github-actions-deprecation-preflight 0.1.2
File Size Uploaded
github_actions_deprecation_preflight-0.1.2.tar.gz 12.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for github-actions-deprecation-preflight 0.1.2
File Interpreter ABI Platform
github_actions_deprecation_preflight-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 21.9 kB

Release files / github_actions_deprecation_preflight-0.1.2.tar.gz

Download URL github_actions_deprecation_preflight-0.1.2.tar.gz
Size 12.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4a0d9118cb895c205d03f81c66f4ab005a431a644e323ac3c796b7f3f12e013e
BLAKE2b-256 checksum
How to use checksums
168c1a6633115506994ece381158ac3b98afab63cd4c7f009c2eac45194655e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 20, 2026.

Transparency log

Release files / github_actions_deprecation_preflight-0.1.2-py3-none-any.whl

Download URL github_actions_deprecation_preflight-0.1.2-py3-none-any.whl
Size 9.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4ed01ec0796f5873c225ff1e5d1950a466b336e7273b2f95da68d59cdb70b657
BLAKE2b-256 checksum
How to use checksums
4fc3621f25b81fa16e3b4b6381d5c6016ff67515e7331fe853c6f8020b390ae4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 20, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page