Dockerized environments for testing software against a variety of Slurm versions.
Refer to the sections below for examples on using the Slurm test environments in different situations.
Published images are stored on the GitHub container registry and can be downloaded using docker.
For instructions on authenticating against the GitHub registry, see the official docs.
The test_env image can be pulled using standard docker commands:
docker pull ghcr.io/pitt-crc/test-envThe default latest tag points to image with the most recent Slurm version.
This is not always the same as the version most recently published by Slurm.
Specific Slurm versions can be requested by specifying the version as a tag.
See here for all available tags.
You will need to enable Docker Buildkit to build the image. To do so, export the following environmental variable:
export DOCKER_BUILDKIT=1The Dockerfile is designed to be reusable for different Slurm versions.
The Slurm version needs to be specified when building an image.
The following example builds an image called test_env:local using Slurm version 23.02.5:
docker build --build-arg SLURM_VERSION=23.02.5 -t test_env:local .For a list of valid Slurm version tags, see the SLURM config directory in this repository.
Once you have built an image, the test suite can be run from within the docker container:
docker run -i -v $(pwd)/tests:/tests test_env:local bats /testsTo run a GitHub actions job from within a container, specify the container option.
GitHub actions will not automatically launch the container entrypoint.
Instead, you should include a dedicated setup step as follows:
jobs:
example_job:
runs-on: ubuntu-latest
container:
image: ghcr.io/pitt-crc/test-env:23.02.5
steps:
- name: Setup environment
run: /usr/local/bin/entrypoint.shIf you want to run a job several times using different containers (e.g., to test software against multiple Slurm versions) use the strategy directive:
jobs:
example_job:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
slurm_version:
- "20.11.9"
- "22.05.2"
- "22.05.11"
- "23.02.5"
python_version:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
container:
image: ghcr.io/pitt-crc/test-env:${{ matrix.slurm_version }}
steps:
- name: Setup environment
run: /usr/local/bin/entrypoint.shThe test environment comes partially configured with various tools, running services, and mock data. All images are built using the Rocky 8 operating system.
The installed Slurm instance is configured with the following clusters, partitions, and nodes:
| Cluster Name | Partition Name | Nodes |
|---|---|---|
development |
partition1 |
c[1-5] |
development |
partition2 |
c[6-10] |
The following Slurm accounts are also included:
| Account Name | Slurm Description | Slurm Organization |
|---|---|---|
account1 |
account1_desc |
account1_org |
account2 |
account2_desc |
account2_org |
The following services are automatically launched when spinning up a new container:
mariadbmungeslurmdbdslurmctldslurmrestd
Python versions 3.9 through 3.12 are included in the test environment, each having dedicated a dedicated pip3.x installation.
The following commandline tools are explicitly provided in the testing environment.
which(Required for compatibility with some IDE docker integrations)batsmake