Platforms
Read more about installation, setup and maintenance under Platforms & HSMs.
Buildfarm
SURFnet has provided us with virtual machines in a VMware Infrastructure site that are used for testing.
Primary administrator for the VMs is Jerry Lundström.
Contact at SURFnet is Roland M. van Rijswijk.
Jenkins
Jenkins is used for distributed building and testing on the different platforms.
Jenkins jobs are grouped per branch in tabs for easy access.
Jenkins master server
The master jenkins server is hosted by John Dickinson at Sinodun, this provides the web interface and management of all the jobs.
You can access the Jenkins web site here https://jenkins.opendnssec.org/.
User Accounts
The test dashboard and results are available for anyone to view. However, in order to perform more advanced tasks, like configuring existing or new jobs users will need an account. Contact John Dickinson (jad at sinodun.com on email or jabber) to get an account set up.
Build schedule
Building and testing is split into a couple of different categories.
Smoke runs
Smoke runs are meant to be executed on source code change and run as often as possible so the build and test stage need to be very fast in execution time.
Smoke testing is done by the build bot in pull requests.
Daily runs
Daily runs, as they are called, run daily and have a time slot of an hours or so. They can include more heavy tests that can take longer to run.
Daily runs are executed daily from 03:00 GMT:
- 03:00 - 1.3
- 03:30 - 1.3-mysql
- 04:00 - 1.4
- 04:30 - 1.4-mysql
- 05:00 - trunk
- 05:30 - trunk-mysql
The daily jobs chain starts with the requirements and ends with the test-daily-* job. Example of OpenDNSSEC 1.3; build-softhsm-1.3 => build-opendnssec-1.3 => test-opendnssec-1.3 => test-daily-opendnssec-1.3 .
Weekly runs (not running yet)
Weekly runs run on a weekly basis and is lead by a clean up job which then triggers a full build.
Therefore the following Smoke and Daily runs happen on newly checked out code and all build and test jobs will be rebuilt from scratch.
(A further test-weekly-<tag> job may be added in future to these runs.)
Weekly runs are executed on Fri/Sat/Sun at the moment:
- FRI 12:05am - enforcer-ng
- (FRI 2:00am - enforcer-ng-mysql NOTE: NOT SET UP YET)
- SAT 12:05am - trunk
- SAT 2:00am - trunk-mysql
- SUN 12:05am - 1.3
- SUN 2:00am - 13.-mysql
Clean/rebuild
Everything is rebuilt from scratch on Sundays from 12:00 GMT.
- 12:00 - 1.3
- 13:00 - 1.3-mysql
- 14:00 - 1.4
- 15:00 - 1.4-mysql
- 16:00 - trunk
- 17:00 - trunk-mysql
Framework
The framework is a bundle of shell script (bash) functions that sets up an environment per branch for building and testing.
The framework (lib.sh) is included in each branch and will have to be maintained between branches.
Read more about the framework under Framework (lib.sh).
Build
We build ldns, SoftHSM and OpenDNSSEC, for all other libraries that the software depend on we use the distribution provided libraries to make sure the software works with the distribution.
Ldns is not part of the OpenDNSSEC project but it is vital to OpenDNSSEC so we don't use the distribution provided libraries for that.
We build trunk and each branch per Release Process. You can find examples and templates under Build jobs and information about the framework functions under Framework (lib.sh).
All builds should be done without root access.
Test
If the current build object supports 'make check' / 'make test' we run that in the build process before installing the object other tests are located here in the test phase and these tests are mostly System Tests and/or System Integration Tests.
You can find examples and templates under Test jobs and developing tests and information about the framework functions under Framework (lib.sh).
All test should be done without root access.
Files
All files related to building and testing are kept inside each branch in the directory testing.
All file names must be lower case, build scripts start with build-what.sh, tests scripts start with test-what.sh. Examples below:
Ldns
OpenDNSSEC/testing/build-ldns.sh
SoftHSM
softHSM/testing/build-softhsm.sh
softHSM/testing/test-softhsm.sh
OpenDNSSEC
OpenDNSSEC/testing/build-opendnssec.sh
OpenDNSSEC/testing/test-opendnssec.sh