From 33b008a965e07f34e1234893fb3d4dbadde99def Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Fri, 22 Jul 2011 10:35:30 -0400 Subject: [PATCH] Added initial docs for Jenkins. Change-Id: I79046c3d87fed2c2b78ee9c5731db151c1ad1a33 --- doc/index.rst | 1 + doc/jenkins.rst | 47 ++++++++++++++++++++++++++++++++++++++++++ doc/tarmac.rst | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 doc/jenkins.rst create mode 100644 doc/tarmac.rst diff --git a/doc/index.rst b/doc/index.rst index 054276bd..b22a0240 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -22,6 +22,7 @@ Contents: .. toctree:: :maxdepth: 2 + jenkins gerrit Indices and tables diff --git a/doc/jenkins.rst b/doc/jenkins.rst new file mode 100644 index 00000000..1e420302 --- /dev/null +++ b/doc/jenkins.rst @@ -0,0 +1,47 @@ +:title: Jenkins Configuration + +Jenkins +####### + +Overview +******** + +Jenkins is a Continuous Integration system and the central control +system for the orchestration of both pre-merge testing and post-merge +actions such as packaging and publishing of documentation. + +The overall design that Jenkins is a key part of implementing is that +all code should be reviewed and tested before being merged in to trunk, +and that as many tasks around review, testing, merging and release that +can be automated should be. + +Jenkis is essentially a job queing system, and everything that is done +through Jenkins can be thought of as having a few discreet components: + +* Triggers - What causes a job to be run +* Location - Where do we run a job +* Steps - What actions are taken when the job runs +* Results - What is the outcome of the job + +The OpenStack Jenkins can be found at http://jenkins.openstack.org + +Other Components +**************** + +The current system uses :doc:`tarmac` to manage Launchpad Merge +Proposals for projects using bzr as a version control system. As we add +projects which are using git, or migrate projects from bzr to git, we are +using :doc:`gerrit` + +Authorization +************* + +Jenkins is set up to use OpenID in a Single Sign On mode with Launchpad. +This means that all of the user and group information is managed via +Launchpad users and teams. In the Jenkins Security Matrix, a Launchpad team +name can be specified and any members of that team will be granted those +permissions. However, because of the way the information is processed, a +user will need to re-log in upon changing either team membership on +Launchpad, or changing that team's authorization in Jenkins for the new +privileges to take effect. + diff --git a/doc/tarmac.rst b/doc/tarmac.rst new file mode 100644 index 00000000..278c9f48 --- /dev/null +++ b/doc/tarmac.rst @@ -0,0 +1,55 @@ +:title: Tarmac Configuration + +Tarmac +###### + +Overview +******** + +Tarmac is a Patch Queue Manager written to manage and land merge requests in +Launchpad. It is not integrated in to Jenkins, and therefore does not +trigger Jenkins jobs to determine if a branch is good. Rather, Jenkins +triggers tarmac on a periodic basis and tarmac checks the merge queue, +performs its own tests on the branch, and either passes and merges the +branch in question, or fails the branch, reports the error to the merge +request and sets the status back to Work In Progress. + +Installation +************ + +Tarmac is installed from packages in the Tarmac PPA. It currently is +installed and runs only on the Jenkins master. + +Install Tarmac PPA +------------------ +:: + + add-apt-repository ppa:tarmac/ppa + +Install Tarmac +-------------- +:: + + apt-get install tarmac + +Configuration +************* + +Tarmac keeps its config file in .config/tarmac/tarmac.conf in standard ini +format. That config file is, in turn, stored in +git://github.com/openstack/openstack-ci.git + +Authentication +************** + +Tarmac authenticates to launchpad via oauth as the hudson-openstack user. + +Operation +********* + +Tarmac is a command line program, which takes a subcommand and then a branch +to land as arguments. + +:: + + tarmac land lp:nova