Skip to content

refactor for matrix image build specialization #2

refactor for matrix image build specialization

refactor for matrix image build specialization #2

Workflow file for this run

##################################################################################
# References:
# Built-in arguments:
# - https://docs.github.com/en/actions/learn-github-actions/contexts
# Built-in environment variables:
# - https://docs.github.com/en/enterprise-cloud@latest/actions/learn-github-actions/variables#default-environment-variables
#
# Develop this workflow locally with the following command:
# ~$ gh act --env-file .env -s GITHUB_TOKEN=$GITHUB_TOKEN
name: Build and Push Docker Images
on:
workflow_dispatch:
push:
branches:
- main
paths-ignore:
- "Makefile"
- "devcontainer**"
- ".devcontainer/**"
- "docs/**"
- "**.md"
pull_request:
branches:
- main
paths-ignore:
- "Makefile"
- "devcontainer**"
- ".devcontainer/**"
- "docs/**"
- "**.md"
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
actions: write
steps:
- name: Git Checkout
uses: actions/checkout@v4
id: git-checkout
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
id: qemu-install
- name: Install Docker Buildx
uses: docker/setup-buildx-action@v3
id: docker-buildx-install
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
id: docker-login-ghcr
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: repository_owner to lower case
uses: Entepotenz/change-string-case-action-min-dependencies@v1
id: string-owner-to-lower
with:
string: ${{ github.repository_owner }}
- name: Transform repository name to lower case
uses: Entepotenz/change-string-case-action-min-dependencies@v1
id: string-repository-to-lower
with:
string: ${{ github.repository }}
- name: Build and Push slim Image
uses: docker/build-push-action@v5
id: docker-build-push-slim
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
with:
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
cache-from: |
type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:build-cache
type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:slim
cache-to: type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:build-cache,mode=max
context: .github/docker/slim
file: .github/docker/slim/Dockerfile
platforms: linux/amd64,linux/arm64
tags: "ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:latest,ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}"