Automated builds¶
The software is automatically built and tested on both SLC6 and CentOS7 for the latest of each set of commits pushed to the GitHub repo. These automated build/test jobs update the commit’s gitlab-ci
“status” field on GitHub, which is used to determine if pull requests can be merged into protected branches (e.g. master
).
These automated build and test jobs are currently implemented using the GitLab CI (continuous integration) framework. The GitHub ipbus-software
repository is mirrored on the CERN GitLab instance, at https://gitlab.cern.ch/ipbus/ipbus-software.
Structure¶
The build and test jobs are defined in the .gitlab-ci.yml
configuration file in the repository’s root directory; an introduction to the syntax of this file can be found at https://gitlab.cern.ch/help/ci/yaml/README.md
The automated jobs are organised into 4 stages (all build jobs in any single stage are run in parallel):
Initial report
Update commit’s
gitlab-ci
status field on GitHub topending
Build - 3 jobs:
Compile and build RPMs on SLC6
Compile and build RPMs on CERN CentOS7
Create doxygen pages
Test - 5 jobs for each of SLC6 and CC7:
Core uHAL functionality in C++ (also tests ControlHub)
Core uHAL functionality in Python
uHAL tools package
uHAL GUI
ControlHub (starting & stopping)
Final report
Update commit’s
gitlab-ci
status field on GitHub tosuccess
, orfailure
in case any of the build/test jobs fail
In order to ensure reproducibility of each automated job, each build/test job is run in a docker container.
Accessing the results¶
The output of the commands that are run within the automated build/test jobs are stored on the CERN GitLab instance, and can be viewed by navigating from the links on the pipelines summary page. Once the pipeline for any given commit has started, it is also linked from that commit on GitHub, as well as from any corresponding GitHub pull request page.
If the jobs from the builds run successfully, then the resulting YUM repositories and doxygen pages can be accessed through the following URLs:
http://ipbus.web.cern.ch/ipbus/sw/ci/commits/<pipeline_id>_<commit_sha>/api_uhal/html/
http://ipbus.web.cern.ch/ipbus/sw/ci/commits/<pipeline_id>_<commit_sha>/slc6_x86_64
http://ipbus.web.cern.ch/ipbus/sw/ci/commits/<pipeline_id>_<commit_sha>/centos7_x86_64
Installing the RPMs created by the automatd builds¶
Uninstall release / previous nightly build if already installed on your machine -
sudo yum groupremove ipbus-sw
Remove the existing IPbus software repo files from
/etc/yum.repos.d
, and clean the yum cache
sudo yum clean all
Download this
template automated-build repo file
, and move it under/etc/yum.repos.d
Open this file and change the following parts of the
baseurl
line:
<platform>
- should beslc6_x86_64
orcentos7_x86_64
<pipeline-id>
<commit-sha>
Install the software:
sudo yum groupinstall ipbus-sw