InfiniTime/.github/workflows/docker.yml
Finlay Davidson fdad3fc985 Fix Docker workflow not pushing on manual trigger
Also fix issue where workflow fails on pull requests when the
user who made the pull request doesn't have the secrets set.
Also allow other workflows to be triggered manually.
Also don't trigger any workflows on pull requests to master, as
there shouldn't be any pull requests against master.
2022-07-19 11:53:56 +02:00

71 lines
2.2 KiB
YAML

name: Build and push Docker image
on:
push:
branches: [ develop ]
paths:
- 'docker/**'
pull_request:
branches: [ develop ]
paths:
- 'docker/**'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
env:
USERNAME: infinitime
steps:
- uses: actions/checkout@v3
- name: Log in to Docker Hub
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_LOGIN_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Set up Docker metadata
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ secrets.DOCKER_HUB_IMAGE_USERNAME || env.USERNAME }}/infinitime-build
tags: |
type=sha
type=raw,value=latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
- name: Build and push
if: github.event_name != 'pull_request'
uses: docker/build-push-action@v3
with:
context: ./docker/
file: ./docker/Dockerfile
platforms: linux/amd64,linux/arm64
builder: ${{ steps.buildx.outputs.name }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME || env.USERNAME }}/infinitime-build:buildcache
cache-to: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME || env.USERNAME }}/infinitime-build:buildcache,mode=max
- name: Build
if: github.event_name == 'pull_request'
uses: docker/build-push-action@v3
with:
context: ./docker/
file: ./docker/Dockerfile
platforms: linux/amd64,linux/arm64
builder: ${{ steps.buildx.outputs.name }}
push: false
cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME || env.USERNAME }}/infinitime-build:buildcache