Blob Blame Raw
Pagure CI
=========

This is to setup Pagure CI for development. It is assumed that all the
dependencies are resolved.

 * Run::

        PAGURE_CONFIG=/path/to/config python pagure-ci/pagure_ci_server.py



Configuring Jenkins
===================

Jenkins configuration is the most important part of how the Pagure CI works,
after you login to your Jenkins Instance.


* Go to Manage Jenkins -> Configuire Global Security and under that select
  'Project-based Matrix Authorization Strategy'

* Add a user and give all the permission to that user.

* Download the following plugins:

::

      Build Authorization Root Plugin
      Git Plugins
      Notification Plugin


* Click on the New Item

* Select Freestyle Project

* Click OK and enter the name of the project, make sure the project name you
  filled in the Pagure CI form should match the name you entered here.

* Under 'Job Notification'  click 'Add Endpoint'

* Fields in Endpoint will be :

::

        FORMAT: JSON
        PROTOCOL: HTTP
        EVENT: Job Finalized
        URL: <The POST URL that Jenkins form returned>
        TIMEOUT: 3000
        LOG: 1

* Tick the build is parameterized

* From the Add Parameter drop down select String Parameter

* Two string parameters need to be created REPO and BRANCH

* Source Code Management select Git  and give the URL of the pagure project

* Under Build Trigger click on Trigger build remotely and give the same token
  that you gave in the Pagure CI form.

* Under Build -> Add build step -> Execute Shell

* In the box given  enter the shell steps you want for testing your project.


Example Script

::

        if [ -n "$REPO" -a -n "$BRANCH" ]; then
        git remote rm proposed || true
        git remote add proposed "$REPO"
        git fetch proposed
        git checkout origin/master
        git config --global user.email "you@example.com"
        git config --global user.name "Your Name"
        git merge --no-ff "proposed/$BRANCH" -m "Merge PR"
        fi

* After all the configuration done, go to the dev instance of pagure running
  and under project settings in `Plugin` select Pagure CI and fill the appropriate
  information. Which on submiting should give you a POST url.

* Copy and paste the URL in the Notification section under the Jenkins project
  you want the CI to work.