 CrazyMax
		
	
	
		8ec02f11ef
			CrazyMax
		
	
	
		8ec02f11ef
		
			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
- Overview
- Usage
- Customizing
- Notes
- Keep up-to-date with GitHub Dependabot
- How can I help?
- License
Features
- Docker tags generated from GitHub action event and Git metadata
- OCI Image Format Specification used to generate Docker labels
- Handlebars template to apply to schedule tag
Overview
| Event | Ref | Commit SHA | Docker Tags | 
|---|---|---|---|
| schedule | 45f132a | sha-45f132a,nightly | |
| pull_request | refs/pull/2/merge | a123b57 | sha-a123b57,pr-2 | 
| push | refs/heads/<default_branch> | 676cae2 | sha-676cae2,edge | 
| push | refs/heads/dev | cf20257 | sha-cf20257,dev | 
| push | refs/heads/my/branch | a5df687 | sha-a5df687,my-branch | 
| push tag | refs/tags/v1.2.3 | bf4565b | sha-bf4565b,1.2.3,latest | 
| push tag | refs/tags/mytag | afb7833 | sha-afb7833,mytag | 
Usage
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 | Bool | Enable edge branch tagging (default false) | 
| tag-edge-branch | 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.
