lusol factor extraction #180
Workflow file for this run
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
# https://spack.readthedocs.io/en/latest/binary_caches.html#spack-build-cache-for-github-actions | |
name: Spack Ubunutu x86_64 Buildcache | |
env: | |
SPACK_COLOR: always | |
REGISTRY: ghcr.io/ornl | |
# Our repo name contains upper case characters, so we can't use ${{ github.repository }} | |
IMAGE_NAME: resolve | |
USERNAME: resolve-bot | |
BASE_VERSION: ubuntu-22.04-fortran | |
# Until we remove the need to clone submodules to build, this should on be in PRs | |
on: [pull_request] | |
jobs: | |
base_image_build: | |
runs-on: ubuntu-22.04 | |
permissions: | |
packages: write | |
contents: read | |
name: Build Custom Base Image | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
# Once we move submodule deps into spack, we can do some more builds | |
# Also need to change build script to use spack from base image | |
submodules: true | |
# Need to build custom base image with gfortran | |
- name: Create Dockerfile heredoc | |
run: | | |
cat << EOF > Dockerfile | |
FROM ubuntu:22.04 | |
RUN apt-get update && \ | |
apt-get install -y --no-install-recommends \ | |
software-properties-common \ | |
gpg-agent \ | |
openssh-client \ | |
openssh-server \ | |
&& rm -rf /var/lib/apt/lists/* | |
RUN add-apt-repository ppa:ubuntu-toolchain-r/test && \ | |
apt-get install -y --no-install-recommends \ | |
gcc \ | |
libstdc++6 \ | |
&& rm -rf /var/lib/apt/lists/* | |
EOF | |
# https://docs.github.com/en/actions/publishing-packages/publishing-docker-images | |
- name: Log in to the Container registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ env.USERNAME }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Extract metadata (tags, labels) for Docker | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
labels: org.opencontainers.image.version=${{ env.BASE_VERSION }} | |
- name: Build and push Docker base image | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
push: true | |
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.BASE_VERSION }} | |
labels: ${{ steps.meta.outputs.labels }} | |
resolve_spack_builds: | |
needs: base_image_build | |
runs-on: ubuntu-22.04 | |
permissions: | |
packages: write | |
contents: read | |
strategy: | |
matrix: | |
# Minimal Build(s) - GHCR mirror speeds these up a lot! | |
spack_spec: | |
- resolve@develop~klu~lusol | |
- resolve@develop+klu~lusol | |
- resolve@develop+klu+lusol | |
name: Build ReSolve with Spack | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
# Once we move submodule deps into spack, we can do some more builds | |
# Also need to change build script to use spack from base image | |
submodules: true | |
- name: Setup Spack | |
run: echo "$PWD/buildsystem/spack/spack/bin" >> "$GITHUB_PATH" | |
- name: Create heredoc spack.yaml | |
run: | | |
cat << EOF > spack.yaml | |
spack: | |
specs: | |
- ${{ matrix.spack_spec }} target=x86_64_v2 | |
concretizer: | |
reuse: dependencies | |
config: | |
install_tree: | |
root: /opt/spack | |
padded_length: 128 | |
mirrors: | |
local-buildcache: oci://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
spack: https://binaries.spack.io/develop | |
EOF | |
- name: Configure GHCR mirror | |
run: spack -e . mirror set --oci-username ${{ env.USERNAME }} --oci-password "${{ secrets.GITHUB_TOKEN }}" local-buildcache | |
- name: Trust keys | |
run: spack -e . buildcache keys --install --trust | |
- name: Find external packages | |
run: spack -e . external find --all | |
- name: Spack develop ReSolve | |
run: spack -e . develop --path=$(pwd) resolve@develop | |
- name: Concretize | |
run: spack -e . concretize | |
- name: Install dependencies | |
run: spack -e . install --no-check-signature --only dependencies | |
- name: Install package | |
run: spack -e . install --keep-stage --no-check-signature --no-cache --fresh | |
- name: Test Build | |
run: cd $(spack -e . location --build-dir resolve@develop) && ctest -VV | |
- name: Test Installation | |
run: cd $(spack -e . location --build-dir resolve@develop) && make test_install | |
# Push with force to override existing binaries... | |
- name: Push to binaries to buildcache | |
run: | | |
spack -e . buildcache push --force --base-image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.BASE_VERSION }} --unsigned --update-index local-buildcache | |
if: ${{ !cancelled() }} |