Skip to content

Commit

Permalink
Swap to Spack and matrix-based GHA for more reliability
Browse files Browse the repository at this point in the history
  • Loading branch information
Matthew-Whitlock committed Oct 8, 2024
1 parent 5975281 commit 46f30d1
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 120 deletions.
29 changes: 0 additions & 29 deletions .github/Dockerfile

This file was deleted.

124 changes: 48 additions & 76 deletions .github/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,81 +1,53 @@
version: "3.9"

x-fenix: &fenix
build: &fenix-build
context: ./
dockerfile: .github/Dockerfile
args:
OPENMPI_REPO: open-mpi/ompi
OPENMPI_VERS_PREFIX: tags
OPENMPI_VERS: v5.0.0rc10
#Caches should be manually scoped, or they'll conflict.
x-bake:
cache-from:
- type=gha,scope=default
cache-to:
- type=gha,scope=default,mode=max

services:
#fenix_ompi_5rc10:
# <<: *fenix
# image: "fenix:ompi_5rc10"
# build:
# <<: *fenix-build
# x-bake:
# cache-from:
# - type=gha,scope=ompi_5rc10
# cache-to:
# - type=gha,scope=ompi_5rc10,mode=max

fenix_ompi_5:
<<: *fenix
image: "fenix:ompi_5"
bootstrap:
image: "local/bootstrap"
build:
<<: *fenix-build
dockerfile_inline: |
FROM spack/ubuntu-focal:0.21.3
VOLUME /configs
ARG ompi_version
ENV ompi_version=$$ompi_version
CMD cp /configs/spack.yaml . && \
spack -e . add openmpi@$${ompi_version} && \
spack -e . containerize >/configs/spack.Dockerfile
args:
- OPENMPI_VERS_PREFIX=heads
- OPENMPI_VERS=v5.0.x
x-bake:
cache-from:
- type=gha,scope=ompi_5
cache-to:
- type=gha,scope=ompi_5,mode=max

fenix_ompi_main:
<<: *fenix
image: "fenix:ompi_main"
ompi_version: main
no_cache: true
pull_policy: build
volumes:
- .github/:/configs

env:
image: "local/env"
build:
<<: *fenix-build
args:
- OPENMPI_VERS_PREFIX=heads
- OPENMPI_VERS=main
x-bake:
cache-from:
- type=gha,scope=ompi_main
cache-to:
- type=gha,scope=ompi_main,mode=max

fenix_icldisco_latest:
<<: *fenix
image: "fenix:icldisco_latest"
# Generated by spack in a previous workflow step
dockerfile: .github/spack.Dockerfile
depends_on:
bootstrap:
condition: service_completed_successfully
required: true
pull_policy: build


fenix:
image: "local/fenix"
build:
<<: *fenix-build
args:
- OPENMPI_REPO=icldisco/ompi
- OPENMPI_VERS_PREFIX=heads
- OPENMPI_VERS=ulfm/latest
x-bake:
cache-from:
- type=gha,scope=icldisco_latest
cache-to:
- type=gha,scope=icldisco_latest,mode=max

#fenix_icldisco_experimental:
# <<: *fenix
# image: fenix/icldisco
# build:
# <<: *fenix-build
# args:
# - OPENMPI_REPO=icldisco/ompi
# - OPENMPI_VERS_PREFIX=heads
# - OPENMPI_VERS=ulfm/experimental
dockerfile_inline: |
FROM local/env
COPY . /fenix
RUN . /opt/spack-environment/activate.sh && \
mkdir -p /fenix/build && \
rm -r /fenix/build/* && \
cd /fenix/build && \
cmake /fenix \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=mpicc \
-DFENIX_EXAMPLES=ON \
-DFENIX_TESTS=ON \
-DMPIEXEC_PREFLAGS="--allow-run-as-root;--map-by;:oversubscribe" && \
make -j
WORKDIR /fenix/build
ENTRYPOINT ["/entrypoint.sh"]
CMD ["ctest", "--output-on-failure"]
pull_policy: build
35 changes: 35 additions & 0 deletions .github/spack.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
spack:
packages:
openmpi:
variants: +internal-hwloc +internal-libevent +internal-pmix
concretizer:
unify: true
reuse: true

container:
format: docker
strip: false
images:
os: ubuntu:22.04
spack: latest
os_packages:
build:
- build-essential
- autotools-dev
- libevent-dev
- pkg-config
- python3
- m4
- autoconf
- automake
- libtool
- flex
- git
- zlib1g-dev
- openssh-server
- libperl-dev
- pkg-config
- numactl
final:
- build-essential
- cmake
43 changes: 28 additions & 15 deletions .github/workflows/ci_checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,33 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: docker/setup-buildx-action@v2
- name: Build
uses: docker/bake-action@master
- name: Checkout repository
uses: actions/checkout@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Bootstrap the environment Dockerfile
uses: docker/bake-action@v5
with:
files: .github/docker-compose.yml
load: true
target: bootstrap

- name: Build the environment
uses: docker/bake-action@v5
with:
files: |
.github/docker-compose.yml
files: .github/docker-compose.yml
load: true
- name: Test open-mpi v5.0.x
if: success() || failure()
run: docker run fenix:ompi_5
- name: Test open-mpi main
if: success() || failure()
run: docker run fenix:ompi_main
- name: Test icldisco latest
if: success() || failure()
run: docker run fenix:icldisco_latest
target: env

- name: Build Fenix
uses: docker/bake-action@v5
with:
source: .
files: .github/docker-compose.yml
load: true
target: fenix

- name: Test Fenix
run: docker run local/fenix

0 comments on commit 46f30d1

Please sign in to comment.