Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold...

32
Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2

Transcript of Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold...

Page 1: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

Continuous Integration for Fun and Profit

Arnold Bechtoldt

Darmstadt, 16.06.2016v2

Page 2: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

Arnold BechtoldtSystems Engineer / Consultant @ inovex

〉 Software-Defined Datacenters

〉 Continuous Integration/Delivery

〉 DevOps

2

Page 3: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

Scenario

Page 4: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

The Product

4

Frontend Middleware

MySQL Backend

SMTP Backend

IMAP/POP Backend

Page 5: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

Test Matrix

5

Rails-FE

Mail-MW

Calendar-MW

DBMS

K/V 1

K/V 2

MDA Mail-Store

MDA IMAP/POP Proxy

Mail-FTS

MTA Mail-In

MTA Mail-Out

Customer Feature Set 1

Customer Feature Set 2

Customer Feature Set 3

Customer Feature Set 4

...

v1, v2, v3, ...

v1, v2, v3, ...

v1, v2, v3, ...

v1, v2, v3, ...

...

X X

Page 6: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

Sad Stories from Real World

Page 7: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

We can‘t run integration tests in parallel.

Page 8: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

Running all of our tests takes ages.

Page 9: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

Our integration tests are fragile.

Page 10: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

Producing a bugfix release is hard work.

Page 11: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

Time For A Plan

Page 12: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

The Plan: Building A Private Travis CI Clone

12

Page 13: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

GitLab to the Rescue!

gitlab.com/bechtoldt/tabellarius 13

Page 14: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

1. Git-Pushes go to feature/bugfix branches

2. Every Git-Push triggers a test

3. Tests run in prod-like environments

4. Tests run in isolated/dedicated environments

5. Master branch keeps “stable”

6. Make it easy to improve/add tests

Improving the Workflow

14

Page 15: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

15

Pipeline (simplified)

run-tests.node5

run-tests.node4

release-artifact deploy-artifactGit Push

IntegrationDelivery

Page 16: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

GitLab CI Config

16

stages:

- tests

- release

- deploy

run-tests.node4:

stage: tests

image: node4

script:

- npm test

run-tests.node5:

stage: tests

image: node5

script:

- npm test

release-artifact:

stage: release

script:

- npm release.prod

deploy-artifact:

stage: deploy

script:

- npm deploy.qa

Page 17: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

17

GitLab Code Build Status

Page 18: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

18

GitLab CI Pipeline

Page 19: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

19

GitLab CI Pipeline (2)

Page 20: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

Conclusions

Page 21: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

〉 Spawning integration test environments at ludicrous speed

〉 Similarity to production leads to faster bugfixing

〉 Isolated testing improves test (=product) quality

〉 Parallel testing increases work efficiency

Conclusions

21

Page 22: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

A voice in my head..

22

Page 23: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

Arnold Bechtoldtinovex GmbH

[email protected]

CC BY-NC-ND inovex.de +ArnoldBechtoldtGER

github.com/bechtoldt arbe.io youtube.com/inovexGmbH

Page 24: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

24

Backup

Page 25: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

25

GitHub/Travis Code Build Status

Page 26: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

26

Travis CI Pipeline

Page 27: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

27

Travis CI Pipeline (2)

Page 28: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

28

Jenkins CI Pipeline

Page 29: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

29

Jenkins CI Pipeline (3)

Page 30: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

30

Jenkins CI Pipeline (4)

Page 31: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

31

Gitlab Jenkins Master

Jenkins CI Architecture

Jenkins Slave

ArtifactoryJenkins Slave

Jenkins Slave

Page 32: Systems Engineer / Consultant @ inovex DevOps...Continuous Integration for Fun and Profit Arnold Bechtoldt Darmstadt, 16.06.2016 v2. ... Travis CI Pipeline. 27 Travis CI Pipeline (2)

Toolset

32

Tool PurposeGitLab Git Repository + CI ServerDocker Container TechnologyDocker-Compose Container/Service ManagementBash + Confd Image/Container ConfigurationArtifactory Artifact Repository