Skip to content

Build and Push Ubuntu-Rust-gtk4 #1

Build and Push Ubuntu-Rust-gtk4

Build and Push Ubuntu-Rust-gtk4 #1

Workflow file for this run

name: Build and Push Ubuntu-Rust-gtk4
on:
workflow_dispatch:
push:
branches: [main]
paths:
- "docker/**"
schedule:
- cron: "15 8 1 * *"
jobs:
build-and-push:
permissions:
packages: write
strategy:
fail-fast: false
matrix:
include:
- platform: amd64
arch: amd64
gtk: 418
codename: plucky
os: ubuntu-latest
- platform: arm64
arch: arm64v8
gtk: 418
codename: plucky
os: ubuntu-24.04-arm
- platform: amd64
arch: amd64
gtk: 416
codename: oracular
os: ubuntu-latest
- platform: arm64
arch: arm64v8
gtk: 416
codename: oracular
os: ubuntu-24.04-arm
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Github Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Metadata
run: |
echo "OWNER=${GITHUB_REPOSITORY_OWNER@L}" >> ${GITHUB_ENV}
- name: Build and push gtk${{matrix.gtk}}-${{ matrix.platform }}
uses: docker/build-push-action@v6
with:
context: docker
platforms: linux/${{ matrix.platform }}
push: true
tags: |
ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:gtk${{matrix.gtk}}-${{ matrix.platform }}
build-args: |
ARCH=${{ matrix.arch }}
CODENAME=${{matrix.codename}}
provenance: false
merge:
needs: build-and-push
runs-on: ubuntu-latest
permissions:
packages: write
strategy:
fail-fast: false
steps:
- name: Login to Github Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Metadata
run: |
echo "OWNER=${GITHUB_REPOSITORY_OWNER@L}" >> ${GITHUB_ENV}
- name: Create multi-arch manifest gtk4.16
run: |
docker manifest create ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:gtk416-latest \
ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:gtk416-amd64 \
ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:gtk416-arm64
docker manifest annotate ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:gtk416-latest \
ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:gtk416-amd64 --arch amd64
docker manifest annotate ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:gtk416-latest \
ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:gtk416-arm64 --arch arm64
docker manifest push ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:gtk416-latest
- name: Create multi-arch manifest gtk4 latest
run: |
docker manifest create ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:latest \
ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:gtk418-amd64 \
ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:gtk418-arm64
docker manifest annotate ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:latest \
ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:gtk418-amd64 --arch amd64
docker manifest annotate ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:latest \
ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:gtk418-arm64 --arch arm64
docker manifest push ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:latest
- name: Check push
run: |
docker buildx imagetools inspect ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:latest
docker buildx imagetools inspect ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:gtk416-latest