Skip to content

build-multiplatform-dockerimage #48

build-multiplatform-dockerimage

build-multiplatform-dockerimage #48

name: build-multiplatform-dockerimage
on:
schedule:
# Check for upstream updates once a week
- cron: '0 0 * * 1'
# Trigger the workflow on pull requests,
# but only for the main branch
pull_request:
branches:
- main
types: [opened, synchronize]
env:
#REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build_image:
name: build a multi platform Docker image
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
# https://github.com/docker/setup-qemu-action#usage
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Retrieve author data
run: |
echo AUTHOR=$(curl -sSL ${{ github.event.repository.owner.url }} | jq -r '.name') >> $GITHUB_ENV
#https://github.com/docker/metadata-action
- name: Docker meta
id: meta
uses: docker/metadata-action@v3
with:
# list of Docker images to use as base name for tags
images: ${{ env.IMAGE_NAME }}
labels: |
org.opencontainers.image.authors=${{ env.AUTHOR }}
# generate Docker tags based on the following events/attributes
tags: |
type=schedule
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=ref,event=branch
type=sha
type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) }}
# https://github.com/marketplace/actions/docker-setup-buildx
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
# https://github.com/docker/build-push-action#multi-platform-image
- name: Build Images
uses: docker/build-push-action@v2
with:
context: .
file: Dockerfile
platforms: linux/amd64,linux/arm64,linux/armhf
push: false
target: test_image
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}