Files
FairMQ/.github/workflows/buildcache.yml
Dennis Klein 399170879c ci: improve buildcache workflow
- rename mirror to ghcr-buildcache
- find system compiler before building gcc
- separate update-index job to avoid race condition
- always attempt push even on partial failure
2025-11-30 15:51:13 +01:00

93 lines
2.5 KiB
YAML

name: Spack Buildcache
on:
workflow_dispatch:
schedule:
- cron: '0 3 * * 0' # Weekly on Sunday at 3am UTC
push:
paths:
- 'test/ci/spack.yaml'
- '.github/workflows/buildcache.yml'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
if: github.repository == 'FairRootGroup/FairMQ'
name: gcc-${{ matrix.gcc }}
runs-on: ubuntu-latest
permissions:
packages: write
strategy:
fail-fast: false
matrix:
gcc: ['12', '13', '14', '15']
env:
GITHUB_USER: ${{ github.actor }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- name: Setup spack
uses: spack/setup-spack@v2
with:
ref: v1.1.0
color: true
buildcache: true
- name: Create environment and login to OCI registry
shell: spack-bash {0}
run: |
spack env create fairmq test/ci/spack.yaml
spack -e fairmq mirror set --oci-username ${{ github.actor }} --oci-password-variable GITHUB_TOKEN ghcr-buildcache
- name: Find system compiler
shell: spack-bash {0}
run: spack compiler find
- name: Install GCC
shell: spack-bash {0}
run: |
spack install gcc@${{ matrix.gcc }}
spack compiler find $(spack location -i gcc@${{ matrix.gcc }})
- name: Install dependencies
shell: spack-bash {0}
run: |
spack -e fairmq add gcc@${{ matrix.gcc }}
spack -e fairmq config add "packages:all:require:'%gcc@${{ matrix.gcc }}'"
spack -e fairmq install --fail-fast --fresh
- name: Push to buildcache
if: ${{ !cancelled() }}
shell: spack-bash {0}
run: spack -e fairmq buildcache push --unsigned ghcr-buildcache
update-index:
if: github.repository == 'FairRootGroup/FairMQ' && !cancelled()
needs: build
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
permissions:
packages: write
steps:
- uses: actions/checkout@v4
- name: Setup spack
uses: spack/setup-spack@v2
with:
ref: v1.1.0
color: true
- name: Update buildcache index
shell: spack-bash {0}
run: |
spack env create fairmq test/ci/spack.yaml
spack -e fairmq mirror set --oci-username ${{ github.actor }} --oci-password-variable GITHUB_TOKEN ghcr-buildcache
spack -e fairmq buildcache update-index ghcr-buildcache