Skip to main content

CLI for github actions workflow validation

Project description

validate-actions

GitHub Actions workflow validation and linting from the CLI.

Catch configuration errors, typos, and best practice violations in your GitHub Actions workflows before you push to production.

Python 3.12+ PyPI version License: MIT


🚀 Quick Start

Installation

# Install from PyPI
pip install validate-actions

Basic Usage

# Validate all workflows in your repository
validate-actions

# Validate a specific workflow file
validate-actions .github/workflows/ci.yml

# Auto-fix issues where possible
validate-actions --fix

# More options
validate-actions --help

How it works

alt text


🔧 Configuration

Extending Rules

validate-actions supports custom. You can extend the tool with your own rules without modifying the core codebase.

See validate_actions/rules/rules.yml for configuration format and examples of creating custom rules.


🏃‍♂️ Integration Examples

Pre-commit Hook

# .pre-commit-config.yaml
repos:
  - repo: local
    hooks:
      - id: validate-actions
        name: Validate GitHub Actions
        entry: validate-actions
        language: system
        files: ^\.github/workflows/.*\.ya?ml$

Note: Requires validate-actions to be installed globally or available in your PATH. For poetry projects, consider using entry: poetry run validate-actions.

VS Code Task

// .vscode/tasks.json
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Validate Actions",
      "type": "shell", 
      "command": "validate-actions",
      "group": "build",
      "presentation": {
        "echo": true,
        "reveal": "always"
      }
    }
  ]
}

Note: Assumes global installation (pip install validate-actions). For other setups, replace command with:

  • Poetry: "poetry run validate-actions"
  • Pipx: "pipx run validate-actions"
  • ...

GitHub Actions Workflow

# .github/workflows/validate.yml
name: Validate Workflows
on: [push, pull_request]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v4
        with:
          python-version: '3.12'
      - run: pip install validate-actions
      - name: Validate with warning limit
        run: validate-actions
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Note: Use --max-warnings N to set warning limits, or --quiet to suppress warning output entirely.


🚦 Exit Codes

  • 0: Success (no errors, warnings under limit)
  • 1: Errors found OR warnings exceed --max-warnings limit

By default, warnings don't cause exit code 1 (non-blocking):

validate-actions              # Exit 0 even with warnings
validate-actions --quiet      # Exit 0, suppress warning output  

Use --max-warnings to fail builds when warnings exceed a threshold:

validate-actions --max-warnings 0    # Exit 1 on any warnings (strict)
validate-actions --max-warnings 5    # Exit 1 if more than 5 warnings

Perfect for CI/CD integration:

# .github/workflows/validate.yml
- name: Validate Workflows (Allow Warnings)
  run: validate-actions
  # Will only fail on errors, not warnings

📖 Documentation

Full API documentation is available at: https://konradhorber.github.io/validate-actions/

🛠️ Development

See DEV_README.md for detailed development setup, architecture overview, and contribution guidelines.


🤝 Contributing

We welcome contributions! Please see DEV_README.md for development setup and guidelines.


📄 License

MIT License - see LICENSE file for details.


🙏 Acknowledgments

Built with:

  • PyYAML for robust YAML parsing
  • Typer for the CLI interface
  • Rich for beautiful terminal output
  • python-dotenv for environment variable management
  • sphinx for docs generation

Inspired by tools like ESLint and the GitHub Actions community's need for better workflow validation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

validate_actions-1.0.7.tar.gz (60.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

validate_actions-1.0.7-py3-none-any.whl (77.5 kB view details)

Uploaded Python 3

File details

Details for the file validate_actions-1.0.7.tar.gz.

File metadata

  • Download URL: validate_actions-1.0.7.tar.gz
  • Upload date:
  • Size: 60.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.12.13 Linux/6.14.0-1017-azure

File hashes

Hashes for validate_actions-1.0.7.tar.gz
Algorithm Hash digest
SHA256 60b2f716b97c38c2d9f4639b36b29487eb926e0dfffb3eb7d129e29aecbea143
MD5 676ecee34a2fa11a7449c8e8a7d6ae2c
BLAKE2b-256 e13b7953fa73b5d3941d74d266cc833c57b0d6ffce7a757d9cd62e625f9e199c

See more details on using hashes here.

File details

Details for the file validate_actions-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: validate_actions-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 77.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.12.13 Linux/6.14.0-1017-azure

File hashes

Hashes for validate_actions-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 8aec5781c55fadef5d97db92b072bebb830cc0571c36c4b940290b9506784492
MD5 f0cfd83beca7a4614696c38e9866d153
BLAKE2b-256 8e6c96c9c02bbebe702a77c063dea941bd298d68287b1c78d0f655f9982e0eea

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page