Jenkins ci.lsst.codes Overview¶
Data Management operates a Jenkins continuous integration cluster at https://ci.lsst.codes.
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 https://ci.lsst.codes and authenticate with your GitHub credentials. Any member of the lsst, lsst-dm, or lsst-sqre GitHub organizations is authorized to use https://ci.lsst.codes. See the Developer 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 https://ci.lsst.codes. Jenkins’s own dashboard documentation provides additional information.
Browsing Jenkins jobs¶
From https://ci.lsst.codes, 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 https://ci.lsst.codes 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 https://ci.lsst.codes 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 |
---|---|
>80% | |
61% – 80% | |
41% — 60% | |
21% – 40% | |
<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 master
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 master
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 master
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¶
- Jenkins documentation. The Jenkins dashboard documentation includes additional information about the Jenkins interface.
- The lsst-sqre/jenkins-dm-jobs GitHub repository is where DM’s Jenkins jobs are defined.