By Masood Jan, Mazataz
Masood will illustrate the achievements and challenges faced whilst implementing a continuous delivery (CD) framework for a major retailer by using a rigorous but simple development process, integrated with Jenkins build pipelines. The pipelines have been carefully architected to orchestrate the various build, deployment, testing and release stages of e-commerce applications. The presenter will conclude with future goals regarding a cloud-based CD process using Jenkins.
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.