Skip to content

Template repository for GitHub Actions

License

devops-infra/template-action

πŸš€ GitHub Action template

Template repository for GitHub Actions

πŸ“¦ Available on

✨ Features

πŸ”— Related Actions

Check also other actions from DevOps-Infra

πŸ“Š Badges

GitHub repo GitHub last commit GitHub code size in bytes GitHub license
DockerHub Docker version Image size Docker Pulls

🏷️ Version Tags: vX, vX.Y, vX.Y.Z

This action supports three tag levels for flexible versioning:

  • vX: latest patch of the major version (e.g., v1).
  • vX.Y: latest patch of the minor version (e.g., v1.2).
  • vX.Y.Z: fixed to a specific release (e.g., v1.2.3).

πŸ“– API Reference

    - name: Run the Action
      uses: devops-infra/[email protected]
      env:
        barfoo: foobaz
      with:
        foobar: bazbar
        debug: false
        # github_token: ${{ secrets.GITHUB_TOKEN }}

πŸ”¨ Environment Variables

Variable Description
barfoo Sample environment variable.

πŸ”§ Input Parameters

Input Required Default Description
foobar No foobar Sample input used by the action.
debug No false Enable verbose debug logging.
github_token No For authenticated GitHub requests.

πŸ“€ Outputs Parameters

Output Description
foobar Echo of provided foobar input.
barfoo Duplicate of foobar for demo use.

πŸ’» Usage Examples

πŸ“ Basic

Run the Action with defaults.

name: Run the Action on each commit
on: [push]
jobs:
  template-action:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5

      - uses: devops-infra/template-action@v1

πŸ”€ Advanced

Run the Action with set inputs.

name: Run the Action on each commit
on: [push]
jobs:
  template-action:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5

      - uses: devops-infra/template-action@v1
        with:
          foobar: hello
          debug: 'true'

🎯 Use specific version

Run the Action with a specific version tag.

name: Run the Action on each commit
on: [push]
jobs:
  template-action:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5

      - uses: devops-infra/[email protected]
        id: Pin patch version

      - uses: devops-infra/[email protected]
        id: Pin minor version

      - uses: devops-infra/template-action@v1
        id: Pin major version

πŸ—οΈ CI/CD

Workflows included:

  • (Auto) Create Pull Request (.github/workflows/auto-create-pull-request.yml)
    • Trigger: push to any branch except master and dependabot/**.
    • Jobs:
      • Lint
      • Build and push multi-platform test image, and inspect manifest
      • Create pull request
  • (Auto) Create release (.github/workflows/auto-create-release.yml)
    • Trigger: pull_request closed and push to release/** (runs only for merged PRs from release/)
    • Jobs:
      • Lint
      • Tagging: create vX.Y.Z; update vX.Y and vX (fails if full tag exists on remote)
      • Build and push multi-platform image, and inspect manifest
      • Publish GitHub Release
      • Update Docker hub description
  • (Cron) Weekly dependency build (.github/workflows/cron-check-dependencies.yml)
    • Trigger: Weekly on Monday at 08:00 UTC
    • Jobs:
      • Lint
      • Build and push multi-platform test image, and inspect manifest
  • (Manual) Update version (.github/workflows/manual-update-version.yml)
    • Trigger: manual workflow_dispatch with type (patch|minor|major|set) xor version when type=set pushes to release/** branch and creates a pull request to create a new release
    • Jobs:
      • Update version: bump or set; output REL_VERSION
      • Build and push multi-platform image, and inspect manifest
      • Create pull request, approve to create a release

πŸ§‘β€πŸ’» Development

Prerequisites:

  • Docker with Buildx,
  • Task (installed via workflow or from https://taskfile.dev),
  • gnu-sed if on macOS (brew install gnu-sed),
  • pre-commit (optional).

Common tasks:

# Run all linters
task lint

# Build multi-arch images locally (no push)
task docker:build

# Push images (requires DOCKER_TOKEN and GITHUB_TOKEN)
DOCKER_TOKEN=... GITHUB_TOKEN=... task docker:push

Pre-commit hooks:

brew install pre-commit
task pre-commit:install
task pre-commit

🀝 Contributing

Contributions are welcome! See CONTRIBUTING. This project is licensed under the MIT License - see the LICENSE file for details.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ’¬ Support

If you have any questions or need help, please:

  • πŸ“ Create an issue
  • 🌟 Star this repository if you find it useful!