Container Registry #191
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Container Registry | |
on: | |
push: | |
branches: [main] | |
paths: [Dockerfile] | |
pull_request: | |
branches: [main] | |
paths: [Dockerfile] | |
schedule: | |
# Once a week | |
- cron: "0 0 * * */7" | |
workflow_dispatch: | |
jobs: | |
build-base: | |
name: Build Base Image | |
# aarch64 builds fail on ubuntu-24.04 | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: read | |
packages: write | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Login | |
if: ${{ github.event_name != 'pull_request' }} | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Setup Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
with: | |
driver-opts: network=host | |
- name: Build | |
uses: docker/build-push-action@v6 | |
with: | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
file: Dockerfile | |
pull: true | |
push: ${{ github.event_name != 'pull_request' }} | |
platforms: linux/amd64,linux/arm64 | |
tags: ghcr.io/${{ github.repository }}/flatter-base:latest | |
build: | |
name: Build | |
needs: [build-base] | |
# aarch64 builds fail on ubuntu-24.04 | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: read | |
packages: write | |
strategy: | |
matrix: | |
runtime: | |
# freedesktop.org | |
# | |
# These are images for the freedesktop.org runtime, and those that | |
# add a few packages to support additional languages and so on. | |
- name: freedesktop | |
tag: 23.08 | |
flathub: > | |
org.freedesktop.Platform/x86_64/23.08 | |
org.freedesktop.Sdk/x86_64/23.08 | |
org.freedesktop.Platform/aarch64/23.08 | |
org.freedesktop.Sdk/aarch64/23.08 | |
- name: freedesktop | |
tag: 24.08 | |
flathub: > | |
org.freedesktop.Platform/x86_64/24.08 | |
org.freedesktop.Sdk/x86_64/24.08 | |
org.freedesktop.Platform/aarch64/24.08 | |
org.freedesktop.Sdk/aarch64/24.08 | |
- name: rust | |
tag: 23.08 | |
flathub: > | |
org.freedesktop.Platform/x86_64/23.08 | |
org.freedesktop.Sdk/x86_64/23.08 | |
org.freedesktop.Platform/aarch64/23.08 | |
org.freedesktop.Sdk/aarch64/23.08 | |
org.freedesktop.Sdk.Extension.llvm17/x86_64/23.08 | |
org.freedesktop.Sdk.Extension.rust-stable/x86_64/23.08 | |
org.freedesktop.Sdk.Extension.llvm17/aarch64/23.08 | |
org.freedesktop.Sdk.Extension.rust-stable/aarch64/23.08 | |
- name: rust | |
tag: 24.08 | |
flathub: > | |
org.freedesktop.Platform/x86_64/24.08 | |
org.freedesktop.Sdk/x86_64/24.08 | |
org.freedesktop.Platform/aarch64/24.08 | |
org.freedesktop.Sdk/aarch64/24.08 | |
org.freedesktop.Sdk.Extension.llvm18/x86_64/24.08 | |
org.freedesktop.Sdk.Extension.rust-stable/x86_64/24.08 | |
org.freedesktop.Sdk.Extension.llvm18/aarch64/24.08 | |
org.freedesktop.Sdk.Extension.rust-stable/aarch64/24.08 | |
# GNOME | |
# | |
# These are images for the GNOME runtime, and those that add a few | |
# things for e.g. Rust bindings. | |
- name: gnome | |
tag: 46 | |
flathub: > | |
org.gnome.Platform/x86_64/46 | |
org.gnome.Sdk/x86_64/46 | |
org.gnome.Platform/aarch64/46 | |
org.gnome.Sdk/aarch64/46 | |
- name: gnome | |
tag: 47 | |
flathub: > | |
org.gnome.Platform/x86_64/47 | |
org.gnome.Sdk/x86_64/47 | |
org.gnome.Platform/aarch64/47 | |
org.gnome.Sdk/aarch64/47 | |
- name: gnome | |
tag: master | |
gnome_nightly: > | |
org.gnome.Platform/x86_64/master | |
org.gnome.Sdk/x86_64/master | |
org.gnome.Platform/aarch64/master | |
org.gnome.Sdk/aarch64/master | |
- name: gnome-rust | |
tag: 46 | |
flathub: > | |
org.gnome.Platform/x86_64/46 | |
org.gnome.Sdk/x86_64/46 | |
org.gnome.Platform/aarch64/46 | |
org.gnome.Sdk/aarch64/46 | |
org.freedesktop.Sdk.Extension.llvm17/x86_64/23.08 | |
org.freedesktop.Sdk.Extension.rust-stable/x86_64/23.08 | |
org.freedesktop.Sdk.Extension.llvm17/aarch64/23.08 | |
org.freedesktop.Sdk.Extension.rust-stable/aarch64/23.08 | |
- name: gnome-rust | |
tag: 47 | |
flathub: > | |
org.gnome.Platform/x86_64/47 | |
org.gnome.Sdk/x86_64/47 | |
org.gnome.Platform/aarch64/47 | |
org.gnome.Sdk/aarch64/47 | |
org.freedesktop.Sdk.Extension.llvm18/x86_64/24.08 | |
org.freedesktop.Sdk.Extension.rust-stable/x86_64/24.08 | |
org.freedesktop.Sdk.Extension.llvm18/aarch64/24.08 | |
org.freedesktop.Sdk.Extension.rust-stable/aarch64/24.08 | |
- name: gnome-typescript | |
tag: 46 | |
flathub: > | |
org.gnome.Platform/x86_64/46 | |
org.gnome.Sdk/x86_64/46 | |
org.gnome.Platform/aarch64/46 | |
org.gnome.Sdk/aarch64/46 | |
org.freedesktop.Sdk.Extension.node18/x86_64/23.08 | |
org.freedesktop.Sdk.Extension.typescript/x86_64/23.08 | |
- name: gnome-typescript | |
tag: 47 | |
flathub: > | |
org.gnome.Platform/x86_64/47 | |
org.gnome.Sdk/x86_64/47 | |
org.gnome.Platform/aarch64/47 | |
org.gnome.Sdk/aarch64/47 | |
org.freedesktop.Sdk.Extension.node20/x86_64/24.08 | |
org.freedesktop.Sdk.Extension.typescript/x86_64/24.08 | |
- name: gnome-vala | |
tag: 46 | |
flathub: > | |
org.gnome.Platform/x86_64/46 | |
org.gnome.Sdk/x86_64/46 | |
org.gnome.Platform/aarch64/46 | |
org.gnome.Sdk/aarch64/46 | |
org.freedesktop.Sdk.Extension.vala/x86_64/23.08 | |
- name: gnome-vala | |
tag: 47 | |
flathub: > | |
org.gnome.Platform/x86_64/47 | |
org.gnome.Sdk/x86_64/47 | |
org.gnome.Platform/aarch64/47 | |
org.gnome.Sdk/aarch64/47 | |
org.freedesktop.Sdk.Extension.vala/x86_64/24.08 | |
# Workbench | |
# | |
# This is a special image for Workbench, that includes quite a few | |
# language extensions. | |
- name: workbench | |
tag: master | |
flathub: > | |
org.freedesktop.Sdk.Extension.llvm18/x86_64/24.08 | |
org.freedesktop.Sdk.Extension.rust-stable/x86_64/24.08 | |
org.freedesktop.Sdk.Extension.llvm18/aarch64/24.08 | |
org.freedesktop.Sdk.Extension.rust-stable/aarch64/24.08 | |
org.freedesktop.Sdk.Extension.node20/x86_64/24.08 | |
org.freedesktop.Sdk.Extension.typescript/x86_64/24.08 | |
org.freedesktop.Sdk.Extension.vala/x86_64/24.08 | |
gnome_nightly: > | |
org.gnome.Platform/x86_64/master | |
org.gnome.Sdk/x86_64/master | |
org.gnome.Platform/aarch64/master | |
org.gnome.Sdk/aarch64/master | |
# KDE | |
# | |
# These are images for the KDE runtime. The maintainer doesn't use | |
# these, but feel free to open a PR if out-of-date. | |
- name: kde | |
tag: 5.15-23.08 | |
flathub: > | |
org.kde.Platform/x86_64/5.15-23.08 | |
org.kde.Sdk/x86_64/5.15-23.08 | |
org.kde.Platform/aarch64/5.15-23.08 | |
org.kde.Sdk/aarch64/5.15-23.08 | |
- name: kde | |
tag: 6.6 | |
flathub: > | |
org.kde.Platform/x86_64/6.6 | |
org.kde.Sdk/x86_64/6.6 | |
org.kde.Platform/aarch64/6.6 | |
org.kde.Sdk/aarch64/6.6 | |
- name: kde | |
tag: 6.7 | |
flathub: > | |
org.kde.Platform/x86_64/6.7 | |
org.kde.Sdk/x86_64/6.7 | |
org.kde.Platform/aarch64/6.7 | |
org.kde.Sdk/aarch64/6.7 | |
fail-fast: false | |
steps: | |
- name: Cleanup | |
run: | | |
sudo rm -rf /opt/ghc \ | |
/opt/hostedtoolcache/CodeQL \ | |
/usr/share/dotnet \ | |
/usr/local/lib/android | |
sudo docker image prune --all --force | |
sudo docker builder prune -a | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Login | |
if: ${{ github.event_name != 'pull_request' }} | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Setup Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
with: | |
driver-opts: network=host | |
- name: Generate Dockerfile | |
run: | | |
cat >> ${{ matrix.runtime.name }}.Dockerfile << EOF | |
# syntax = docker/dockerfile:experimental | |
FROM ghcr.io/${{ github.repository }}/flatter-base:latest | |
EOF | |
if [ -n "${{ matrix.runtime.gnome_nightly }}" ]; then | |
cat >> ${{ matrix.runtime.name }}.Dockerfile << EOF | |
RUN --security=insecure flatpak install -y --noninteractive \ | |
gnome-nightly \ | |
${{ matrix.runtime.gnome_nightly }} | |
EOF | |
fi | |
if [ -n "${{ matrix.runtime.flathub_beta }}" ]; then | |
cat >> ${{ matrix.runtime.name }}.Dockerfile << EOF | |
RUN --security=insecure flatpak install -y --noninteractive \ | |
flathub-beta \ | |
${{ matrix.runtime.flathub_beta }} | |
EOF | |
fi | |
if [ -n "${{ matrix.runtime.flathub }}" ]; then | |
cat >> ${{ matrix.runtime.name }}.Dockerfile << EOF | |
RUN --security=insecure flatpak install -y --noninteractive \ | |
flathub \ | |
${{ matrix.runtime.flathub }} | |
EOF | |
fi | |
- name: Build | |
uses: docker/build-push-action@v6 | |
with: | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
allow: security.insecure | |
context: . | |
file: ${{ matrix.runtime.name }}.Dockerfile | |
push: ${{ github.event_name != 'pull_request' }} | |
platforms: linux/amd64,linux/arm64 | |
tags: ghcr.io/${{ github.repository }}/${{ matrix.runtime.name }}:${{ matrix.runtime.tag }} |