Build containers using rootless Podman in Github/Gitea Actions
| .github/workflows | ||
| scripts | ||
| action.yml | ||
| LICENSE | ||
| README.md | ||
Podman (Login,Build,Push) GitHub Action
This repository provides a GitHub Action to build and push container images using Podman. It supports Podman login, building images from Dockerfiles, and pushing images to container registries.
Features
- Build container images with Podman.
- Push images to a container registry (e.g.,
ghcr.io,quay.io). - Flexible support for build arguments, labels, tags, and security options.
- Designed to run in GitHub workflows for CI/CD automation.
- Supports Gitea Actions with a shared storage between runs.
Directory Structure
podman-action
├── LICENSE # License information (MIT)
├── README.md # This documentation
├── .github
│ └── workflows
│ └── verify.yml # Example GitHub workflow for verification
├── scripts
│ └── run.sh # Core script to handle Podman operations
└── action.yml # GitHub Action definition
Usage
Example Workflow
Add the following workflow file to .github/workflows/build.yml:
name: Build and Push Container Image
on:
push:
branches:
- main
jobs:
build-push:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Use Podman Build and Push Action
uses: frozen-tapestry/podman-build-push-action@v1
with:
login_registry: ghcr.io
login_username: ${{ secrets.REGISTRY_USERNAME }}
login_password: ${{ secrets.REGISTRY_PASSWORD }}
tags: ghcr.io/your-namespace/your-image:latest
dockerfile: path/to/Dockerfile
push: true
Inputs
| Input | Description | Required | Default |
|---|---|---|---|
login_registry |
The container registry to push to (e.g., ghcr.io). |
No | |
login_username |
Registry username. | No | |
login_password |
Registry password (use GitHub secrets). | No | |
tags |
Tags for the image (space-separated or newline-separated). | No | |
labels |
Additional metadata for the image (space-separated or newline-separated). | No | |
build_args |
Build arguments (space-separated or newline-separated). | No | |
extra_args |
Extra arguments for the podman build command (newline-separated). |
No | |
dockerfile |
Path to the Dockerfile. If set, the build step is performed. | No | |
push |
Whether to push the image after building. | No | false |
shared_path |
Path to a shared folder for cache files on the host filesystem (useful for self-hosted runners). | No | /tmp/shared |
security |
Security options for the intermediate container (space-separated). | No | --network=host |
Development
Verify Workflow
The verify.yml workflow tests the action by:
- Creating a temporary
Dockerfile. - Building and pushing the container image.
- Running the container to validate its output.
You can use this workflow as a template for testing your own usage.
Core Script
The main logic for building and pushing images resides in the scripts/run.sh file. It:
- Logs into the container registry if credentials are provided.
- Builds the container image with specified tags, labels, and build arguments.
- Pushes the image if the
pushinput is set totrue.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Contributions
Contributions, issues, and feature requests are welcome! Feel free to open a pull request or issue in this repository.