Skip to content

Commpath

Commpath #109

Workflow file for this run

# FIXME Handle case where only a subset of nodes generate logs.
# FIXME More refactoring, possibly with bash functions and filename templates as ENV variables
name: ci
on:
push:
branches:
- devel
- commpath
pull_request:
branches:
- devel
permissions:
contents: read
packages: read
concurrency:
group: ci-${{github.ref}}-${{github.event.pull_request.number || github.run_number}}
cancel-in-progress: true
jobs:
################################################################################
# spindle-serial-ubuntu
################################################################################
spindle-serial-ubuntu:
name: Testsuite (Serial, Ubuntu, debug=${{ matrix.debug }})
environment: Spindle CI
runs-on: ubuntu-latest
timeout-minutes: 20
env:
TARBALL: ./serial_ubunutu_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
strategy:
fail-fast: false
matrix:
debug: [3] # revert!
steps:
- name: Check out Spindle
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Setup Docker Compose
uses: docker/setup-compose-action@364cc21a5de5b1ee4a7f5f9d3fa374ce0ccde746
with:
version: latest
- name: Build spindle-serial-ubuntu image
id: serial-ubuntu-build
run: |
cd containers/spindle-serial-ubuntu
docker compose --progress=plain build
- name: Bring spindle-serial-ubuntu up
id: serial-ubuntu-up
run: |
cd containers/spindle-serial-ubuntu
docker compose up -d
- name: Verify munge works in spindle-serial-ubuntu
id: serial-ubuntu-munge
run: |
docker exec spindlenode bash -c 'munge -n | unmunge'
# Matrix across "debug"
- name: Run spindle-serial-ubuntu testsuite
timeout-minutes: ${{ matrix.debug == 0 && 2 || 2 }}
run: |
if [ "${{ matrix.debug }}" = "0" ]; then
docker exec spindlenode bash -c \
'cd Spindle-build/testsuite && ./runTests'
else
docker exec spindlenode bash -c \
"cd Spindle-build/testsuite && SPINDLE_DEBUG=${{ matrix.debug }} ./runTests"
fi
# If we saw any failures, tar up the logfiles for extraction.
- name: On failure, pull logs out of the container(s)
id: serial-ubuntu-copy-from-container
if: ${{ success() && matrix.debug != 0}} # REVERT!
continue-on-error: true
run: |
docker exec spindlenode bash -c "tar cjvf /home/spindleuser/ubuntu_serial_logs.tar.bz2 /home/spindleuser/Spindle-build//testsuite/spindle_output*"
docker cp spindlenode:/home/spindleuser/ubuntu_serial_logs.tar.bz2 ./ubuntu_serial_logs.tar.bz2
- name: Upload ubuntu-serial logs
id: serial-ubuntu-copy-to-artifact
if: ${{ success() }} # REVERT!
uses: actions/upload-artifact@v6
with:
name: Ubuntu serial logs tarball
path: ./ubuntu_serial_logs.tar.bz2
- name: Bring spindle-serial-ubuntu down
id: serial-ubuntu-down
if: ${{ always() }}
continue-on-error: true
run: |
cd containers/spindle-serial-ubuntu
docker compose down
#################################################################################
## spindle-flux-ubuntu
#################################################################################
# spindle-flux-ubuntu-debug3:
# name: Testsuite (Flux, Ubuntu)
# environment: Spindle CI
# runs-on: ubuntu-latest
# timeout-minutes: 20
# env:
# TARBALL1: ./flux_node1_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
# TARBALL2: ./flux_node2_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
# TARBALL3: ./flux_node3_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
# TARBALL4: ./flux_node4_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
# strategy:
# fail-fast: false
# matrix:
# debug: [3, 2, 1, 0]
# steps:
# - name: Check out Spindle (spindle-flux-ubuntu-debug3)
# uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
#
# - name: Setup Docker Compose (spindle-flux-ubuntu-debug3)
# uses: docker/setup-compose-action@364cc21a5de5b1ee4a7f5f9d3fa374ce0ccde746
# with:
# version: latest
#
# - name: Build spindle-flux-ubuntu-debug3 image
# id: flux-ubuntu-build
# run: |
# cd containers/spindle-flux-ubuntu
# docker compose --progress=plain build
#
# - name: Bring spindle-flux-ubuntu up
# id: flux-ubuntu--up
# run: |
# cd containers/spindle-flux-ubuntu
# docker compose up -d --wait --wait-timeout 60
#
# - name: Verify munge works in spindle-flux-ubuntu-debug3
# id: flux-ubuntu-debug3-munge
# run: |
# docker exec node-1 bash -c 'munge -n | unmunge'
#
# # Observed time: 5m 12s
# - name: Run spindle-flux-ubuntu testsuite
# timeout-minutes: 7
# id: flux-ubuntu-testsuite
# run: |
# if [ "${{ matrix.debug }}" = "0" ]; then
# docker exec node-1 bash -c \
# 'cd /home/fluxuser/Spindle-build/testsuite && \
# flux alloc --nodes=${workers} \
# ./runTests --nodes=${workers} --tasks-per-node=3'
# else
# docker exec node-1 bash -c \
# 'cd /home/fluxuser/Spindle-build/testsuite && \
# SPINDLE_DEBUG=${{ matrix.debug }} \
# flux alloc --nodes=${workers} \
# ./runTests --nodes=${workers} --tasks-per-node=3'
# fi
#
# # If we saw any failures, tar up the logfiles for extraction. Observed time: 7m 51s
# - name: Extract logs from spindle-flux-ubuntu
# timeout-minutes: 9
# id: flux-ubuntu-tar
# if: ${{ failure() && matrix.debug != 0 }}
# continue-on-error: true
# run: |
# docker exec node-1 bash -c "ls /home/fluxuser/Spindle-build/testsuite/spindle_output*"
# docker exec node-1 bash -c "cd /home/fluxuser/Spindle-build && tar cjvf ./node1.tar.bz2 ./testsuite/spindle_output*"
# docker exec node-2 bash -c "cd /home/fluxuser/Spindle-build && tar cjvf ./node2.tar.bz2 ./testsuite/spindle_output*"
# docker exec node-3 bash -c "cd /home/fluxuser/Spindle-build && tar cjvf ./node3.tar.bz2 ./testsuite/spindle_output*"
# docker exec node-4 bash -c "cd /home/fluxuser/Spindle-build && tar cjvf ./node4.tar.bz2 ./testsuite/spindle_output*"
# docker cp node-1:/home/fluxuser/Spindle-build/node1.tar.bz2 $TARBALL1
# docker cp node-2:/home/fluxuser/Spindle-build/node2.tar.bz2 $TARBALL2
# docker cp node-3:/home/fluxuser/Spindle-build/node3.tar.bz2 $TARBALL3
# docker cp node-4:/home/fluxuser/Spindle-build/node4.tar.bz2 $TARBALL4
#
# - name: Upload logs to artifacts
# id: flux-ubuntu-artifact
# if: ${{ failure() && matrix.debug != 0 }}
# uses: actions/upload-artifact@v6
# with:
# name: Ubuntu flux logs tarball
# # NOTE: This is the runner path, not the container path.
# path: |
# $TARBALL1
# $TARBALL2
# $TARBALL3
# $TARBALL4
#
# - name: spindle-flux-ubuntu teardown container
# id: flux-ubuntu-down
# if: ${{ always() }}
# continue-on-error: true
# run: |
# cd containers/spindle-flux-ubuntu
# docker compose down
#
#################################################################################
## spindle-slurm-ubuntu
#################################################################################
# spindle-slurm-ubuntu:
# name: Testsuite (Slurm, Ubuntu)
# environment: Spindle CI
# runs-on: ubuntu-latest
# timeout-minutes: 12
# env:
# TARBALL1: ./slurm_node1_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
# TARBALL2: ./slurm_node2_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
# TARBALL3: ./slurm_node3_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
# TARBALL4: ./slurm_node4_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
# TARBALL5: ./slurm_nodeH_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
# strategy:
# fail-fast: false
# matrix:
# debug: [3, 2, 1, 0]
# steps:
# - name: Check out Spindle
# uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
#
# - name: Setup Docker Compose
# uses: docker/setup-compose-action@364cc21a5de5b1ee4a7f5f9d3fa374ce0ccde746
# with:
# version: latest
#
# - name: Login to GitHub Container Registry
# if: ${{ !env.ACT }}
# uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9
# with:
# registry: ghcr.io
# username: ${{ github.actor }}
# password: ${{ secrets.GITHUB_TOKEN }}
#
# - name: Generate MariaDB configuration
# id: slurm-ubuntu-mariadb
# run: |
# cd containers/spindle-slurm-ubuntu/testing
# ./generate_config.sh
#
# - name: Build spindle-slurm-ubuntu image
# id: slurm-ubuntu-build
# run: |
# cd containers/spindle-slurm-ubuntu/testing
# docker compose --progress=plain build
#
# - name: Bring spindle-slurm-ubuntu up
# id: slurm-ubuntu-up
# run: |
# cd containers/spindle-slurm-ubuntu/testing
# docker compose up -d --wait --wait-timeout 120
#
# - name: Verify munge works in spindle-slurm-ubuntu
# id: slurm-ubuntu-munge
# run: |
# docker exec slurm-head bash -c 'munge -n | unmunge'
#
## Matrix across "debug"
# - name: Run spindle-slurm-ubuntu testsuite
# timeout-minutes: 4
# id: slurm-ubuntu-debug3-testsuite
# run: |
# if [ "${{ matrix.debug }}" = "0" ]; then
# docker exec slurm-head bash -c \
# 'cd Spindle-build/testsuite && \
# salloc -n${workers} -N${workers} ./runTests ${workers}'
# else
# docker exec slurm-head bash -c \
# 'cd Spindle-build/testsuite && SPINDLE_DEBUG=${{ matrix.debug }} \
# salloc -n${workers} -N${workers} ./runTests ${workers}'
# fi
#
## Extract logs on failure
# - name: Pull logs out of the container(s)
# id: slurm-ubuntu-copy-from-container
# if: ${{ failure() && matrix.debug != 0 }}
# continue-on-error: true
# run: |
# docker exec slurm-node-1 bash -c "ls /home/slurmuser/Spindle-build/testsuite/spindle_output*"
# docker exec slurm-node-1 bash -c "cd /home/slurmuser/Spindle-build && tar cjvf ./node1.tar.bz2 ./testsuite/spindle_output*"
# docker exec slurm-node-2 bash -c "cd /home/slurmuser/Spindle-build && tar cjvf ./node2.tar.bz2 ./testsuite/spindle_output*"
# docker exec slurm-node-3 bash -c "cd /home/slurmuser/Spindle-build && tar cjvf ./node3.tar.bz2 ./testsuite/spindle_output*"
# docker exec slurm-node-4 bash -c "cd /home/slurmuser/Spindle-build && tar cjvf ./node4.tar.bz2 ./testsuite/spindle_output*"
# docker exec slurm-head bash -c "cd /home/slurmuser/Spindle-build && tar cjvf ./head.tar.bz2 ./testsuite/spindle_output*"
# docker cp slurm-node-1:/home/slurmuser/Spindle-build/node1.tar.bz2 $TARBALL1
# docker cp slurm-node-2:/home/slurmuser/Spindle-build/node2.tar.bz2 $TARBALL2
# docker cp slurm-node-3:/home/slurmuser/Spindle-build/node3.tar.bz2 $TARBALL3
# docker cp slurm-node-4:/home/slurmuser/Spindle-build/node4.tar.bz2 $TARBALL4
# docker cp slurm-head:/home/slurmuser/Spindle-build/head.tar.bz2 $TARBALLH
#
# - name: Upload slurm ubuntu logs
# id: slurm-ubuntu-copy-to-artifact
# if: ${{ failure() && matrix.debug != 0 }}
# uses: actions/upload-artifact@v6
# with:
# name: Ubuntu slurm logs tarball
# # NOTE: This is the runner path, not the container path.
# path: |
# $TARBALL1
# $TARBALL2
# $TARBALL3
# $TARBALL4
# $TARBALLH
#
# - name: Bring spindle-slurm-ubuntu down
# id: slurm-ubuntu-down
# if: ${{ always() }}
# continue-on-error: true
# run: |
# cd containers/spindle-slurm-ubuntu/testing
# docker compose down
#
#################################################################################
## spindle-slurm-plugin-ubuntu
#################################################################################
# spindle-slurm-plugin-ubuntu:
# name: Testsuite (Slurm Plugin, Ubuntu)
# environment: Spindle CI
# runs-on: ubuntu-latest
# timeout-minutes: 12
# env:
# TARBALL1: ./plugin_node1_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
# TARBALL2: ./plugin_node2_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
# TARBALL3: ./plugin_node3_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
# TARBALL4: ./plugin_node4_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
# TARBALL5: ./plugin_nodeH_dbg${{ matrix.debug }}_${{ github.run_id }}_${{ github.run_attempt }}.tar.bz2
# strategy:
# fail-fast: false
# matrix:
# debug: [3, 2, 1, 0]
# steps:
# - name: Check out Spindle
# uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
#
# - name: Setup Docker Compose
# uses: docker/setup-compose-action@364cc21a5de5b1ee4a7f5f9d3fa374ce0ccde746
# with:
# version: latest
#
# - name: Login to GitHub Container Registry
# if: ${{ !env.ACT }}
# uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef
# with:
# registry: ghcr.io
# username: ${{ github.actor }}
# password: ${{ secrets.GITHUB_TOKEN }}
#
# - name: Generate MariaDB configuration
# id: slurm-ubuntu-mariadb
# run: |
# cd containers/spindle-slurm-ubuntu/testing-plugin
# ./generate_config.sh
#
# - name: Build spindle-slurm-plugin-ubuntu image
# id: slurm-ubuntu-build
# run: |
# cd containers/spindle-slurm-ubuntu/testing-plugin
# docker compose --progress=plain build
#
# - name: Bring spindle-slurm-plugin-ubuntu up
# id: slurm-ubuntu-up
# run: |
# cd containers/spindle-slurm-ubuntu/testing-plugin
# docker compose up -d --wait --wait-timeout 120
#
# - name: Verify munge works in spindle-slurm-plugin-ubuntu
# id: slurm-ubuntu-munge
# run: |
# docker exec slurm-plugin-head bash -c 'munge -n | unmunge'
#
## Matrix across "debug"
# - name: Run spindle-slurm-plugin-ubuntu testsuite
# timeout-minutes: 4
# id: slurm-ubuntu-testsuite
# run: |
# if [ "${{ matrix.debug }}" = "0" ]; then
# docker exec slurm-plugin-head bash -c \
# 'cd Spindle-build/testsuite && \
# salloc -n${workers} -N${workers} ./runTests ${workers}'
# else
# docker exec slurm-plugin-head bash -c \
# 'cd Spindle-build/testsuite && SPINDLE_DEBUG=${{ matrix.debug }} \
# salloc -n${workers} -N${workers} ./runTests ${workers}'
# fi
## Extract logs on failure
# - name: Pull logs out of the container(s)
# id: plugin-ubuntu-copy-from-container
# if: ${{ failure() && matrix.debug != 0 }}
# continue-on-error: true
# run: |
# docker exec slurm-plugin-node-1 bash -c "ls /home/slurmuser/Spindle-build/testsuite/spindle_output*"
# docker exec slurm-plugin-node-1 bash -c "cd /home/slurmuser/Spindle-build && tar cjvf node1.tar.bz2 ./testsuite/spindle_output*"
# docker exec slurm-plugin-node-2 bash -c "cd /home/slurmuser/Spindle-build && tar cjvf node2.tar.bz2 ./testsuite/spindle_output*"
# docker exec slurm-plugin-node-3 bash -c "cd /home/slurmuser/Spindle-build && tar cjvf node3.tar.bz2 ./testsuite/spindle_output*"
# docker exec slurm-plugin-node-4 bash -c "cd /home/slurmuser/Spindle-build && tar cjvf node4.tar.bz2 ./testsuite/spindle_output*"
# docker exec slurm-plugin-head bash -c "cd /home/slurmuser/Spindle-build && tar cjvf head.tar.bz2 ./testsuite/spindle_output*"
# docker cp slurm-plugin-node-1:/home/slurmuser/Spindle-build/node1.tar.bz2 $TARBALL1
# docker cp slurm-plugin-node-2:/home/slurmuser/Spindle-build/node2.tar.bz2 $TARBALL2
# docker cp slurm-plugin-node-3:/home/slurmuser/Spindle-build/node3.tar.bz2 $TARBALL3
# docker cp slurm-plugin-node-4:/home/slurmuser/Spindle-build/node4.tar.bz2 $TARBALL4
# docker cp slurm-plugin-head:/home/slurmuser/Spindle-build/head.tar.bz2 $TARBALLH
#
# - name: Upload slurm ubuntu logs
# id: slurm-ubuntu-copy-to-artifact
# if: ${{ failure() && matrix.debug != 0 }}
# uses: actions/upload-artifact@v6
# with:
# name: Ubuntu slurm logs tarball
# # NOTE: This is the runner path, not the container path.
# path: |
# $TARBALL1
# $TARBALL2
# $TARBALL3
# $TARBALL4
# $TARBALLH
#
# - name: Bring spindle-slurm-plugin-ubuntu down
# id: slurm-ubuntu-down
# if: ${{ always() }}
# continue-on-error: true
# run: |
# cd containers/spindle-slurm-ubuntu/testing-plugin
# docker compose down
#