Skip to content

Latest commit

 

History

History
232 lines (181 loc) · 7.54 KB

File metadata and controls

232 lines (181 loc) · 7.54 KB

🚀 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/template-action@v1.0.4
      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/template-action@v1.0.4
        id: Pin patch version

      - uses: devops-infra/template-action@v1.0
        id: Pin minor version

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

🏗️ CI/CD

Workflows included:

  • (Auto) Pull Request Create (.github/workflows/auto-pull-request-create.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-dependency-update.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-release-create.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!

Forking

To publish images from a fork, set these variables so Task uses your registry identities: DOCKER_USERNAME, DOCKER_ORG_NAME, GITHUB_USERNAME, GITHUB_ORG_NAME.

Two supported options (environment variables take precedence over .env):

# .env (local only, not committed)
DOCKER_USERNAME=your-dockerhub-user
DOCKER_ORG_NAME=your-dockerhub-org
GITHUB_USERNAME=your-github-user
GITHUB_ORG_NAME=your-github-org
# Shell override
DOCKER_USERNAME=your-dockerhub-user \
DOCKER_ORG_NAME=your-dockerhub-org \
GITHUB_USERNAME=your-github-user \
GITHUB_ORG_NAME=your-github-org \
task docker:build

Recommended setup:

  • Local development: use a .env file.
  • GitHub Actions: set repo variables for the four values above, and secrets for DOCKER_TOKEN and GITHUB_TOKEN.

Publish images without a release:

  • Run the (Manual) Release Create workflow with build_only: true to build and push images without tagging a release.