Skip to content

...

... #32

name: Spack images
on:
schedule: [ { cron: "50 23 * * 0" } ] # run every Sunday 23h50
push: { branches: [ main, 'v*' ] }
pull_request:
defaults:
run:
shell: bash
jobs:
step1_base:
runs-on: ubuntu-latest
steps:
- name: "Build and push 1a-base"
uses: pdidev/test_env/.github/actions/build@v3
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
path: spack/1a-base
image-name: base
cache: ${{ github.event_name != 'schedule' }}
- name: "Build and push 1b-spackbase"
uses: pdidev/test_env/.github/actions/build@v3
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
path: spack/1b-spackbase
image-name: spackbase
skip-setup: true
step2a_precomp:
strategy:
fail-fast: false
matrix:
version: ['latest', 'oldest']
compiler: ['gcc', 'clang']
needs: step1_base
runs-on: ubuntu-latest
steps:
- name: "Build and push"
uses: pdidev/test_env/.github/actions/build@v3
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
path: spack/2a-precomp
image-name: builder:${{ matrix.version }}-${{ matrix.compiler }}-2a
build-args: |
VERSION=${{ matrix.version }}
COMPILER=${{ matrix.compiler }}
step2b_compiler:
strategy:
fail-fast: false
matrix:
version: ['latest', 'oldest']
compiler: ['gcc', 'clang']
needs: step2a_precomp
runs-on: ubuntu-latest
steps:
- name: "Build and push"
uses: pdidev/test_env/.github/actions/build@v3
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
path: spack/2b-compiler
image-name: builder:${{ matrix.version }}-${{ matrix.compiler }}-2b
build-args: |
VERSION=${{ matrix.version }}
COMPILER=${{ matrix.compiler }}
step2c_squash:
strategy:
fail-fast: false
matrix:
version: ['latest', 'oldest']
compiler: ['gcc', 'clang']
needs: step2b_compiler
runs-on: ubuntu-latest
steps:
- name: "Build and push"
uses: pdidev/test_env/.github/actions/build@v3
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
path: spack/2c-squash
image-name: builder:${{ matrix.version }}-${{ matrix.compiler }}-2c
build-args: |
VERSION=${{ matrix.version }}
COMPILER=${{ matrix.compiler }}
step3a_precomp:
strategy:
fail-fast: false
matrix:
version: ['latest', 'oldest']
compiler: ['gcc', 'clang']
needs: step2c_squash
runs-on: ubuntu-latest
steps:
- name: "Build and push"
uses: pdidev/test_env/.github/actions/build@v3
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
path: spack/3a-precomp
image-name: builder:${{ matrix.version }}-${{ matrix.compiler }}-3a
build-args: |
VERSION=${{ matrix.version }}
COMPILER=${{ matrix.compiler }}
step3b_compiler:
strategy:
fail-fast: false
matrix:
version: ['latest', 'oldest']
compiler: ['gcc', 'clang']
needs: step3a_precomp
runs-on: ubuntu-latest
steps:
- name: "Build and push"
uses: pdidev/test_env/.github/actions/build@v3
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
path: spack/3b-compiler
image-name: builder:${{ matrix.version }}-${{ matrix.compiler }}-3b
build-args: |
VERSION=${{ matrix.version }}
COMPILER=${{ matrix.compiler }}
step3c_squash:
strategy:
fail-fast: false
matrix:
version: ['latest', 'oldest']
compiler: ['gcc', 'clang']
needs: step3b_compiler
runs-on: ubuntu-latest
steps:
- name: "Build and push"
uses: pdidev/test_env/.github/actions/build@v3
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
path: spack/3c-squash
image-name: builder:${{ matrix.version }}-${{ matrix.compiler }}-3c
build-args: |
VERSION=${{ matrix.version }}
COMPILER=${{ matrix.compiler }}
step4_baselibs:
strategy:
fail-fast: false
matrix:
version: ['latest', 'oldest']
compiler: ['gcc', 'clang']
needs: step3c_squash
runs-on: ubuntu-latest
steps:
- name: "Build and push 4a-baselibs"
uses: pdidev/test_env/.github/actions/build@v3
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
path: spack/4a-baselibs
image-name: builder:${{ matrix.version }}-${{ matrix.compiler }}-4a
build-args: |
VERSION=${{ matrix.version }}
COMPILER=${{ matrix.compiler }}
- name: "Build and push 4b-squash"
uses: pdidev/test_env/.github/actions/build@v3
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
path: spack/4b-squash
image-name: builder:${{ matrix.version }}-${{ matrix.compiler }}-4b
build-args: |
VERSION=${{ matrix.version }}
COMPILER=${{ matrix.compiler }}
skip-setup: true
step5_mpi:
strategy:
fail-fast: false
matrix:
version: ['latest', 'oldest']
compiler: ['gcc', 'clang']
mpi: ['openmpi','mpich']
needs: step4_baselibs
runs-on: ubuntu-latest
steps:
- name: "Build and push 5a-mpi"
uses: pdidev/test_env/.github/actions/build@v3
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
path: spack/5a-mpi
image-name: builder:${{ matrix.version }}-${{ matrix.compiler }}-${{ matrix.mpi }}-5a
build-args: |
VERSION=${{ matrix.version }}
COMPILER=${{ matrix.compiler }}
MPI=${{ matrix.mpi }}
- name: "Build and push spack/5b-squash"
uses: pdidev/test_env/.github/actions/build@v3
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
path: spack/spack/5b-squash
image-name: builder:${{ matrix.version }}-${{ matrix.compiler }}-${{ matrix.mpi }}-mini
build-args: |
VERSION=${{ matrix.version }}
COMPILER=${{ matrix.compiler }}
MPI=${{ matrix.mpi }}
skip-setup: true
step6_optlibs:
strategy:
fail-fast: false
matrix:
version: ['latest', 'oldest']
compiler: ['gcc', 'clang']
mpi: ['openmpi','mpich']
needs: step5_mpi
runs-on: ubuntu-latest
steps:
- name: "Build and push"
uses: pdidev/test_env/.github/actions/build@v3
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
path: spack/6-optlibs
image-name: builder:${{ matrix.version }}-${{ matrix.compiler }}-${{ matrix.mpi }}-all
build-args: |
VERSION=${{ matrix.version }}
COMPILER=${{ matrix.compiler }}
MPI=${{ matrix.mpi }}
step7_finalize:
strategy:
fail-fast: false
matrix:
version: ['latest', 'oldest']
compiler: ['gcc', 'clang']
mpi: ['openmpi','mpich']
level: ['mini', 'all']
needs: step6_optlibs
runs-on: ubuntu-latest
steps:
- name: "Build and push"
uses: pdidev/test_env/.github/actions/build@v3
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
path: spack/7-finalize
image-name: spack/${{ matrix.version }}/${{ matrix.compiler }}/${{ matrix.mpi }}/${{ matrix.level }}
build-args: |
VERSION=${{ matrix.version }}
COMPILER=${{ matrix.compiler }}
MPI=${{ matrix.mpi }}
LIBS=${{ matrix.level }}
- name: Publish tagged
if: ${{ github.event_name == 'push' || github.event_name == 'schedule' }}
run: |
DOCKER_TAG="${{github.ref_name}}"
docker tag ghcr.io/pdidev/spack/${{ matrix.version }}/${{ matrix.compiler }}/${{ matrix.mpi }}/${{ matrix.level }} ghcr.io/pdidev/spack/${{ matrix.version }}/${{ matrix.compiler }}/${{ matrix.mpi }}/${{ matrix.level }}:${{github.ref_name}}
docker push ghcr.io/pdidev/spack/${{ matrix.version }}/${{ matrix.compiler }}/${{ matrix.mpi }}/${{ matrix.level }}:${{github.ref_name}}