Part of this tool is written in Groovy, other part in Ruby. You'll also need to have a Java property file in
~/.jenkins-ci.org file that contains your jenkins-ci.org user name and password in "userName" and "password" keys. Example below:
Usage: jenkins-backport-generate-list <MASTER-REV-LIST> <STABLE-REV-LIST>
This command takes two parameters that represent (1) commits that are made in the master branch that are subject of the backporting ("MASTER-REV-LIST") and (2) commits that are made in the stable branch ("STABLE-REV-LIST"). For more information about how to specify commits, refer to git-rev-parse man page. The command is a wrapper of
git, and it expects you to be inside the Jenkins workspace.
The typical approach is to run it like
jenkins-backport-generate-list 1.X..1.Y 1.X..stable" where 1.X is the main line release version from which LTS was branched off, and 1.Y is the latest main line release that satisfies the soaking criteria (last release -2).
The script lists up all the tickets that are marked as fixed in the master branch, except all the ones that are also marked as fixed in the stable branch. For each ticket, it'll retrieve other information about the ticket from JIRA, such as # of votes, priority, description, etc., and the result will be tabluated into an HTML table:
For each ticket it'll also list up all the commits that are needed for the fix. This process uses the commit log notation used in Jenkins, and the list of commits are written as text file in
./cherry-pick/<TICKETID>. So for example one of them would look like the following:
Usage: jenkins-backport-cherry-pick <TICKETID>
This command uses
./cherry-pick/* that are left behind by
jenkins-backport-generate-list, and assits the actual cherry-pick activity. It basically runs
git-cherry-pick for each commit listed in the cherry-pick file. It will automatically resolve the conflict on
./changelog.html that's very common during backporting, by always favoring the version in the stable branch — this is OK because the LTS changelog is generated automatically.
If a conflict occurs, it'll launch interactive shell and ask you to resolve it. You'll do so, and exit from the shell, and the script will continue where it left off. It'll commit each cherry-picked change with the special header indicating the original commit ID (
git cherry-pick doesn't do this for commits that have conflicts.)
- Switch to JIRA REST API client so that we can honor the 'lts-candidate' labels.