EESSI-based GitHub Action for Continuous Integration

The European Environment for Scientific Software Installations (EESSI) is a collaboration between a number of academic and industrial partners in the HPC community to set up a shared stack of scientific software installations to avoid the installation and execution of sub-optimal applications on HPC resources. The software stack is intended to work on laptops, personal workstations, HPC clusters and in the cloud, which means the project will need to support different CPUs, networks, GPUs, and so on.

EESSI can be leveraged in continuous integration (CI) workflows to easily provide the dependencies of an application. With this module we are a GitHub Action for EESSI so that it can be used with CI on GitHub.

Purpose of Module

To set up the European Environment for Scientific Software Installations (EESSI) for use in GitHub Workflows.

Background Information

The European Environment for Scientific Software Installations EESSI is a collaboration between a number of academic and industrial partners in the HPC community. Through the EESSI project, they want to set up a shared stack of scientific software installations to avoid not only duplicate work across HPC sites but also the execution of sub-optimal applications on HPC resources.

The software stack is intended to work on laptops, personal workstations, HPC clusters and in the cloud, which means the project will need to support different CPUs, networks, GPUs, and so on. As such the stack can also be leveraged to provide dependencies for applications within CI workflows.

Building and Testing

You can use this GitHub Action in a workflow in your own repository, see the EESSI action in the GitHub Marketplace for further details.

A minimal job example for GitHub-hosted runners of type ubuntu-latest is:

jobs:
  ubuntu-minimal:
    runs-on: ubuntu-latest
    steps:
    - uses: eessi/github-action-eessi@v1
    - name: Test EESSI
      run: |
        module avail
      shell: bash

This means that one can potentially load any application provided by EESSI in your workflow. A further full example that uses GROMACS from a particular version of the EESSI stack (2020.12) is:

name: ubuntu_gromacs
on: [push, pull_request]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: eessi/github-action-eessi@main
      with:
        eessi_stack_version: '2020.12'
    - name: Test EESSI
      run: |
        module load GROMACS
        gmx --version
      shell: bash