.github | ||
__tests__ | ||
dist | ||
src | ||
test | ||
.dockerignore | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.prettierrc.json | ||
action.yml | ||
CHANGELOG.md | ||
docker-bake.hcl | ||
Dockerfile | ||
jest.config.js | ||
LICENSE | ||
package.json | ||
README.md | ||
tsconfig.json | ||
yarn.lock |
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 |
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 |
1.2.3 , latest |
Yes | |
push tag |
refs/tags/mytag |
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 ) |
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 |
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.