Connecting to and using Jenkins

Last updated on
14 July 2016

Jenkins is a job manager which handles executing various tasks (such as cron jobs, staging site deployments, etc.) on the Drupal.org infrastructure without users needing full access to the server. Only a limited subset of Drupal.org "super" users have access to Jenkins.

Prerequisites

You will need an OSUOSL LDAP account in order to use Jenkins. Key members of the infrastructure team such as Rudy, Narayan, Neil, Damien, and Gerhard can set this up. However, most likely you do not need this level of access; if you do, it may be granted if you ask. (The infrastructure team will need to know who you are and trust you first, based on your existing contribution record.)

If you have util.drupal.org access you can generate a LDAP password hash with /usr/sbin/slappasswd and entering your desired password. Then you just need your account created and password set.

Connecting to Jenkins

Enter the following into a terminal window:

ssh -L8080:localhost:8080 [user]@util.drupal.org

Then navigate to http://localhost:8080/, and log in with your OSUOSL username and password.

Using Jenkins

Once logged in, the main Jenkins interface shows a list of available jobs. You can filter this list down to only those jobs relevant to a certain area; for example "Redesign" to access jobs for development sandbox sites:
Job listing, with interface elements labeled

In order to run a job, click its link in the list. On the side bar of that page, you should see a "Build now" button. (If you don't, you don't have permission to run that job. Talk to one of the aforementioned key members of the Drupal.org infrastructure team if you believe this is in error.)

Run a job by clicking 'Build now'

After clicking Build now, you may be presented with a series of options to fill in related to the job, and then a "Build" button. Upon clicking it, the job will be added to the sidebar.

To view the status of any job run, click into it and click the "Console Output" link in the left sidebar.
Output of 'Console output' button

[Advanced] Automated Jenkins SSH tunneling

The only problem with the above connection method is that it actually logs you into util in a shell, and if you terminate the SSH session, the local port binding goes with it. The solution is to fork the process into the background:

$ ssh -qNf -L8080:localhost:8080 [user]@util.drupal.org

This can be further simplified by tweaking your ~/.ssh/config. Put an entry into there that looks like this:


 
Host bind-jenkins #make up whatever host name you want HostName util.drupal.org User [user] LocalForward localhost:8080 util.drupal.org:8080 LogLevel QUIET ExitOnForwardFailure yes

With that in your config, all you'll have to type is ssh -Nf bind-jenkins, and ssh will silently fork into the background after establishing the tunnel. Even better, the ExitOnForwardFailure option ensures that even if you run the command multiple times, no stale ssh processes will be created, as they will automatically exit when they fail to bind to the already-bound local port.

Help improve this page

Page status: No known problems

You can: