Wingman Infrastructure
...
wingman-trigger
The trigger job is a scheduled job. It runs each X minutes and asks GitHub for a list of the current pull requests for all projects in a list of organizations known to GitHub.
PhysicallyIt 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 path to a credentials file on your local file system. |
-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 ./credentials.cred -b master,6.1,6.0 -ao webdetails,pentaho
|
wingman
This is the main job on Jenkins which communicates with the Wingman service. It is a pretty simple job which gets invoked by the wingman-trigger job. It can also be launched manually.
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
|
TODO
- DNS entries, IP addresses, VM name
- Services (Jenkins, others?)
- Jenkins jobs general overview
- The docker-build project
- GitHub repo for docker-build
- General architecture overview
- Fixing build issues for specific builds
- Adding new analyzers
- Detection of new pull requests (aka. Project Elios)
- GitHub repo
- General architecture overview
- Build detection algorithm