* Use Ubuntu ARM64 runner * Add Windows 11 8-core ARM64 and use 8-core for Linux * Add bootstrap step * Install and use choco * Add git to path * Split bootstrap steps * Merge bootstrap steps * Export path manually * Install Python in bootstrap step * Add Python to path * Add choco to path * Add C:\Python312\Scripts to path * Back out ARM64 runner (perhaps only suitable for running programs) * Use ARM64 for build containers
107 lines
3 KiB
YAML
107 lines
3 KiB
YAML
# 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:
|
|
matrix:
|
|
os:
|
|
- 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: 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 }}
|