ExaWorks / SDK

ExaWorks SDK
11 stars 12 forks source link

Add in bare metal tests for Gitlab CI #83

Closed zekemorton closed 2 years ago

zekemorton commented 2 years ago

This PR adds in bare metal CI tests for gitlab. These tests utilize Spack to build the SDK and come in the form of 3 new jobs added into the CI pipeline.

The first stage uses Spack to build the SDK. This build process is aided with a couple configuration files. config.yaml is essentially a copy of the default Spack configuration except that the field for url_fetch_method is set to curl instead of the default of urllib. This change was made because the default option seemed to result in some intermittent timeout failures when tested on LLNL machines. packages.yaml contains information on some of the SDK dependencies and where they can already be found on the machine running the build. This configuration will likely be site or machine specific. In this PR both configuration files have been added to the ci/llnl/ directory for they may both be site specific. Currently neither configuration file is actively used, but represents a template for what may exist in ~/.spack/.

The second stage uses the previously built Spack environment to run smoke tests on each of the 4 packages. The tests are run by calling ci/tests/<package name>/test.sh. These simple smoke tests can be improved upon and added to in future PRs. Additionally, integration tests can be added as well by adding an addition directory /ci/tests/<integration>/. The RP tests use an on premise mongodb instance, which is connected to with an injected connection string variable.

The third stage cleans and removes the Spack environment created from the first stage.

zekemorton commented 2 years ago

How are the runs triggered at LLNL? One what hardware / resources are the tests running ?

@andre-merzky The runs are pretty much triggered manually, at least with our workflow/PR process. This pipeline is running on the LC Machine Quartz, as noted by the tags in the .gitlab-ci.yaml. In future PRs we could add in tests to run on additional machines.