Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Image RemovedImage Added

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
  •