Stan's primary CI platform is a Jenkins system kindly hosted by the Simons Foundation at https://jenkins.flatironinstitute.org/job/CCM/job/Stan/
The following repositories are tested based on the pipelines specified in the
Jenkinsfiles in their top-level directories
The first three repostories depend on each other through git submodules,
with cmdstan including stan and stan including math. CmdStan uses
binaries built from the stanc3 source.
flowchart LR
cmdstan -->|stan/| stan --> |lib/stan_math/|math
cmdstan -->|bin/| stanc3
CI flows in the other direction. At the end of each pipeline, they run the tests of the next repository up with the changes substituted.
flowchart LR
math --> stan --> cmdstan
Each of these downloads the stanc3 binary from the most recent
nightly tag of
stan-dev/stanc3 when needed.
Jenkins utilities are housed in
stan-dev/jenkins-shared-libraries.
These Groovy functions are available to all the Jenkinsfiles. Additional
utility functions are provided by Flatiron and can be found at
https://github.com/flatironinstitute/jenkins-template/tree/main/vars.
Our tests on Linux are completely containerized using Docker. The C++-based tests use the docker/ci image housed in this repository.
Windows and MacOS tests are not containerized and rely on some additional setup outside the pipelines.
Additional CI is done on Github Actions for smaller CI jobs. This repo itself has a Github Action for scraping release notes out of PR descriptions for the above repositories.
In any given repository, these files are in .github/workflows/.