{% extends 'base.html' %} {% block content %}
This is a service that automates running your test suite on incoming pull requests before they are actually merged. Think Travis CI but for Pagure and using you own instance of Jenkins.
The set-up needs to happen here, in Pagure and in Jenkins.
Just hit the add button in top right corner and put in all the information.
The message announcing a new or edited pull request is sent automatically. You just need to create an authentication token that can add flags to pull requests.
The job must be parametrized and define two string parameters:
REPO
and BRANCH
. These will have the information on
what the pull request proposes to merge. There is another parameter
BRANCH_TO
that, if supplied, will contain name of branch into
which the pull request should be merged.
In your test script you need to make sure the change is checked out and merged to master. The following snippet can do that.
if [ -n "$REPO" -a -n "$BRANCH" ]; then
git remote rm proposed || true
git remote add proposed "$REPO"
git fetch proposed
git checkout "origin/${BRANCH_TO:-master}"
git merge --no-ff "proposed/$BRANCH" -m "Merge PR"
fi
In order for this service to be able to trigger Jenkins jobs, you need to enable remote triggers and set a authentication token.
The last change in Jenkins is configuration to report status. With Fedmsg you just need to enable the plugin. If you use the Notification plugin, add a nofitication pointing to the URL copied from this service. Set it to send the message in JSON format when the job is finalized.
You may need to set it to send 1 log line to avoid crashing.
If you use the same Jenkins job for testing pushes to your repository and
check for updates via polling, make sure to restrict branches to only check
origin
. Otherwise the tests will run even on a push the repository
from which you last checked a pull request.