SlideShare a Scribd company logo
Sam Brown
samuel.brown@excella.com
         November 7, 2012
Thanks to Mike McGarr and
Excella Consulting for hosting!!
Sam Brown
 11+ Years as a Java developer with commercial and
  federal clients
 Practicing continuous integration/continuous delivery
  for ~6 years
 DevOps Evangelist at Excella (www.excella.com)
 Certified Scrum Master
 Puppet Certified Professional
Basic components of an automated enterprise
 Continuous integration
 Dependency management
 Automated build tools


to build...
 Shared API libraries
 Custom web applications
 Products
“The purpose of a pipeline is to transport some resource
from point A to point B quickly and effectively with minimal
upkeep or attention required once built” – me

    So how did „pipelines‟ get applied to software? Let‟s
    try a few changes to this statement...

“The purpose of a         pipeline is to transport      from
                         to                    quickly and
effectively with minimal upkeep or attention required once
built” – me
Build pipelines require measurements and verification of
the code to ensure:
 Adherence to standards
 Quality proven through testing
 A product that meets user‟s needs


The purpose is not just transport, but to ensure that our
product is high-quality, prepared for the environment it will
reach, and satisfies the end-user.
“An automated manifestation of the process required to get your
team’s application code to the end-user, typically implemented via
continuous integration server, with emphasis on eliminating
defects” – me (again)
 …in fact, NONE ARE!
 Build pipelines will vary as much as
  applications
 Different teams have different needs
 Simplicity is key


                 One Size
                  Fits All!
Anatomy of a Build Pipeline
Repeatable, automated, process to ensure that application code is
        tested, analyzed, and packaged for deployment.
 System of record
 Just do it!
 Take advantage of commit hooks
 Build from trunk and reduce server-side
  branches
 Tag often
 Don‟t check in broken code!
Purpose: Integrate, build and unit test code for quick
feedback
 Best Practices
       Runs in under 10 minutes (rapid feedback)
       Unit tests do not require external resources
       Run on EVERY developer check-in
       Fixing broken builds is the top priority!
       Gamification to drive adoption
       80% test coverage or BETTER
   Challenges
     LOTS of builds
     False sense of security
     Writing tests is hard
Purpose: Test component and/or external resource
integration
 Best Practices
       Test connectivity with external resources
       Test frameworks load correctly
       Test application components work together
       Test configuration
       Fewer integration tests than unit tests
   Challenges
     External resources may not be available in all environments
        ○ Mock locally
     Can be time consuming
        ○ Use local resources
        ○ Separate short/long running tests
Purpose: Use automated tools to inspect code
 Best Practices
       Check syntax
       Find security vulnerabilities
       Record test coverage
       Discover complexity
       Optional: Fail based on a metric
       Optional: View technical debt
   Challenges
     Not all code analysis tools are free
     Learning/installing new tools
Purpose: Label code and package as
deployable
Best Practices
       Labeling allows you to go back in time
       Packaging code for deployment
       Reduce complexity by combining steps
       NO configuration in package -> Package once,
        deploy multiple
   Challenges
     Labeling can be resource intensive
     Many packaging options
Purpose: Make artifacts available for
deployment or available to other teams
 Best Practices
     Publish a versioned artifact
     Make repository available
     Reduce complexity by combining steps
   Challenges
     Requires initial complex setup
     Security requirements around exposing artifacts
      ○ Use a tool with security built-in like Nexus
Anatomy of a Build Pipeline
Repeatable, automated, process to ensure that our target environment
            is properly constructed for our application(s).
Purpose: Check syntax and compile prior to
application
 Puppet Lint – Static format checker for
  Puppet manifests
 No-op Test Run – Ensure that manifest
  compiles
 Challenges
   Puppet-lint requires a ruby-based environment
   No-op test needs production-like VM
   Long feedback loop
Purpose: Test infrastructure in a prod-like environment
 Puppet Apply –Puppet application against VM that
  mimics DEV/TEST/PROD
 Infrastructure Tests – Test your environment!
 Example tests:
       Users and groups created
       Packages installed
       Services running
       Firewall configured
   Challenges
     Long feedback loop
     Yet another language (cucumber/rspec/other)
     VM must be up to date with DEV/TEST/PROD
cucumber-puppet                                                    rspec-puppet

Feature: Services                                         require 'spec_helper'

Scenario Outline: Service should be running and bind to   describe 'logrotate::rule' do
port                                                       let(:title) { 'nginx' }
 When I run `lsof -i :<port>`
 Then the output should match /<service>.*<user>/          it { should include_class('logrotate::rule') }

 Examples:                                                 it do
  | service | user      | port |                             should contain_file('/etc/logrotate.d/nginx').with({
  | master | root       | 25 |                                 'ensure' => 'present',
  | apache2 | www-data | 80 |                                  'owner' => 'root',
  | dovecot | root     | 110 |                                 'group' => 'root',
  | mysqld | mysql     | 3306 |                                'mode' => '0444',
                                                             })
                                                           end
   http://projects.puppetlabs.com/projects/cucu           end
                  mber-puppet/wiki



                                                                      http://rspec-puppet.com/
Anatomy of a Build Pipeline
Repeatable, automated, process to ensure that our application is
properly installed in the target environment and that the application
                      meets acceptance criteria.
Purpose: Test acceptance criteria in a prod-like
environment
 Puppet Apply – Apply Puppet manifests including
  deploying application
 Run Acceptance Tests – “End-to-end” testing
     End-user perspective
     Meets user-defined acceptance criteria
     Possible tools: Cucumber, Selenium, Geb, Sikuli
   Challenges
     Maintain a production-like VM
     Acceptance tests brittle
      ○ Test at the right level
     Acceptance tests long running
      ○ Run nightly
Purpose: Label application and infrastructure
code, deploy to DEV environment
 Label Release Candidate – Known
  “accepted” versions will be deployed
  together
 Deploy to DEV – Automated deployment
     Infrastructure AND application
   Challenges
     DEV updating, not deployed from scratch
      ○ Create tests for ALL possible scenarios
     Security
      ○ Work with security early and often!
Anatomy of a Build Pipeline
Simplified process to support streamlined deployments to TEST
                       and PRODUCTION
Purpose: Enable the test team to pull the
latest code
 Pull-based deployment
 Manual Testing/Approval
 Challenges
   Enabling test team is a paradigm shift
   Producing changes too fast
    ○ Create good release notes
    ○ Not every build needs manual testing
Purpose: Enable operations team to pull the
latest code into production
 “Push-button” deployment to production
     Requires testing approval
   Challenges
     Audit/security check before deployment
      ○ Discuss with operations
      ○ Automate as much as possible and prudent
     Paradigm shift for operations, TOO EASY!
      ○ Engage the operations team as early and often
     Rollback/Roll forward strategy
      ○ Easier with RPM‟s, I prefer roll forward
 Remove human error
 Repeatability tests and improves the
  process
 Visibility from code to deployment
 Baked-in quality
 Metrics, metrics, metrics
 Rapid and constant feedback
 Releases are non-events
Why do we store old/obsolete versions?
 Rollback
 Auditing
 History?
 Any other reason?


My view: Store only the latest build and current production release
 Bugs fixed in latest version
 (Almost) impossible to reproduce environments
 Version control has history


Exception: Other teams dependent on a previous version
   Store major/minor revisions

Reasoning: In a continuous delivery environment, delivering frequently
allows you to keep moving forward with new features AND bug fixes!
 Put EVERYTHING in version control
 Start simple, up your unit test coverage.
 Analyze your code in order to focus
 Install CI and start with two build steps
 Start and maintain a wiki
 And lastly…
Anatomy of a Build Pipeline
   samuel.brown@excella.com

   @SamuelBrownIV

   http://github.com/samueltbrown

   http://www.linkedin.com/pub/samuel-brown/3/715/352
Ad

More Related Content

What's hot (20)

Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Robert McDermott
 
DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014
Jean-Charles JOREL
 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous Delivery
Virendra Bhalothia
 
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
Puppet
 
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
CloudBees
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
Knoldus Inc.
 
Docker Enables DevOps
Docker Enables DevOpsDocker Enables DevOps
Docker Enables DevOps
Boyd Hemphill
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
Edureka!
 
SkyBase - a Devops Platform for Hybrid Cloud
SkyBase - a Devops Platform for Hybrid CloudSkyBase - a Devops Platform for Hybrid Cloud
SkyBase - a Devops Platform for Hybrid Cloud
Vlad Kuusk
 
Scaling Jenkins
Scaling Jenkins Scaling Jenkins
Scaling Jenkins
Udaypal Aarkoti
 
Enterprise CI as-a-Service using Jenkins
Enterprise CI as-a-Service using JenkinsEnterprise CI as-a-Service using Jenkins
Enterprise CI as-a-Service using Jenkins
CollabNet
 
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...
Edureka!
 
CI/CD
CI/CDCI/CD
CI/CD
AmitDhodi
 
Continuous integration using jenkins
Continuous integration using jenkinsContinuous integration using jenkins
Continuous integration using jenkins
Vinay H G
 
Continuous Testing
Continuous TestingContinuous Testing
Continuous Testing
Crevise Technologies
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CD
Cprime
 
SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8
Rajwinder Singh
 
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsAnalyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
CloudBees
 
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | EdurekaWhat is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
Edureka!
 
Seminar continuous delivery 19092013
Seminar continuous delivery 19092013Seminar continuous delivery 19092013
Seminar continuous delivery 19092013
Joris De Winne
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Robert McDermott
 
DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014
Jean-Charles JOREL
 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous Delivery
Virendra Bhalothia
 
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
Puppet
 
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
CloudBees
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
Knoldus Inc.
 
Docker Enables DevOps
Docker Enables DevOpsDocker Enables DevOps
Docker Enables DevOps
Boyd Hemphill
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
Edureka!
 
SkyBase - a Devops Platform for Hybrid Cloud
SkyBase - a Devops Platform for Hybrid CloudSkyBase - a Devops Platform for Hybrid Cloud
SkyBase - a Devops Platform for Hybrid Cloud
Vlad Kuusk
 
Enterprise CI as-a-Service using Jenkins
Enterprise CI as-a-Service using JenkinsEnterprise CI as-a-Service using Jenkins
Enterprise CI as-a-Service using Jenkins
CollabNet
 
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...
Edureka!
 
Continuous integration using jenkins
Continuous integration using jenkinsContinuous integration using jenkins
Continuous integration using jenkins
Vinay H G
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CD
Cprime
 
SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8
Rajwinder Singh
 
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsAnalyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
CloudBees
 
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | EdurekaWhat is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
Edureka!
 
Seminar continuous delivery 19092013
Seminar continuous delivery 19092013Seminar continuous delivery 19092013
Seminar continuous delivery 19092013
Joris De Winne
 

Similar to Anatomy of a Build Pipeline (20)

Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...
 Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S... Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...
Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...
Skytap Cloud
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
CIVEL Benoit
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)
CIVEL Benoit
 
Bay Area Chef Meetup February
Bay Area Chef Meetup FebruaryBay Area Chef Meetup February
Bay Area Chef Meetup February
Jessica DeVita
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
Eklove Mohan
 
Achieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef AutomateAchieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef Automate
Chef
 
Containerization Strategy
Containerization StrategyContainerization Strategy
Containerization Strategy
Balaji Mariyappan
 
A Bit of Everything Chef
A Bit of Everything ChefA Bit of Everything Chef
A Bit of Everything Chef
Mandi Walls
 
Práticas, Técnicas e Ferramentas para Continuous Delivery com ALM
Práticas, Técnicas e Ferramentas para Continuous Delivery com ALMPráticas, Técnicas e Ferramentas para Continuous Delivery com ALM
Práticas, Técnicas e Ferramentas para Continuous Delivery com ALM
Marcelo Sousa Ancelmo
 
Wellington MuleSoft Meetup 2021-02-18
Wellington MuleSoft Meetup 2021-02-18Wellington MuleSoft Meetup 2021-02-18
Wellington MuleSoft Meetup 2021-02-18
Mary Joy Sabal
 
Continuous Delivery with a PaaS Application
Continuous Delivery with a PaaS ApplicationContinuous Delivery with a PaaS Application
Continuous Delivery with a PaaS Application
Mark Rendell
 
DevSec Delight with Compliance as Code - Matt Ray - AgileNZ 2017
DevSec Delight with Compliance as Code - Matt Ray - AgileNZ 2017DevSec Delight with Compliance as Code - Matt Ray - AgileNZ 2017
DevSec Delight with Compliance as Code - Matt Ray - AgileNZ 2017
AgileNZ Conference
 
DevOpsDays Singapore - Continuous Auditing with Compliance as Code
DevOpsDays Singapore - Continuous Auditing with Compliance as CodeDevOpsDays Singapore - Continuous Auditing with Compliance as Code
DevOpsDays Singapore - Continuous Auditing with Compliance as Code
Matt Ray
 
Modernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-ArchitectModernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-Architect
DevOps.com
 
How to Build and Maintain Quality Drupal Sites with Automated Testing
How to Build and Maintain Quality Drupal Sites with Automated TestingHow to Build and Maintain Quality Drupal Sites with Automated Testing
How to Build and Maintain Quality Drupal Sites with Automated Testing
Acquia
 
Strengthen and Scale Security for a dollar or less
Strengthen and Scale Security for a dollar or lessStrengthen and Scale Security for a dollar or less
Strengthen and Scale Security for a dollar or less
Mohammed A. Imran
 
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP IndonesiaStrengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
Mohammed A. Imran
 
Simplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APISimplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI API
VictorSzoltysek
 
DevOps, A brief introduction to Vagrant & Ansible
DevOps, A brief introduction to Vagrant & AnsibleDevOps, A brief introduction to Vagrant & Ansible
DevOps, A brief introduction to Vagrant & Ansible
Arnaud LEMAIRE
 
Amardeep qa test_automation_cv
Amardeep qa test_automation_cvAmardeep qa test_automation_cv
Amardeep qa test_automation_cv
FNU Amardeep
 
Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...
 Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S... Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...
Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...
Skytap Cloud
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
CIVEL Benoit
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)
CIVEL Benoit
 
Bay Area Chef Meetup February
Bay Area Chef Meetup FebruaryBay Area Chef Meetup February
Bay Area Chef Meetup February
Jessica DeVita
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
Eklove Mohan
 
Achieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef AutomateAchieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef Automate
Chef
 
A Bit of Everything Chef
A Bit of Everything ChefA Bit of Everything Chef
A Bit of Everything Chef
Mandi Walls
 
Práticas, Técnicas e Ferramentas para Continuous Delivery com ALM
Práticas, Técnicas e Ferramentas para Continuous Delivery com ALMPráticas, Técnicas e Ferramentas para Continuous Delivery com ALM
Práticas, Técnicas e Ferramentas para Continuous Delivery com ALM
Marcelo Sousa Ancelmo
 
Wellington MuleSoft Meetup 2021-02-18
Wellington MuleSoft Meetup 2021-02-18Wellington MuleSoft Meetup 2021-02-18
Wellington MuleSoft Meetup 2021-02-18
Mary Joy Sabal
 
Continuous Delivery with a PaaS Application
Continuous Delivery with a PaaS ApplicationContinuous Delivery with a PaaS Application
Continuous Delivery with a PaaS Application
Mark Rendell
 
DevSec Delight with Compliance as Code - Matt Ray - AgileNZ 2017
DevSec Delight with Compliance as Code - Matt Ray - AgileNZ 2017DevSec Delight with Compliance as Code - Matt Ray - AgileNZ 2017
DevSec Delight with Compliance as Code - Matt Ray - AgileNZ 2017
AgileNZ Conference
 
DevOpsDays Singapore - Continuous Auditing with Compliance as Code
DevOpsDays Singapore - Continuous Auditing with Compliance as CodeDevOpsDays Singapore - Continuous Auditing with Compliance as Code
DevOpsDays Singapore - Continuous Auditing with Compliance as Code
Matt Ray
 
Modernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-ArchitectModernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-Architect
DevOps.com
 
How to Build and Maintain Quality Drupal Sites with Automated Testing
How to Build and Maintain Quality Drupal Sites with Automated TestingHow to Build and Maintain Quality Drupal Sites with Automated Testing
How to Build and Maintain Quality Drupal Sites with Automated Testing
Acquia
 
Strengthen and Scale Security for a dollar or less
Strengthen and Scale Security for a dollar or lessStrengthen and Scale Security for a dollar or less
Strengthen and Scale Security for a dollar or less
Mohammed A. Imran
 
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP IndonesiaStrengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
Mohammed A. Imran
 
Simplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APISimplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI API
VictorSzoltysek
 
DevOps, A brief introduction to Vagrant & Ansible
DevOps, A brief introduction to Vagrant & AnsibleDevOps, A brief introduction to Vagrant & Ansible
DevOps, A brief introduction to Vagrant & Ansible
Arnaud LEMAIRE
 
Amardeep qa test_automation_cv
Amardeep qa test_automation_cvAmardeep qa test_automation_cv
Amardeep qa test_automation_cv
FNU Amardeep
 
Ad

Recently uploaded (20)

How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Ad

Anatomy of a Build Pipeline

  • 1. Sam Brown [email protected] November 7, 2012
  • 2. Thanks to Mike McGarr and Excella Consulting for hosting!!
  • 3. Sam Brown  11+ Years as a Java developer with commercial and federal clients  Practicing continuous integration/continuous delivery for ~6 years  DevOps Evangelist at Excella (www.excella.com)  Certified Scrum Master  Puppet Certified Professional
  • 4. Basic components of an automated enterprise  Continuous integration  Dependency management  Automated build tools to build...  Shared API libraries  Custom web applications  Products
  • 5. “The purpose of a pipeline is to transport some resource from point A to point B quickly and effectively with minimal upkeep or attention required once built” – me So how did „pipelines‟ get applied to software? Let‟s try a few changes to this statement... “The purpose of a pipeline is to transport from to quickly and effectively with minimal upkeep or attention required once built” – me
  • 6. Build pipelines require measurements and verification of the code to ensure:  Adherence to standards  Quality proven through testing  A product that meets user‟s needs The purpose is not just transport, but to ensure that our product is high-quality, prepared for the environment it will reach, and satisfies the end-user.
  • 7. “An automated manifestation of the process required to get your team’s application code to the end-user, typically implemented via continuous integration server, with emphasis on eliminating defects” – me (again)
  • 8.  …in fact, NONE ARE!  Build pipelines will vary as much as applications  Different teams have different needs  Simplicity is key One Size Fits All!
  • 10. Repeatable, automated, process to ensure that application code is tested, analyzed, and packaged for deployment.
  • 11.  System of record  Just do it!  Take advantage of commit hooks  Build from trunk and reduce server-side branches  Tag often  Don‟t check in broken code!
  • 12. Purpose: Integrate, build and unit test code for quick feedback  Best Practices  Runs in under 10 minutes (rapid feedback)  Unit tests do not require external resources  Run on EVERY developer check-in  Fixing broken builds is the top priority!  Gamification to drive adoption  80% test coverage or BETTER  Challenges  LOTS of builds  False sense of security  Writing tests is hard
  • 13. Purpose: Test component and/or external resource integration  Best Practices  Test connectivity with external resources  Test frameworks load correctly  Test application components work together  Test configuration  Fewer integration tests than unit tests  Challenges  External resources may not be available in all environments ○ Mock locally  Can be time consuming ○ Use local resources ○ Separate short/long running tests
  • 14. Purpose: Use automated tools to inspect code  Best Practices  Check syntax  Find security vulnerabilities  Record test coverage  Discover complexity  Optional: Fail based on a metric  Optional: View technical debt  Challenges  Not all code analysis tools are free  Learning/installing new tools
  • 15. Purpose: Label code and package as deployable Best Practices  Labeling allows you to go back in time  Packaging code for deployment  Reduce complexity by combining steps  NO configuration in package -> Package once, deploy multiple  Challenges  Labeling can be resource intensive  Many packaging options
  • 16. Purpose: Make artifacts available for deployment or available to other teams  Best Practices  Publish a versioned artifact  Make repository available  Reduce complexity by combining steps  Challenges  Requires initial complex setup  Security requirements around exposing artifacts ○ Use a tool with security built-in like Nexus
  • 18. Repeatable, automated, process to ensure that our target environment is properly constructed for our application(s).
  • 19. Purpose: Check syntax and compile prior to application  Puppet Lint – Static format checker for Puppet manifests  No-op Test Run – Ensure that manifest compiles  Challenges  Puppet-lint requires a ruby-based environment  No-op test needs production-like VM  Long feedback loop
  • 20. Purpose: Test infrastructure in a prod-like environment  Puppet Apply –Puppet application against VM that mimics DEV/TEST/PROD  Infrastructure Tests – Test your environment!  Example tests:  Users and groups created  Packages installed  Services running  Firewall configured  Challenges  Long feedback loop  Yet another language (cucumber/rspec/other)  VM must be up to date with DEV/TEST/PROD
  • 21. cucumber-puppet rspec-puppet Feature: Services require 'spec_helper' Scenario Outline: Service should be running and bind to describe 'logrotate::rule' do port let(:title) { 'nginx' } When I run `lsof -i :<port>` Then the output should match /<service>.*<user>/ it { should include_class('logrotate::rule') } Examples: it do | service | user | port | should contain_file('/etc/logrotate.d/nginx').with({ | master | root | 25 | 'ensure' => 'present', | apache2 | www-data | 80 | 'owner' => 'root', | dovecot | root | 110 | 'group' => 'root', | mysqld | mysql | 3306 | 'mode' => '0444', }) end http://projects.puppetlabs.com/projects/cucu end mber-puppet/wiki http://rspec-puppet.com/
  • 23. Repeatable, automated, process to ensure that our application is properly installed in the target environment and that the application meets acceptance criteria.
  • 24. Purpose: Test acceptance criteria in a prod-like environment  Puppet Apply – Apply Puppet manifests including deploying application  Run Acceptance Tests – “End-to-end” testing  End-user perspective  Meets user-defined acceptance criteria  Possible tools: Cucumber, Selenium, Geb, Sikuli  Challenges  Maintain a production-like VM  Acceptance tests brittle ○ Test at the right level  Acceptance tests long running ○ Run nightly
  • 25. Purpose: Label application and infrastructure code, deploy to DEV environment  Label Release Candidate – Known “accepted” versions will be deployed together  Deploy to DEV – Automated deployment  Infrastructure AND application  Challenges  DEV updating, not deployed from scratch ○ Create tests for ALL possible scenarios  Security ○ Work with security early and often!
  • 27. Simplified process to support streamlined deployments to TEST and PRODUCTION
  • 28. Purpose: Enable the test team to pull the latest code  Pull-based deployment  Manual Testing/Approval  Challenges  Enabling test team is a paradigm shift  Producing changes too fast ○ Create good release notes ○ Not every build needs manual testing
  • 29. Purpose: Enable operations team to pull the latest code into production  “Push-button” deployment to production  Requires testing approval  Challenges  Audit/security check before deployment ○ Discuss with operations ○ Automate as much as possible and prudent  Paradigm shift for operations, TOO EASY! ○ Engage the operations team as early and often  Rollback/Roll forward strategy ○ Easier with RPM‟s, I prefer roll forward
  • 30.  Remove human error  Repeatability tests and improves the process  Visibility from code to deployment  Baked-in quality  Metrics, metrics, metrics  Rapid and constant feedback  Releases are non-events
  • 31. Why do we store old/obsolete versions?  Rollback  Auditing  History?  Any other reason? My view: Store only the latest build and current production release  Bugs fixed in latest version  (Almost) impossible to reproduce environments  Version control has history Exception: Other teams dependent on a previous version  Store major/minor revisions Reasoning: In a continuous delivery environment, delivering frequently allows you to keep moving forward with new features AND bug fixes!
  • 32.  Put EVERYTHING in version control  Start simple, up your unit test coverage.  Analyze your code in order to focus  Install CI and start with two build steps  Start and maintain a wiki  And lastly…
  • 34. [email protected]  @SamuelBrownIV  http://github.com/samueltbrown  http://www.linkedin.com/pub/samuel-brown/3/715/352

Editor's Notes

  • #4: 11+ Years as a Java developer6 years Practicing continuous integration/continuous deliveryDevOps Evangelist CSMPuppet Certified
  • #5: Some assumptions about enterprises tackling automationThey possess some standard components to automate building shared API’s, products and/or custom web applicationsBuilding software is mostly at a very micro level when viewed through the enterpriseIgnoring business logic, there are still a LOT of places software could fail in this view
  • #8: Eliminate defects in:The processThe product
  • #9: …in fact, NONE ARE!Build pipelines varyDifferent teams, different needsStart simply
  • #10: Our use-case Pipeline- Building a web-services based web application- Has an environment build- Fork/Join- Does NOT flow all of the way to Production
  • #12: System of RecordJust use it!Commit HooksBuild trunkTag often (cheap)No broken code
  • #13: Under 10 minNo external resourcesEvery checkinFix broken builds80% coverageChallenges:Logs of buildsFalse securityWriting tests is hard
  • #14: Test connectivityTest frameworksTest componentsTest configFewer tests than unitChallenges:External resourcesTime consumingLocal resourcesSplit tests
  • #15: Check syntaxFind security issuesRecord test coverageDiscover complexity and areas of focusFail based on some metric not metCheck out technical debtChallengesFinding a free toolLearning/integrating these tools
  • #16: Labeling snapshots your codePackage for easier deploymentSteps can be combinedNo config in package!ChallengesLabeling may create copies of code baseMany packaging options (RPM)
  • #17: Make artifacts availableAlways versionMake repo available to allCombine stepsChallenges:Complex setupSecurity challenges exposing artifacts
  • #18: Our use-case Pipeline- Building a web-services based web application- Has an environment build- Fork/Join- Does NOT flow all of the way to Production
  • #19: Infastructure as code!- Puppet, Chef, cfengine, batch scripts should all be in version control just like application code
  • #20: Check infrastructure language syntaxNo-op checks compile and a test runChallengesRequires rubyNeeds a prod-like VMLong feedback loop
  • #21: Applying changes to prod-like VMRun tests to ensure infrastructure is readyChallengesLong feedback loopAnother language to learnUp to date VM needed
  • #23: Our use-case Pipeline- Building a web-services based web application- Has an environment build- Fork/Join- Does NOT flow all of the way to Production
  • #25: Bringing sub-lines together for full runTest that application runsEnd to EndEnd user perspectiveMeets criteriaChallengesUp to date VMBrittle acceptance testsLong running tests
  • #26: Label/Tag infrastructure and code, they go together!Deploy to DEV for additional developer testingTest things that can’t be automated?ChallengesDEV is updating here, should it start from scratch?Security!Is a DEV deployment necessary? Where else could this apply?
  • #27: Our use-case Pipeline- Building a web-services based web application- Has an environment build- Fork/Join- Does NOT flow all of the way to Production
  • #28: Flipped which side seems simple and which side seems hard!
  • #29: Pull-based deploymentManual testing and approvalChallenges:Change in process/paradigmNot every build needs manual testing! Mind shift!
  • #30: Push button to production – SCARY!Requires test aprovalChallengesAuditing/Security – where does this happen? (Automate, collaborate)Change for operations (this is too easy)Rollback/Roll-forward strategy (RPM’s make this easier, my preference)
  • #31: Remove manual processes and human errorRepeatability to test and improve the build processVisibility for the entire teamQuality is “baked in”Metrics on anything you want to measure to gain insightRapid and constant feedback at all stagesReleases become non –events (hopefully)
  • #32: Why do we keep reems of versions? Are we going back? Auditing?My view Store the latest build and current production release ONLYBugs fixed in next deployment Environments are difficult to reproduceVersion control has your historyException might be creating API’sFrequent delivery allows you to continue pushing forward instead of looking backwards
  • #33: Version controlStart simple with unit test coverageAnalyze your code -&gt; Shows you where to focus effortInstall CI and start with 2 build stepsSTART A WIKI!!