Wingman Infrastructure
...
It was designed as part of task ENGOPS-1586. Physically, it consists of a python script. The script can be seen here. It runs periodically on the Jenkins server and takes the following parameters.
Parameter | Description |
---|---|
-o | A comma separated list of the names of the organizations to scan for a list of projects. Usually something like: "pentaho,webdetails". |
-t | The API token from GitHub. |
-b | A comma separated list of the names of the branches to scan. All pull requests for these branches will be considered. |
-ao | A comma separated list of organization names to which a user must belong to in order for his pull request to be built. |
A typical invocation of this script should look something like this:
Code Block |
---|
python PullRequestRecon.py -o webdetails,pentaho -t 5334afa5de50ea3e4357d73ce3544ac3e8f59870123456789abcdef -b master,6.1,6.0 -ao webdetails,pentaho |
...
This job takes a few parameters.
Parameter | Description |
---|---|
WINGMAN_ORG | The name of the organization which owns the pull request we want built. |
WINGMAN_REPO | The name of the repository which owns the pull request we want built. |
WINGMAN_PR_NUMBER | The number of the pull request to build. |
With these parameters, Jenkins simply invokes the REST endpoint of the wingman service by adding the parameters supplied. A typical invocation should look something like this:
Code Block |
---|
#!/bin/bash
JSON=`echo "{\"SourceRetriever\": { \"SourceControlType\": \"github\", \"Organization\": \"${WINGMAN_ORG}\", \"Repository\": \"${WINGMAN_REPO}\", \"PullRequest\": \"${WINGMAN_PR_NUMBER}\"}, \"StatusUpdater\": {\"WingmanUrl\": \"$BUILD_URL\"}}"`
curl -N -s -S -H "Content-Type: application/json"\
-X POST -d "$JSON"\
http://localhost:8181/cxf/orchestrator/orchestrate
|
...
This job updates the Wingman service. The update job performs a few tasks.
- Build wingman from the latest code
- Stop the wingman service
- Replace the current build with the new one
- Start the wingman service
This is done through the deploy.sh script present within the project.
...
This service takes a few parameters. To invoke it, do a POST operation on its endpoint and pass the following JSON message. Notice the presence of a few variables. Replace these tokens by their proper values.
No Format |
---|
{
"SourceRetriever":{
"SourceControlType":"github",
"Organization":"${WINGMAN_ORG}",
"Repository":"${WINGMAN_REPO}",
"PullRequest":"${WINGMAN_PR_NUMBER}"
},
"StatusUpdater":{
"WingmanUrl":"http://wingman.pentaho.com:8080/job/wingman/106/"
}
}
|