Co-authored-by: CrazyMax <crazy-max@users.noreply.github.com>
7.1 KiB
About
GitHub Action to extract metadata (tags, labels) for Docker. This action is particularly useful if used with Docker Build Push action.
If you are interested, check out my other :octocat: GitHub Actions!
Features
- Docker tags generated from GitHub action event and Git metadata
- OCI Image Format Specification used to generate Docker labels
Usage
Event | Ref | Commit SHA | Docker Tag | Pushed |
---|---|---|---|---|
schedule |
45f132a |
sha-45f132a , nightly |
Yes | |
pull_request |
refs/pull/2/merge |
a123b57 |
sha-a123b57 , pr-2 |
No |
push |
refs/heads/<default_branch> |
676cae2 |
sha-676cae2 , edge |
Yes |
push |
refs/heads/dev |
cf20257 |
sha-cf20257 , dev |
Yes |
push |
refs/heads/my/branch |
a5df687 |
sha-a5df687 , my-branch |
Yes |
push tag |
refs/tags/v1.2.3 |
bf4565b |
sha-bf4565b , 1.2.3 , latest |
Yes |
push tag |
refs/tags/mytag |
afb7833 |
sha-afb7833 , mytag |
Yes |
name: ci
on:
schedule:
- cron: '0 10 * * *' # everyday at 10am
push:
branches:
- '**'
tags:
- 'v*.*.*'
pull_request:
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v2
-
name: Docker meta
id: docker_meta
uses: crazy-max/ghaction-docker-meta@v1
with:
images: |
name/app
ghcr.io/name/app
tag-sha: true
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64,linux/386
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }}
Customizing
inputs
Following inputs can be used as step.with
keys
Name | Type | Description |
---|---|---|
images |
List/CSV | List of Docker images to use as base name for tags |
tag-sha |
Bool | Add git short SHA as Docker tag (default false ) |
tag-edge |
String | Branch that will be tagged as edge (default repo.default_branch ) |
tag-schedule |
String | Handlebars template to apply to schedule tag (default nightly ) |
sep-tags |
String | Separator to use for tags output (default \n ) |
sep-labels |
String | Separator to use for labels output (default \n ) |
List/CSV type can be a newline or comma delimited string
outputs
Following outputs are available
Name | Type | Description |
---|---|---|
version |
String | Generated Docker image version |
tags |
String | Generated Docker tags |
labels |
String | Generated Docker labels |
Notes
Templates available for schedule tag
tag-schedule
is specially crafted input to support Handlebars template with
the following expressions:
Expression | Example | Description |
---|---|---|
{{date 'format'}} |
{{date 'YYYYMMDD'}} > 20200110 |
Render date by its moment format |
You can find more examples in the CI workflow.
Keep up-to-date with GitHub Dependabot
Since Dependabot
has native GitHub Actions support,
to enable it on your GitHub repo all you need to do is add the .github/dependabot.yml
file:
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
How can I help?
All kinds of contributions are welcome 🙌! The most basic way to show your support is to star 🌟 the project, or to raise issues 💬 You can also support this project by becoming a sponsor on GitHub 👏 or by making a Paypal donation to ensure this journey continues indefinitely! 🚀
Thanks again for your support, it is much appreciated! 🙏
License
MIT. See LICENSE
for more details.