Skip to content

chore(deps): Bump dependencies to latest and migrate backoff to v6 (#… #477

chore(deps): Bump dependencies to latest and migrate backoff to v6 (#…

chore(deps): Bump dependencies to latest and migrate backoff to v6 (#… #477

Workflow file for this run

name: Docker
on:
push:
branches: [main]
concurrency:
group: docker-${{ github.ref }}
cancel-in-progress: true
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build:
runs-on: ${{ matrix.arch == 'amd64' && 'ubuntu-latest' || 'ubuntu-24.04-arm' }}
permissions:
contents: read
packages: write
strategy:
fail-fast: false
matrix:
variant: [alpine, ubuntu]
arch: [amd64, arm64]
steps:
- uses: actions/checkout@v6
- name: Load tool versions and git metadata
run: |
grep -E '^[A-Z_][A-Z0-9_]*=' versions.env >> "$GITHUB_ENV"
echo "COMMIT_HASH=$(git rev-parse --short HEAD)" >> "$GITHUB_ENV"
echo "COMMIT_TIME=$(git log -1 --format=%cI)" >> "$GITHUB_ENV"
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push (per-arch)
id: build
uses: docker/build-push-action@v7
with:
context: .
file: docker/Dockerfile
platforms: linux/${{ matrix.arch }}
push: false
outputs: type=image,"name=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}",push-by-digest=true,name-canonical=true,push=true
build-args: |
BASE_IMAGE=${{ matrix.variant == 'alpine' && env.ALPINE_IMAGE || env.UBUNTU_IMAGE }}
BUF_VERSION=${{ env.BUF_VERSION }}
TASK_VERSION=${{ env.TASK_VERSION }}
S6_OVERLAY_VERSION=${{ env.S6_OVERLAY_VERSION }}
BUN_VERSION=${{ env.BUN_VERSION }}
NODE_VERSION=${{ env.NODE_VERSION }}
GOLANG_VERSION=${{ env.GOLANG_VERSION }}
VERSION=${{ env.VERSION }}
COMMIT_HASH=${{ env.COMMIT_HASH }}
COMMIT_TIME=${{ env.COMMIT_TIME }}
cache-from: type=gha,scope=${{ matrix.variant }}-${{ matrix.arch }}
cache-to: type=gha,mode=max,scope=${{ matrix.variant }}-${{ matrix.arch }}
- name: Export digest
run: |
mkdir -p ${{ runner.temp }}/digests/${{ matrix.variant }}
echo "${{ steps.build.outputs.digest }}" > "${{ runner.temp }}/digests/${{ matrix.variant }}/${{ matrix.arch }}"
- name: Upload digest
uses: actions/upload-artifact@v7
with:
name: digest-${{ matrix.variant }}-${{ matrix.arch }}
path: ${{ runner.temp }}/digests/${{ matrix.variant }}/
retention-days: 1
merge:
needs: build
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
strategy:
fail-fast: false
matrix:
include:
- variant: alpine
suffix: ''
- variant: ubuntu
suffix: '-ubuntu'
steps:
- uses: actions/checkout@v6
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Download digests
uses: actions/download-artifact@v8
with:
pattern: digest-${{ matrix.variant }}-*
path: ${{ runner.temp }}/digests/${{ matrix.variant }}
merge-multiple: true
- name: Create multi-arch manifest
run: |
DIGESTS=""
for f in ${{ runner.temp }}/digests/${{ matrix.variant }}/*; do
DIGESTS="$DIGESTS ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}@$(cat "$f")"
done
TAG="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:dev${{ matrix.suffix }}"
docker buildx imagetools create -t "$TAG" $DIGESTS