Jenkins Overview

Data Management operates a Jenkins continuous integration cluster at jenkins-root. You will typically use Jenkins to run the stack-os-matrix job to build and run unit tests in the LSST Stack as part of DM’s development workflow. See Testing the LSST DM Stack with the Jenkins stack-os-matrix Job for details.

Logging in

Log into Jenkins by visiting jenkins-root and authenticate with your GitHub credentials. Any member of the lsst, lsst-dm, or lsst-sqre GitHub organizations is authorized to use jenkins-root. See the Onboarding Checklist for more information.

Using the Jenkins dashboard

This section summarizes how to use the Jenkins dashboard, which is the first view you see when browsing to jenkins-root. Jenkins’s own dashboard documentation provides additional information.

Browsing Jenkins jobs

From jenkins-root, you see a listing of Jenkins jobs. Each job fulfills a different purpose, see Jenkins job listing.

To access a job, click on the job’s name. This takes you to a page where you can run the job and review past runs.

Favoriting Jenkins jobs

From the jenkins-root dashboard, you can click on the star icon next to any job. This will favorite the Job. Favorited jobs appear at the top of the homepage, before other jobs.

We recommend that you favorite the stack-os-matrix job.

Searching for Jenkins jobs

From the jenkins-root dashboard, you can filter the listing of jobs by using the search box at the top of the page.

Jenkins jobs are organized in directories, so it’s helpful to search by directory prefix to find the right job. The directories are:

  • qserv

  • release

  • science-pipelines

  • sims

  • sqre

Understanding the weather icons

Jenkins represents a job’s historical patterns of run successes and failures with weather icons throughout the dashboard interface.

Icon

Percent of recent runs passing

Sunny

>80%

Partially sunny

61% – 80%

Cloudy

41% — 60%

Raining

21% – 40%

Storm

<21%

Getting Job status in Slack

When jobs start and end (either as a success or failure), Jenkins posts a message to the #dm-jenkins channel in the LSSTC Slack team. Jenkins also mentions developers in specific notification channels, see Slack job notifications.

Jenkins job listing

This section describes the Jenkins jobs that are important for most DM developers.

stack-os-matrix

stack-os-matrix is the job that DM developers must run to ensure tests pass before merging changes to any LSST EUPS Stack package. For details on how to run this job, see Testing the LSST DM Stack with the Jenkins stack-os-matrix Job.

science-pipelines/lsst_distrib

science-pipelines/lsst_distrib is automatically run nightly to test the main branches of all packages in the lsst_distrib stack. This job runs from a clean slate to discover issues that might be hidden by the caching behavior of the stack-os-matrix job.

qserv/dax_webserv

qserv/dax_webserv is automatically run nightly to test the main branches of all packages in the dax_webserv stack. This job runs from a clean slate to discover issues that might be hidden by the caching behavior of the stack-os-matrix job.

qserv/qserv_distrib

qserv/qserv_distrib is automatically run nightly to test the main branches of all packages in the qserv_distrib stack. This job runs from a clean slate to discover issues that might be hidden by the caching behavior of the stack-os-matrix job.

Slack job notifications

You can get Slack notifications when a Jenkins job starts and stops.

Configuring Slack to be “@”-mentioned

We recommend that you add your GitHub username to your Slack profile. This allows the Jenkins bot to send you an “@”-mention specifically for the Jenkins jobs that you trigger. The bot will also invite you to the notification channel if necessary.

To do this, follow Configuring your GitHub username in your Slack profile.

Jenkins notification channels

Each Jenkins job has its own notification channel. Each channel name starts with a #dmj- prefix. Due to length constrains, these channels have abbreviated names based on the Jenkins job.

To find the channel corresponding to a job, search the channel listing for #dmj- channels. The full name of the Jenkins job is included in the channel’s description.

Controlling notifications from Jenkins channels

Jenkins notification Slack channels can be noisy. Typically you’ll want to notice activity for only the jobs that you trigger.

The best way to do this is to mute the channel. The channel will still be highlighted when your jobs run because you will be @-mentioned.

More resources