Jenkins

Introduction

Jenkins is a self-hosted powerful Continuous Integration server. Our server is available at https://jenkins.opengeosys.org.

To configure the tasks of the CI system we mainly use Jenkins Pipeline jobs which are defined in a script inside the OGS source code. Scripting and versioning the configuration together with the source code is very powerful, e.g. if you introduce a new OGS CMake configuration in a pull request even the change of the CI jobs configuration can be part of the pull request.

Jenkins Pipeline

In the Jenkinsfile you can see lots of stage-blocks. Each stage is a test sub-job running on different test nodes. Inside each stage there are steps doing things such as configuring the build with CMake and building specific targets:

Functions such as configure and build are defined in a separate Pipeline library.

Each pipeline run is visualized as follows:

The status of all stages are shown. You can select one stage (e.g. Win) and you will see all steps inside that stage at the bottom list. You can expand the log output of a specific step by clicking the small arrow on the left.

On the Artefacts-tab in the top navigation bar are links to the compiled binaries and generated websites (Doxygen code documentation and the Web site containing also the benchmark documentation).

All of this is part of the modern Jenkins UI called Blue Ocean. You can always switch to the classic more comprehensive UI by clicking the arrow inside square button in the top navigation bar.

Automatic testing

The master-branch of the the UFZ repository as well as all pull requests on that repo are automatically tested. See this page for all currently tested PRs:

Skip automatic testing

If you want to skip the Jenkins automatic testing for a specific commit add [ci skip] to the commit message. This marks the Jenkins build as not built (shown as a grey icon). Example:

git commit -m "Added feature X [ci skip]"

Automatic testing for own repository

This assumes you have your own clone/fork of OGS on GitHub.

  • Tell me your GitHub user name
  • I setup a multibranch project on Jenkins

This project will test all branches ending with _j on your repository and will be available at jenkins.opengeosys.org/job/User/job/[your account name]

To automatically trigger new Jenkins builds when you push changes to your repository you have to setup a GitHub trigger:

  • Go to github.com/[your account name]/ogs/settings/hooks
  • Click Add webhook
  • Under Payload URL enter https://jenkins.opengeosys.org/github-webhook/
  • Click green button Add webhook

To optionally let Jenkins set the result of job as the the commit status (small icons on commit list view):

  • Go to github.com/[your account name]/ogs/settings/collaboration
  • Type in ogsbot and click Add collaborator

This article was written by Lars Bilke. If you are missing something or you find an error please let us know. Generated with Hugo 0.54.0. Last revision: February 18, 2019
Commit: [web] Added docs on ci skip. c9684e002  | Edit this page on

Creative Commons License | Privacy policy / Legal statements / Impressum