Continuous Integration¶
GitLab CI¶
XGC uses GitLab CI to test pull requests and changes to the master branch.
XGC uses a custom location for its GitLab CI configuration file (not .gitlab-ci.yml
).
This allows us to define jobs specific to individual GitLab servers and their associated runners (eg. PPPL vs. NERSC).
These configuration files are location in the gitlab/ subdirectory of XGC-Devel.
GitHub/GitLab integration¶
Although GitLab does support integration with GitHub, this built-in functionality does not support testing pull requests from forks of the mainline repository. For this reason, instead of using GitLab’s built-in integration with GitHub, we maintain a polling script called gh-gl-sync. This script achieves two goals for us:
It copies branches to be tested from GitHub to GitLab.
It posts status back to GitHub from completed GitLab pipelines.
The source code for this script is available here:
https://github.com/spack/spack-infrastructure/tree/master/gh-gl-sync
This script runs every few minutes as a scheduled pipeline under the following GitLab project:
https://git.pppl.gov/xgc/gh-gl-sync
The GitLab runner responsible for running this scheduled pipeline uses a Docker image from this repository: