Files

70 lines
1.7 KiB
YAML

name: Build and Push Multi-Arch Container
env:
REGISTRY_HOST: codeberg.org
REGISTRY_REPO: gigirassy/teletraan
on:
push:
jobs:
build:
runs-on: self-hosted
strategy:
matrix:
include:
- name: latest
dockerfile: Dockerfile
tag: latest
- name: mimalloc
dockerfile: Dockerfile.mimalloc
tag: mimalloc
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Buildx
uses: docker/setup-buildx-action@v3
- name: Login to container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY_HOST }}
username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_PASS }}
- name: Build image (export tar)
run: |
docker buildx build \
--platform linux/amd64 \
--file ${{ matrix.dockerfile }} \
--output type=docker,dest=image-${{ matrix.name }}.tar \
-t local-${{ matrix.name }}:scan \
.
- name: Scan image with Grype
run: |
docker run --rm \
-v $(pwd):/work \
anchore/grype:latest \
docker-archive:/work/image-${{ matrix.name }}.tar \
--fail-on high \
-o table
- name: Build and push multi-arch image
if: success()
uses: docker/build-push-action@v6
with:
context: .
file: ./${{ matrix.dockerfile }}
push: true
platforms: linux/amd64,linux/arm64
tags: |
${{ env.REGISTRY_HOST }}/${{ env.REGISTRY_REPO }}:${{ matrix.tag }}