Upload
vishal-biyani
View
16.111
Download
0
Embed Size (px)
Citation preview
Using CI tools for continuous delivery?Can we use CI tools for Continuous Delivery?
www.vishalbiyani.com/ci-continuous-delivery
www.vishalbiyani.com
What will we do?
• Test drive each of
– Go (ThoughtWorks)
– TeamCity (Jetbrains)
– Bamboo (Atlassian)
– Jenkins (Open Source)
www.vishalbiyani.com
On what basis?
www.vishalbiyani.com
Parameter Description
Support for CI+CD Semantics Ability to club information from multiple builds into a release manifest sorts
First-class Workflow support Visual workflow - to build workflow which is easy to see and modify over time
Standard actions available Standard actions available for various CD tasks - like deploy to tomcat, connect to server X etc.
Custom actions- extensibility Ability to write custom actions/plugins for doing ad-hoc jobs, because not all actions provided in tool might fit your needs.
Miscellaneous factors Supports rolling deployments?Agentless or with Agents?Horizontally Scalable?Auto roll back?Database deployment integration?
Rough workflow we will test
A code commit invokes a build
Start Tomcat if not up
Deploy application
Build, unit test, create package
Restart Tomcat
Invoke test script
Wait on response from script
Indicate success/failure
www.vishalbiyani.com
Go - ThoughtWorks
http://www.thoughtworks.com/products/go-continuous-
delivery
www.vishalbiyani.com
www.vishalbiyani.com
We create a pipeline with three “stages” and configure it
Notice: What we are doing now is in
“Admin”- creation part. Pipelines tab is for running what we build
here
www.vishalbiyani.com
You can integrate with project
tracking tools like Mingle or others!
Material for a build pipeline will be source code from any of repositories
www.vishalbiyani.com
The “stages” in plan and number of “jobs” in each
stage
www.vishalbiyani.com
Environment variables can be
configured at multiple levels. “Secure” ones only at pipeline level
www.vishalbiyani.com
Diving one level deeper – A job can have
settings, tasks, artifacts and env. Variables
defined
www.vishalbiyani.com
The tasks available look like few, but with “Custom Command” you can literally integrate anything from a shell script to external
program
Moreover the “command repository” provides
additional commands so you don’t have to start
from scratch! You can build your private command repo from existing scripts
too!
Check https://github.com/goteam/go-command-repo
www.vishalbiyani.com
Let’s add a “maven” custom command to build our checked out source code
Similarly we added custom commands for tasks in other stages – to build a
pipeline
www.vishalbiyani.com
Other options while creating
pipelines including templates,
authentication and repos etc.
www.vishalbiyani.com
The only plugin which was
available in OOTB installation
Configure “Agents” which will execute
tasks
www.vishalbiyani.com
All our pipelines and their stages visible in
pipelines tab.
www.vishalbiyani.com
For a given pipeline –all past builds with stage level results in a
single page.
www.vishalbiyani.com
You can see where the material is going and what is being built ;)
www.vishalbiyani.com
Overall progress, with rest of details like materials, jobs and comparison of
changes
A history of given stage in previous
runs!
www.vishalbiyani.com
We loved the visual workflow and overall information we got while running pipeline
www.vishalbiyani.com
Successful builds and trends over
time
www.vishalbiyani.com
Comparison of Build 12 and 13 for a
pipeline – stage wise and changes
committed as part of change
Go - Concluding thoughts
• Clean, minimal interface
• Pretty good at both CI-CD Semantics
• Looks basic OOTB but Highly extensible and can be customized to needs with command repo (Kind of actions etc.)
• Very well done visual workflows and information required for deploys
www.vishalbiyani.com