1. Not only publish Docker images when new release tags are created but on every push to master, since release frequency is so low. 2. Use newer versions of the various actions (setup-buildx-action, login-action, metadata-action, ...) to suppress some deprecation warnings see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
56 lines
1.7 KiB
YAML
56 lines
1.7 KiB
YAML
name: Docker Publish
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- 'master'
|
|
tags:
|
|
- 'v*.*.*'
|
|
|
|
jobs:
|
|
build:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v3
|
|
|
|
# Workaround: https://github.com/docker/build-push-action/issues/461
|
|
- name: Setup Docker buildx
|
|
# https://github.com/docker/setup-buildx-action
|
|
uses: docker/setup-buildx-action@v2.2.1
|
|
|
|
# Login against Docker registry
|
|
- name: Log into registry
|
|
# https://github.com/docker/login-action
|
|
uses: docker/login-action@v2.1.0
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
# Extract Docker image tag from git tag. E.g. if git tag is "v0.19.1" then use
|
|
# Docker image tag "0.19.1". The "latest" tag reflects the most recent build on
|
|
# master.
|
|
- name: Extract Docker metadata
|
|
id: meta
|
|
# https://github.com/docker/metadata-action
|
|
uses: docker/metadata-action@v4.1.1
|
|
with:
|
|
images: docker.io/${{ secrets.DOCKERHUB_USERNAME }}/scryer-prolog
|
|
tags: |
|
|
type=semver,pattern={{version}}
|
|
type=raw,value=latest,enable={{is_default_branch}}
|
|
# type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'master') }}
|
|
|
|
# Build and push Docker image with Buildx
|
|
- name: Build and push Docker image
|
|
id: build-and-push
|
|
# https://github.com/docker/build-push-action
|
|
uses: docker/build-push-action@v3.2.0
|
|
with:
|
|
context: .
|
|
push: true
|
|
tags: ${{ steps.meta.outputs.tags }}
|
|
labels: ${{ steps.meta.outputs.labels }}
|