ESMF GitHub Action released

For anyone utilising ESMF in a GitHub workflow, e.g. for Continuous Integration testing, there is now a GitHub Workflow action available to make this process much more straightforward

The ESMF Core Team is pleased to announce the release of a GitHub action to simplify the process of building and caching ESMF libraries and utilities on GitHub runners. Once ESMF is installed on a GitHub runner it can be used to build and test ESMF, NUOPC, ESMX, and esmpy based applications in the GitHub Actions environment. It was designed to promote continuous integration (CI) and release testing of ESMF based applications in the GitHub environment. Please see the actions webpage for more information https://github.com/esmf-org/install-esmf-action

Simplicity

  • Configure, build, cache, and set up an environment for ESMF libraries and utilities in one step.

Fully Customizable Builds

  • Utilize environment variables, as outlined in the ESMF User’s Guide, to configure the ESMF build as needed. This provides a mechanism to tune the compiler, communicator, debugging options, 3rd party libraries, and all other ESMF build options.

ESMF Versioning

  • Select from a specific version, the latest release, or the head of development.

Smart Caching

  • GitHub caching is built directly into this action. This caching function recognizes changes to the ESMF version, the system, or 3rd party libraries to determine if a new build is needed.

Performance

  • Utilize multiple cores, as provided by GitHub runners, to enhance build speeds.

Usage Example

  • name: Install ESMF
    uses: esmf-org/install-esmf-action@v1
    env:
    ESMF_NETCDF: nc-config

As always, please write esmf_support@ucar.edu with any questions or issues concerning ESMF.

1 Like

Note: ACCESS-NRI (and COSIMA) are using spack to build software dependencies like this for GitHub based CI workflows (see GitHub - ACCESS-NRI/build-ci: Reusable github workflows for CI across ACCESS-NRI projects), but this is an incredibly useful tool to quickly add ESMF dependencies to a workflow, as this is a large and difficult to build package.