Skip to content

Improved Docker build action #341

Improved Docker build action

Improved Docker build action #341

Workflow file for this run

name: Docker
on: [workflow_dispatch, push]
env:
IMAGE_NAME: monero
PLATFORMS: linux/amd64,linux/arm64/v8,linux/arm/v7
jobs:
build:
name: Build
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
arch: [amd64, arm64, armv7]
include:
- arch: amd64
runs-on: ubuntu-latest
platform: linux/amd64
- arch: arm64
runs-on: ubuntu-latest
platform: linux/arm64
# One day, when ARM based Github Hosted Runners are GA...
# https://github.com/github/roadmap/issues/970
# runs-on: ubuntu-latest-arm64
- arch: armv7
runs-on: ubuntu-latest
platform: linux/arm/v7
steps:
- uses: actions/checkout@v4
- uses: docker/setup-qemu-action@v3
if: ${{ matrix.arch != 'amd64' }}
- uses: docker/setup-buildx-action@v3
- uses: docker/build-push-action@v6
with:
platforms: ${{ matrix.platform }}
push: false
cache-from: |
type=gha,scope=docker-build-${{ matrix.arch }}
cache-to: |
type=gha,mode=max,scope=docker-build-${{ matrix.arch }}
context: .
combine:
needs: [build]
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ github.token }}
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- uses: docker/metadata-action@v5
id: meta
with:
images: |
ghcr.io/${{ github.repository_owner }}/monero
docker.io/rblaine/monero
tags: |
type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'master') }}
type=raw,value={{branch}},enable=${{ github.ref != format('refs/heads/{0}', 'master') }}
type=ref,event=tag
- uses: docker/build-push-action@v6
with:
platforms: ${{ env.PLATFORMS }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: |
type=gha,scope=docker-package
type=gha,scope=docker-build-amd64
type=gha,scope=docker-build-arm64
type=gha,scope=docker-build-armv7
cache-to: |
type=gha,mode=max,scope=docker-package