This repository contains a Quilt blueprint for a Jenkins deployment that tests Quilt.
It also contains a custom Docker image because we require some build tools and Jenkins plugins for our testing job.
Note that by default the quilt-tester job has the --preserve-failed
flag enabled.
This flag leaves machines up if there were any test failures to facilitate debugging.
Thus, if running locally, you may have to manually destroy the quilt-tester machines
if your final test run ends in a failure.
tester.js
contains a module that creates a Jenkins service. It requires some
configuration options to be passed in by the caller. An example is included at
tester-runner-example.js.
The required configurations are:
awsAccessKey
: The access key used by the test daemon to boot machines on the Amazon provider.awsSecretAccessKey
: The secret access key used by the test daemon to boot machines on the Amazon provider.digitalOceanKey
: The secret key used to boot machines on the DigitalOcean provider.gceProjectID
: The ID of the project in which Google machines will be booted.gcePrivateKey
: The private key of the service account used to boot machines on the Google provider.gceClientEmail
: The email address of the service account used to boot machines on the Google provider.testingNamespace
: The namespace used by the test daemon.slackChannel
: The Slack channel where build results will be posted.slackTeam
: The Slack team in whichslackChannel
is located.slackToken
: The token used for posting toslackChannel
.
The optional argments are:
passwordHash
: A Jenkins-compatible hash of the desired password for theadmin
user.- If this is not set, the
admin
user will have to be manually setup when accessing the Jenkins instance for the first time.
- If this is not set, the
jenkinsUrl
: The URL at which this Jenkins deployment will be able to be accessed.- If this is not set, the Jenkins URL will have to be manually setup in order for Slack notification links to work.
- This is usually a floating IP assigned to the Jenkins machine.
The Jenkins CI App needs to be enabled in the Slack team to which build notifications will be posted.
The slackToken
is generated by installing the app.
If jenkinsUrl
is not set, we need to manually configure it for Slack
notifications to generate clickable links.
To do so, navigate to Jenkins -> Manage Jenkins -> Configure System
, and simply
hit Save
.