public
3
Agenda
Continuous Delivery: Enterprise Challenges
Orchestration of CD Services
Cloud Foundry Integration
public
4
From Code to Products: Challenges
Hundreds of projects and development teams
Cover lots of platforms & technologies
Corporate compliance rules
public
6
From Code to Products: Challenges
Hundreds of projects and development teams
Covering lots of platforms & technologies
Corporate compliance rules
public
7
Terminology
• Continuous Integration
– Integrate frequently
– Verified by automated
build, test and quality checks
• Continuous Delivery
– Use CI intensively to be confident
you could release to production at any time
• Continuous Deployment
– Every change which passed automated tests
is deployed to production automatically
code build test release deploy plan
code build test release plan
code build test plan
public
8
• One central Jenkins
• Pipelines only inside Jenkins
Continuous Integration
Build, Test, Deploy (to repository)
Artifact Repository SCM
Central Build
Slave Slave
Slave Slave
Slave
public
9
Team Z Jenkins
Team Y Jenkins
• Team Jenkins for special scenarios
– High team effort
– Expert knowledge not shared
– Pipelines hardly possible
Continuous Integration
Central Build
Team X Jenkins
Slave Slave
Slave Slave
Slave
public
10
• Advanced scenario
– Separate easy to (re)use services
– Pipeline orchestration
– Extensible via own services
Continuous Integration
ci-connect Pipeline Orchestration
Standard Build Standard
Tests
Custom Tests
Translation …
Code Scans
Artifact Repository SCM
public
11
Continuous Deployment
• CI Evolution
Continuous Deployment
SCM
Standard Build Standard
Tests
Custom Tests
Translation CF
Deploy
Code Scans
ci-connect Pipeline Orchestration
Standard Build
Custom Tests
public
28
CF Deploy Service
Central Build
ci-connect | orchestration
GitHub Event (push, pull_request, status, …) GitHub Commit Status Feedback Each service decides on which events to react – based on config
public
29
ci-connect + Cloud Foundry
Jenkins CI System
CF Command Line Interface
# cf push
CF Deploy Service
public
31
Pull Requests Examined
Multiple deployments of the same project?
Non-unique routes
Forks and the manifest.yml
public
36
Token handling w/o ci-connect
Service B
Service A
Service C Problem: - Different OAuth tokens for repos of different teams - Each service would have to manage tokens
public
37
ci-connect – token handling
Service B
Service A
Service C Solution: - Users activate services in ci-connect - ci-connect manages OAuth tokens - Services authenticate on ci-connect public/private key encryption