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:

This script runs every few minutes as a scheduled pipeline under the following GitLab project:

The GitLab runner responsible for running this scheduled pipeline uses a Docker image from this repository: