Go ci implementation at caplin systems1

6,478 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
6,478
On SlideShare
0
From Embeds
0
Number of Embeds
4,741
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Go ci implementation at caplin systems1

  1. 1. 1<br />GO CI implementation @ Caplin Systems<br />
  2. 2. 2<br />Continuous Integration @ Caplin<br />We have around 100 build pipelines<br />11 pipeline groups<br />
  3. 3. 3<br />Continuous Integration @ Caplin<br />Our aim is to make every check-in result in a potential release candidate, provided it passes all the tests.<br />There are multiple different types of test to run through:<br />Unit-tests, acceptance-tests, integration-tests, performance tests and so on<br />CI requires fast feedback, tests take ages!<br />Go pipelines to the rescue – pipeline stages<br />
  4. 4. 4<br />Continuous Integration @ Caplin<br />However, Continuous Integration requires fast feedback, and waiting for all of these tests to run takes ages<br />Go allows pipelines to be broken down into stages<br />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.<br />
  5. 5. 5<br />Continuous Integration @ Caplin<br />
  6. 6. 6<br />Continuous Integration @ Caplin<br />
  7. 7. 7<br />Continuous Integration @ Caplin<br />Behind the scenes we have 150 build agents and 10 different “environments”<br />This allows us to run same stages concurrently on different agents<br />The agents are Windows and Centos<br />
  8. 8. 8<br />Continuous Integration @ Caplin<br />
  9. 9. 9<br />Continuous Integration @ Caplin<br />Go configuration allows us to target which OS we want particular phases of our pipeline to run on<br />We can run our unit tests on Centos and our cross-browser tests on Windows<br />Typical pipeline lifecycle would be as follows:<br />Unit-tests, (feedback), acceptance-tests, integration-tests, performance-tests (where applicable), static analysis, report generation, promotion to release candidate repository, deployment to UAT.<br />After successful UAT, the artifacts are made available in the production release repository. <br />The Go configuration changes are submitted directly into our scm (perforce) using a cron job running on the main Go server.  <br />

×