memoize (24nov24) #1817
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
# $Id$ | |
# .github/workflows/main.yml for texlive-source CI building | |
# | |
# Norbert Preining | |
# Public Domain | |
# | |
# See https://github.com/TeX-Live/texlive-source/actions for status. | |
# | |
# This file controls CI testing via Github Actions of the | |
# git-svn checkout of the TeX Live source directory | |
# which is pushed to Github at: | |
# https://github.com/TeX-Live/texlive-source | |
# | |
# The cron job that does the git svn up and git push is | |
# running on texlive.info; see norbert cron there. Run cmd as norbert: | |
# /home/norbert/git-svn-repos/git-svn-syncer --new texlive-source | |
# | |
# A build is started with every commit. If a commit happens while a | |
# build is running, somtimes the build is cancelled and a new one | |
# started, and other times the new build waits until the old one is | |
# complete? Seems mysterious. | |
# | |
# See tlpkg/bin/tl-update-bindir for retrieving the binaries, which is | |
# done only when a release is tagged, not from the | |
# commit-triggered builds here. | |
# only build on push to trunk, not branch. | |
on: | |
release: | |
types: | |
- released | |
- prereleased | |
push: | |
branches: | |
- trunk | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build_job: | |
runs-on: ubuntu-latest | |
name: Build on ${{ matrix.tl_name }} | |
strategy: | |
fail-fast: false | |
matrix: | |
# we need to list the archs here, otherwise the matrix contains only | |
# one element release_build and that is overwritten by the include statements | |
tl_name: [ i386-linux, x86_64-linux, x86_64-linuxmusl, aarch64-linux, armhf-linux ] | |
release_build: | |
- ${{ startsWith(github.ref, 'refs/tags/') }} | |
include: | |
- tl_name: i386-linux | |
image: i386/debian:buster | |
platform: 386 | |
ci_build: true | |
use_qemu: false | |
buildsys: debian | |
- tl_name: x86_64-linux | |
image: almalinux:8 | |
platform: amd64 | |
ci_build: true | |
use_qemu: false | |
buildsys: almalinux | |
- tl_name: x86_64-linuxmusl | |
image: alpine:3.12 | |
platform: amd64 | |
ci_build: true | |
use_qemu: false | |
buildsys: alpine | |
- tl_name: aarch64-linux | |
image: arm64v8/debian:buster | |
platform: aarch64 | |
ci_build: false | |
use_qemu: true | |
qemu_arch: aarch64 | |
buildsys: debian | |
- tl_name: armhf-linux | |
image: arm32v7/debian:buster | |
platform: arm/v7 | |
ci_build: false | |
use_qemu: true | |
qemu_arch: arm | |
buildsys: debian | |
steps: | |
- name: checkout-main | |
uses: actions/checkout@v4 | |
with: | |
path: 'repo' | |
- name: Setup QEMU | |
if: matrix.use_qemu | |
uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: ${{ matrix.qemu_arch }} | |
- name: build | |
uses: addnab/docker-run-action@v3 | |
if: ${{ matrix.ci_build || matrix.release_build }} | |
with: | |
image: ${{ matrix.image }} | |
options: -v ${{ github.workspace }}:/work --platform linux/${{ matrix.platform }} | |
run: | | |
cd /work/repo | |
.github/scripts/build-tl.sh ${{ matrix.tl_name }} ${{ matrix.buildsys }} | |
- name: find file step | |
if: ${{ matrix.ci_build || matrix.release_build }} | |
run: ls -l $GITHUB_WORKSPACE/repo/texlive-bin-${{ matrix.tl_name }}.tar.gz | |
- name: save artifact | |
if: ${{ matrix.ci_build || matrix.release_build }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: texlive-bin-${{ matrix.tl_name }}.tar.gz | |
path: ${{ github.workspace }}/repo/texlive-bin-${{ matrix.tl_name }}.tar.gz | |
compression-level: 0 | |
- name: Release | |
uses: AButler/[email protected] | |
if: matrix.release_build | |
with: | |
files: ${{ github.workspace }}/repo/texlive-bin-${{ matrix.tl_name }}.tar.gz | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
vm_build_job: | |
runs-on: ubuntu-latest | |
name: Build on ${{ matrix.arch }}-${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [ i386, amd64 ] | |
os: [ freebsd, solaris ] | |
release_build: | |
- ${{ startsWith(github.ref, 'refs/tags/') }} | |
include: | |
- os: freebsd | |
ci_build: true | |
- os: solaris | |
ci_build: true | |
steps: | |
- name: checkout-main | |
uses: actions/checkout@v4 | |
with: | |
path: 'repo' | |
- name: build freebsd | |
uses: vmactions/freebsd-vm@v1 | |
if: ${{ matrix.os == 'freebsd' && (matrix.ci_build || matrix.release_build) }} | |
with: | |
release: '13.2' | |
usesh: true | |
run: | | |
cd repo | |
sh .github/scripts/build-tl.sh ${{ matrix.arch }}-${{ matrix.os }} ${{ matrix.os }} | |
- name: build solaris | |
uses: vmactions/solaris-vm@v1 | |
if: ${{ matrix.os == 'solaris' && (matrix.ci_build || matrix.release_build) }} | |
with: | |
usesh: true | |
release: '11.4-gcc' | |
run: | | |
cd repo | |
sh .github/scripts/build-tl.sh ${{ matrix.arch }}-${{ matrix.os }} ${{ matrix.os }} | |
- name: find file step | |
if: ${{ matrix.ci_build || matrix.release_build }} | |
run: ls -l $GITHUB_WORKSPACE/repo/texlive-bin-${{ matrix.arch }}-${{ matrix.os }}.tar.gz | |
- name: save artifact | |
if: ${{ matrix.ci_build || matrix.release_build }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: texlive-bin-${{ matrix.arch }}-${{ matrix.os }}.tar.gz | |
path: ${{ github.workspace }}/repo/texlive-bin-${{ matrix.arch }}-${{ matrix.os }}.tar.gz | |
compression-level: 0 | |
- name: Release | |
uses: AButler/[email protected] | |
if: matrix.release_build | |
with: | |
files: ${{ github.workspace }}/repo/texlive-bin-${{ matrix.arch }}-${{ matrix.os }}.tar.gz | |
repo-token: ${{ secrets.GITHUB_TOKEN }} |