# $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/ubuntu:xenial platform: 386 ci_build: true use_qemu: false buildsys: ubuntu - tl_name: x86_64-linux image: centos:7 platform: amd64 ci_build: true use_qemu: false buildsys: centos - tl_name: x86_64-linuxmusl image: alpine:3.5 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/upload-release-assets@v3.0 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: [ netbsd, freebsd, solaris ] release_build: - ${{ startsWith(github.ref, 'refs/tags/') }} include: - os: freebsd ci_build: true - os: netbsd ci_build: true - os: solaris ci_build: true steps: - name: checkout-main uses: actions/checkout@v4 with: path: 'repo' - name: build netbsd uses: vmactions/netbsd-vm@v1 if: ${{ matrix.os == 'netbsd' && (matrix.ci_build || matrix.release_build) }} with: release: '9.0' usesh: true run: | cd repo sh .github/scripts/build-tl.sh ${{ matrix.arch }}-${{ matrix.os }} ${{ matrix.os }} - 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/upload-release-assets@v3.0 if: matrix.release_build with: files: ${{ github.workspace }}/repo/texlive-bin-${{ matrix.arch }}-${{ matrix.os }}.tar.gz repo-token: ${{ secrets.GITHUB_TOKEN }}