This repository is the r10k control repository for the Jenkins project's own infrastructure.
The amount of testing that can be done locally is still a work in progress but thus far it's advisable that you do the following:
bundle install
- To get the necessary gems to run tests locally, if you're unfamiliar with Ruby development you may want to use RVM to create an isolated Ruby environmentbundle exec rake spec lint
- Will run the rspec-puppet unit tests and the puppet-lint style validation. If you intend to run the rspec-puppet over and over, userake spec_standalone
to avoid re-initializing the Puppet module fixtures every time.
- Import your SSH public key into a key
pair
into the
us-west-2
region. We have an AMI in us-west-2 that has Ubuntu 12.04, Puppet and a Docker-capable kernel installed for testing - Make sure your
default
security group allows SSH (port 22) from the outside world. - Run the
./vagrant-bootstrap
script locally to make usre your local environment is prepared for Vagranting
We're using serverspec for on-machine acceptance testing. Combined with Vagrant, this allows us to create an acceptance test per-role which provisions and tests an entire Puppet catalog on a VM.
To launch a test instance, ./vagrant-aws up ROLE
where ROLE
is one of the defined roles.
You can rerun tests with ./vagrant-aws provision ROLE
repeatedly while the VM is up and running. When it's all done,
deprovision the instance via ./vagrant-aws destroy ROLE
.
The default branch of this repository is staging
which is where pull requests
should be applied to by default.
+----------------+
| pull-request-1 |
+-----------x----+
\
\ (review and merge, runs acceptance tests)
staging \
|---------------o--x--x--x---------------->
\
\ (manual merge, auto-deploys to prod hosts)
production \
|----------------------------o------------->
The branching model is a little different than what you might be familiar with.
We merge pull requests into a special branch called staging
where we can run
Puppet acceptance tests from. Once somebody has code reviewed a pull request it
can be merged into staging
.
When a infra project team member is happy with the code in staging
they can
create a merge from staging
to production
. Once something has been merged
to production, it will be automatically deployed to production hosts.
For installing agents refer to the installing agents section of the PuppetLabs documentation.
#jenkins-infra
on the Freenode IRC network- INFRA project in JIRA.
- [email protected]