3. 3 Continuous Integration @ Caplin Our aim is to make every check-in result in a potential release candidate, provided it passes all the tests. There are multiple different types of test to run through: Unit-tests, acceptance-tests, integration-tests, performance tests and so on CI requires fast feedback, tests take ages! Go pipelines to the rescue – pipeline stages
4. 4 Continuous Integration @ Caplin However, Continuous Integration requires fast feedback, and waiting for all of these tests to run takes ages Go allows pipelines to be broken down into stages Each stage can be configured to give feedback upon completion, so you can see, visually, if the unit tests have passed as soon as they’re run.
7. 7 Continuous Integration @ Caplin Behind the scenes we have 150 build agents and 10 different “environments” This allows us to run same stages concurrently on different agents The agents are Windows and Centos
9. 9 Continuous Integration @ Caplin Go configuration allows us to target which OS we want particular phases of our pipeline to run on We can run our unit tests on Centos and our cross-browser tests on Windows Typical pipeline lifecycle would be as follows: Unit-tests, (feedback), acceptance-tests, integration-tests, performance-tests (where applicable), static analysis, report generation, promotion to release candidate repository, deployment to UAT. After successful UAT, the artifacts are made available in the production release repository. The Go configuration changes are submitted directly into our scm (perforce) using a cron job running on the main Go server.