...
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