Versions Compared

Key

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

...

The wingman system is composed of a virtual machine hosting 3 main services, with the addition of GitHub.

  • A Jenkins service for scheduling
  • An OSGI application, pentaho-wingman, which handles the orchestration and analysis of the builds.
  • A docker container, which hosts the builds to run in a sandbox.

Jenkins

There is a basic Jenkins instance doing the orchestration and management. It has 3 jobs. 

...

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

...

wingman-updater

This job updates the Wingman service. There are a few prerequisites before running this job.

  • Disable the Jenkins jobs names wingman and wingman-trigger.
  • Make sure that no wingman jobs are currently running. If they are, wait until they complete.
  • You can now run the wingman-update job

The update job performs a few tasks.

  • Stop the wingman service.
  • Wait for the service to stop.
  •  Pull the latest code from master
  • Run the build
  • Start the wingman service.

Below is the code which we currently use to accomplish these tasks. (Line breaks added for readability)

Code Block

~/pentaho-wingman/assembly/build/assembly-0.0.1/bin/stop;
sleep 5;
cd ~/pentaho-wingman/
&& git pull origin master
&& cd ~/pentaho-wingman/assembly/
&& gradle clean build
&& cd ~/pentaho-wingman/assembly/build/
&& unzip ~/pentaho-wingman/assembly/build/distributions/assembly-0.0.1.zip
&& cd ~/pentaho-wingman/assembly/build/assembly-0.0.1/ && bin/start"
  • 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
  •