# Weekly build of the Linux Docker containers. # # The objective is to reduce the problem where package updates often break the build process # due to transient network errors. # # We use Docker Buildx instead of Docker Automated Builds so that we can create an image that is # always at most a week out of date (instead of the last time a Dockerfile change was pushed). name: Build containers on: workflow_dispatch: schedule: - cron: "0 5 * * 0" jobs: build-containers: name: ${{ matrix.os.name }} runs-on: ${{ matrix.os.runs-on }} if: ${{ vars.BUILD_CONTAINERS }} timeout-minutes: 10 strategy: # Build all images even if some fail. fail-fast: false matrix: os: - name: debian-13-amd64 runs-on: ubuntu-latest config-dir: debian base-image: debian:trixie-slim platform: amd64 - name: debian-12-amd64 runs-on: ubuntu-latest config-dir: debian base-image: debian:12-slim platform: amd64 - name: debian-12-arm64 runs-on: ubuntu-24.04-8-core-arm64 config-dir: debian base-image: arm64v8/debian:12-slim platform: arm64 - name: ubuntu-24.04-amd64 runs-on: ubuntu-latest config-dir: debian base-image: ubuntu:24.04 platform: amd64 - name: ubuntu-22.04-amd64 runs-on: ubuntu-latest config-dir: debian base-image: ubuntu:22.04 platform: amd64 - name: fedora-40-amd64 runs-on: ubuntu-latest config-dir: fedora base-image: fedora:40 platform: amd64 - name: fedora-40-arm64 runs-on: ubuntu-24.04-8-core-arm64 config-dir: fedora base-image: arm64v8/fedora:40 platform: arm64 - name: fedora-39-amd64 runs-on: ubuntu-latest config-dir: fedora base-image: fedora:39 platform: amd64 - name: rockylinux-9-amd64 runs-on: ubuntu-latest config-dir: fedora base-image: rockylinux:9 platform: amd64 - name: almalinux-9-amd64 runs-on: ubuntu-latest config-dir: fedora base-image: almalinux:9 platform: amd64 - name: opensuse-amd64 runs-on: ubuntu-latest config-dir: opensuse base-image: opensuse/tumbleweed:latest platform: amd64 - name: archlinux-amd64 runs-on: ubuntu-latest config-dir: archlinux base-image: archlinux:latest platform: amd64 - name: manjaro-amd64 config-dir: archlinux runs-on: ubuntu-latest base-image: manjarolinux/base:latest platform: amd64 steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v6 with: push: true context: . file: ./.github/docker/${{ matrix.os.config-dir }}/Dockerfile tags: symless/synergy-core:${{ matrix.os.name }} build-args: BASE_IMAGE=${{ matrix.os.base-image }} platforms: linux/${{ matrix.os.platform }}