This presentation Illustrate's the team's achievements and challenges faced whilst implementing a CD framework for major retailer.
By using rigorous but simple dev process integrated with Jenkins build pipelines.
Pipelines have been carefully architected to orchestrate various build, deployment, testing and release of ecommerce applications.
It highlights the following areas that have enabled the team to transition to CD practices:
(1) Developer Environment: Implementation of virtual machines (VMs) for developers so they have all the required tools and applications for executing builds and tests.
(2) Continuous Integration: How changes pushed from a VM were continuously built, tested, deployed and released.
(3) Continuous Release: How the Jenkins Build Pipeline View was used to orchestrate release processes.
(4) Continuous Deployment: How the Jenkins Build Pipeline View was used to orchestrate the deployments to various environments, from CI through to production.
(5) Automated Testing: How a testing framework was integrated as a key checkpoint for promoting releases.
(6) Environment Configuration: How the environment configuration was decoupled so that the release is environment-agnostic and separately deploys environment configurations.
(7) Database Deployment: How the database and data changes were incrementally deployed as part of a Jenkins pipeline.
(8) Production Deployment: How the various deployment techniques were addressed (full outage, partial outage, no outage) using Jenkins pipelines.
(9) Reporting: How the Build Monitor plugin was used to report various build, deployment, testing and release statuses.
(10) Future Activities (cloud-based deployments)
2. Footer
#jenkinsconf
KITS Continuous delivery
2
• The Systems
• The VM
• The DEV Process
• Continuous integration
• Build & Release Pipelines
• Automated Testing
• Branching strategy
• Future goals
4. #jenkinsconf
Footer
The VM
• Oracle virtual box – centos VM.
• At least 8gb of ram.
• All tools like git, eclipse, java, atg, jboss,
oracle , mq manager and fitnesse packed into
vm.
• Able to run all ATG applications together.
• Easy to copy/export/import
9. #jenkinsconf
Footer
Build status monitor
• This page shows status of critical builds.
• This page is visible on the monitor for
everyone to see.
• Build Failures will cause the section to
turn RED.
• Teams priority will be to make it green
again.
11. #jenkinsconf
Footer
SQA (CI) Builds (2 hourly)
• Build is on demand or every 2 hours
• Trigger via build pipeline
• Creates deployable package and deploys to sqa.
• Runs db deploy for DB changes
• Triggers fitnesse Automated CI tests.
• If succeeded marks the build as success and uploads to nexus.
12. #jenkinsconf
Footer
DAILY CUT
• Agreed to take final build at 4pm everyday.
• Successful Build was tag permanently
• Deploy release to qam
• Inform QA test team to start testing QAM
• The build pipeline continues
• Release notes could be prepared at this
stage.
• A draft automated release note is prepared
by jenkins and uploaded to nexus
13. #jenkinsconf
Footer
NIGHTLY RELEASE
• QAM Should be stable
• Decide on promoting the release.
• Share release notes
• If agreed, Deploy to suat and sanity test
• If agreed, Deploy to uatX and sanity test
• Release available next morning
• Build pipeline continues until release is
promoted for production
14. #jenkinsconf
Footer
ATG ENVIRONMENT RELEASE
• This View shows which releases numbers on
each environment.
• Clicking on the release number hyperlink
leads to the release in Nexus repository.
• This page is visible on the monitor for
everyone to see.
16. #jenkinsconf
Footer
KITS Deployment Service (KDS)
• Holds deployment, startup and shutdown scripts for jboss & apache
• Holds templates for ATG, jboss, apache environment
• Holds environment configurations for all environments
• Decoupled from development
• Is back bone for deployment pipeline
• Developed in simple shell scripts.
• Provides easy and simple excel based process for creating and updating ATG
environment specific configurations.
• Same scripts used from sqa to production
• Invoked from jenkins, takes parameters and executes commands
• Has its own GIT repository
16
21. #jenkinsconf
Footer
Production deployment pipelines
• Full outage pipeline
• Rolling Data center pipeline
• Silo by silo pipeline
• Hotfix pipeline
A separate secured Jenkins is used for orchestrating production deployments
28. #jenkinsconf
Footer
Automated Functional Testing
• Fitnesse is being used .
• Code has been restructured few times to make it easy to understand.
• Its still a area that is being worked on.
• High priority tests are now being run as part of CI.
34. #jenkinsconf
Footer
Areas of Improvement
34
• Fitnesse testing, need to make it easily understood by all tech and no tech team.
• Junit and functional testing need more focus and widely used by development and
testing teams.
• Fitnesse on vm’s
• Frequent but stable releases to higher environment- this is key for continuous
delivery.
• The more automated test coverage we have the more closer to Continuous delivery.
36. #jenkinsconf
Footer
TYPICAL DIY.COM LIVE DEPLOYMENT NIGHT
36
No more stressful releases
No more manual deployments
When a deployment job has run
30k+ times, it can’t get any better.