Upload
perforce
View
418
Download
0
Embed Size (px)
Citation preview
2
Agenda Overview of Continuous Delivery Best practices for success Common Tools and Technologies Demo
3
Can’t we just do what we currently do only faster?
Lack of communication between teams Each team uses a different data repository Environments can be substantially different Software deployed in different ways for each environment
Dev QAPre
Production Production
4
Continuous Delivery Deliver working product to users as quickly as possible Every change (check-in) leads to a potential release Give business the option to release
– what, when, to whom A change in process, and cultureContinuous Delivery
4
P I P E L I N E Reqs Dev Test Integrate Deploy
C O O R D I N A T E A S S E T S(code, scripts, artwork, binaries, etc.)
C O O R D I N A T E T E A M S(design, dev, release, devops, etc.)
P I P E L I N E
Best practices for successTeam Collaboration Flexible Workflow Complete Visibility
Detailed HistoryUniversal SecurityVersion Everything
6
Perforce enables Continuous Delivery
Developer Collaboration
Swarm
Design Collaboration
Commons
DevelopmentAnalytics
Insights
Perforce Version Management
100s of Terabytes Globally Distributed DVCS Any File Type
DEV
DEV
HQ
MFG
End-to-end Collaboration
Unified Asset Versioning
P I P E L I N E Reqs Dev Test Integrate Deploy
7
Common Terminology and ToolsTerm Description Related tools
Artifact Any type of file associated with a product. Could be code, artwork, design documents, binary build output plus many others.
Version control
Trunk based development
Artifacts always checked into trunk. Software can be released from branches or directly from trunk.
Version control
Continuous Integration
The practice of building and testing code each time code is checked in and integrated. Necessary for Continuous Delivery.
Jenkins, TeamCity, Bamboo, Electric Commander, Circle CI, Travis CI
Infrastructure as code
Environment and server configuration is defined as code, commonly in a tool specific DSL. Configurations are applied to servers to build environments.
Puppet, Chef, Ansible, Salt, CFEngine
Deployment Automation
Tools that enable applications to be modeled along with environments for deployment. The models are then used to deploy applications. Can be used in conjunction with infrastructure as code.
IBM UrbanCode Deploy, Nolio, Electric Flow,Puppet, Chef, Ansible, Salt, CFEngine
7
8
Tools Usage in Continuous DeliveryDev QA Pre
Production Production
Auto Auto Manual
Version Control
Version Control
Version Control
Version Control
Continuous Integration
Infrastructure as code
Infrastructure as code
Infrastructure as code
Deployment Automation
Deployment Automation
Deployment Automation
Test Automation
Test Automation Test Automation
10
Demo environment
VM stores• Helix P4D for code and artifacts• Helix Swarm for review • Jenkins for pipeline
Docker image for Jpetstore is deployed to QA and Production environments
11
Demo scenario
Edit the slider to include two more photos and deliver to production using the Continuous Delivery pipeline
12
Our pipeline
• Application checked out, built and checked back in and labeled
• Artifacts retrieved from Perforce and build into docker container and checked back in
• Docker container deployed to QA for testing
• Docker container deployed to production for testing
Auto Auto Manual
13
Versioning pipeline artifactsPerforce can store data of any type and size. In this demo scenario
• Application Source• SQL Scripts• Graphics Files• Build Artifacts• Deployment images• Environment Definitions• Infrastructure as code
14
Developer workflow Working with files is optimized for Continuous Delivery
• Select stream to work from and start working• Sync only the content needed for a task• Code committed to trunk
15
Continuous code reviews• Pre and post-commit code
(& doc) reviews across lifecycle
• Inline conversations and diffs
• Built-in hooks for pre-flight testing and deployment
• Dashboard for continuous delivery across multiple projects
• Across Git and Perforce
16
Successful Implementation of a Continuous Delivery Pipeline
High velocity build, test and deploy lifecycle Increased developer onus, unbreakable builds No room for “it works on my machine” Builds tested on production like environments Deployment to internal or external users
Integrate Build Test Deploy Release
Version Control