SlideShare a Scribd company logo
1 of 32
Download to read offline
Self-Service Secure Test and
Release Pipelines
Andrey Falko - Lead Engineer - Diagnostics, Visibility, and Analytics Cloud
afalko@salesforce.com
Our journey to get Jenkins to deploy and deliver software to production
Forward-Looking Statements
Statement under the Private Securities Litigation Reform Act of 1995:
This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties
materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed
or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed
forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items
and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning
new, planned, or upgraded services or technology developments and customer contracts or use of our services.
The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new
functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our
operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any
litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our
relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our
service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger
enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our
annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent fiscal quarter. These
documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our
Web site.
Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available
and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features
that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
Outline
Once Upon A Time…
From Guilds to a Factory
Pipeline Phases
Happily Ever After?
Presentation Content
Once Upon A Time...
● One App
● No public cloud
Imagine being a startup in 1999
Once Upon A Time...
● Customer data
○ Lives and livelihoods depend on it!
● Need
○ Secure chain of trust
■ Release process from source control to production (CI/CD)
■ Test and release pipelines (TNRP)
With success comes great responsibility
VCS
Test and Package
Package Store
Customer Data
Once Upon A Time...
● 400+ developers
● App and Platform
● CI and CD mature:
○ Automation
○ Two-man rule
○ Java, java, and more java!
Fast forward a decade: 2009
Once Upon A Time...
● 25 Acquisitions
● Countless apps and infrastructures
● Infrastructure gets complicated
Fast forward five years: 2014
Once Upon A Time...
● One of many clouds under infrastructure
● Platforms for Monitoring and Alerting
● Lots of software components
○ Some open source, some not, most somewhere in between
○ Java, Scala, Python, Go, Ruby, Erlang…
○ Ant, Maven, Gradle, Make, Rake, Tox
Formation of Diagnostics, Visibility, and Analytics (DVA) Cloud
Once Upon A Time...
● Same release requirements
○ Everything going into any datacenter must follow two-man rule and other compliance rules!
● Mature process?
○ It was complicated...
Guess how we coped?
Once Upon A Time...
● Jenkins was widely used
○ Fifty software packages shipped
○ Three different installations
○ Inconsistent authentication and authorization setups
○ Inconsistent release process enforcement
○ Lovingly hand-crafted FreeStyle jobs
The Strata team formed!
Security
Compliance Deliver Features
Service Ownership
Outline
Once Upon A Time…
From Guilds to a Factory
Pipeline Phases
Happily Ever After?
Presentation Content
From Guilds To Factory
Solution
● Generate Jenkins jobs for developers
○ Engineers-only CRUD per team
○ Test and Release Pipelines
○ Parameterized Jenkins build jobs
■ See DEMO
From Guilds To Factory
● Regardless of language, project, to tools:
○ How do I unit test?
○ How do I package?
○ How do I integration test my components?
○ What defines my application health?
○ Is my application stateful or stateless?
○ Where do I deploy first?
○ How large is the footprint and where?
Developers have to do all these things
CI: Big Picture
Our Continuous
Integration Flow
Git Master
Branch
Unit Tests
Create
Package
Integration
Tests
Promote To
Production
Git Branch
Unit Tests
Create
Package
Integration
Tests
Code Review
Continuous Deployment
Completing the
feedback loop Back to developer
for fixes
Production
Tests
Production
Deployments
Production
Tests
Rollback
Deployment
Monitoring
System
Canary
Deployments
Jenkins
Outline
Once Upon A Time…
From Guilds to a Factory
Pipeline Phases
Happily Ever After?
Presentation Content
Unit Testing and Static Analysis
● User input
○ Unit test command(s)
○ Docker image to use for unit test commands
■ Create pipeline for new docker image
■ Automated static analysis via SonarQube
■ Never give access to Docker daemon
How do I test?
Packaging
● Had to support multiple packaging formats
○ RPM, TAR, JAR, Docker
● RPM and TAR also allow users to package Docker
○ Provide a better future
○ Make legacy components more testable
● CI system controls package signing
○ Sign on separate physical machines
Package what you test, test what you package
Integration Testing
● Declare how components are wired together
○ See EXAMPLE
● Users create integration test that is run from a container and executed in
docker-compose.yaml
○ Output JUNIT formatted test result info to Jenkins
Test what you ship, ship what you test
Deployment Declaration
Pipeline diagram by Lauren Padia
Integration Testing
● Integration test failures difficult to troubleshoot
○ Only change one component at a time
○ Slow
■ Force containerization
■ Limit quantity of tests
■ Large footprints
Overcome the pitfalls
Delivery To Production
Master Docker Registry
R&D DMZ
Notary Master
Trusted
TNRP
PROD
Mirrored Registry
Servers
Pull
Validate
Push
Pull
Pull
Sign
Release Engineer
presses release
buttons
Data flow
VCS
Delivery To Production
● Fail if “FROM” contains non-approved image
● Trigger pipeline runs when parent image updated
○ Dockerfile Image Update tool
○ See DEMO
Overcome Docker pitfalls
Monitoring in Production
● Monitoring Driven Deployments
○ Deploy if in good state
● Time Series Metrics and Alerts
○ Continuously test
■ Why not use those integration tests?
■ Think like a customer
○ Application metrics
○ System metrics
■ CPU, Memory, Disk I/O, etc.
From TDD to MDD
Outline
Once Upon A Time…
From Guilds to a Factory
Pipeline Phases
Happily Ever After?
Presentation Content
Happily Ever After?
● 150 pipelines
● 50 pipelines runs per day
● 80 developers
● Current challenges:
○ Feedback to Jenkins on
deployments in production
○ Better Jenkins agent
support
○ Pipeline declaration in VCS
Fast-forward to today
Happily Ever After?
● Use Pipeline Multibranch and Github Organization plugins:
○ Don’t allow users full use of the DSL
○ Represent the same fields we have, but in “Stratafile” in VCS
● Never run a single job on master
○ Start with agents from day 1
If we were to start again today
Happily Ever After?
● Jenkins feature wishlist
○ User-controlled credentials for integration tests
○ AWS/Openstack plugins
■ Spin up containers for Jenkins on VMs
■ Autoscale
● Swarm or dynaslave plugins don’t fully fit our needs
Still not automated out of a job...
Takeaways
● Limit access to critical systems
● No Freestyle Jobs
● Split your agents by security boundaries
● Integrate Jenkins with your monitoring systems
Acknowledgements
● Project contributors
○ Nari Mulakala
○ Jinesh Doshi
○ Nelson Wolf
○ Justin Harringa
○ Min Ho Park
● Project management
○ Vaishali Nandal
○ Fergus Sullivan
● Chief Beard Officer
○ Ian Varley
● Doc Writer
○ Lauren Padia
● Security Reviewer
○ Travis Emmert
Thank Y u
San Francisco Jenkins Area Meetup October 2016: Self-service secure test and release pipelines
San Francisco Jenkins Area Meetup October 2016: Self-service secure test and release pipelines

More Related Content

What's hot

The Continuous Delivery toolstack for embedded Java af Leif Sørensen, Praqma
The Continuous Delivery toolstack for embedded Java af Leif Sørensen, PraqmaThe Continuous Delivery toolstack for embedded Java af Leif Sørensen, Praqma
The Continuous Delivery toolstack for embedded Java af Leif Sørensen, PraqmaInfinIT - Innovationsnetværket for it
 
Salesforce – Proven Platform Development with DevOps & Agile
Salesforce – Proven Platform Development with DevOps & AgileSalesforce – Proven Platform Development with DevOps & Agile
Salesforce – Proven Platform Development with DevOps & AgileSai Jithesh ☁️
 
CodeLive with Adam Daw - Building a mobile friendly geolocation aware candy t...
CodeLive with Adam Daw - Building a mobile friendly geolocation aware candy t...CodeLive with Adam Daw - Building a mobile friendly geolocation aware candy t...
CodeLive with Adam Daw - Building a mobile friendly geolocation aware candy t...JackGuo20
 
Seven Deadly Saves To Security With Integrations
Seven Deadly Saves To Security With IntegrationsSeven Deadly Saves To Security With Integrations
Seven Deadly Saves To Security With IntegrationsSBWebinars
 
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demo
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demoAgile Software Factory - Cloud Expo / DevOps Summit 2014 demo
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demoGrid Dynamics
 
5 Principles to Managing Your Application Lifecycle with SpiraTeam
5 Principles to Managing Your Application Lifecycle with SpiraTeam5 Principles to Managing Your Application Lifecycle with SpiraTeam
5 Principles to Managing Your Application Lifecycle with SpiraTeamAdam Sandman
 
1×10 rola QA w tworzeniu Atlassian JIRA
 1×10 rola QA w tworzeniu Atlassian JIRA 1×10 rola QA w tworzeniu Atlassian JIRA
1×10 rola QA w tworzeniu Atlassian JIRA3camp
 
Cloud load testing with Visual Studio Team Services
Cloud load testing with Visual Studio Team ServicesCloud load testing with Visual Studio Team Services
Cloud load testing with Visual Studio Team ServicesMartin Hinshelwood
 
Release Management for Large Enterprises
Release Management for Large EnterprisesRelease Management for Large Enterprises
Release Management for Large EnterprisesSalesforce Developers
 
RemoteLaunch Overview Presentation (2022)
RemoteLaunch Overview Presentation (2022)RemoteLaunch Overview Presentation (2022)
RemoteLaunch Overview Presentation (2022)Inflectra
 
Salesforce & GitLab Integration for Next-gen DevOps with CEPTES
Salesforce & GitLab Integration for Next-gen DevOps with CEPTESSalesforce & GitLab Integration for Next-gen DevOps with CEPTES
Salesforce & GitLab Integration for Next-gen DevOps with CEPTESCEPTES Software Inc
 
Design patterns for salesforce app decomposition
Design patterns for salesforce app decompositionDesign patterns for salesforce app decomposition
Design patterns for salesforce app decompositionSai Jithesh ☁️
 
STX Next - Scrum Development Process Overview
STX Next - Scrum Development Process OverviewSTX Next - Scrum Development Process Overview
STX Next - Scrum Development Process OverviewSTX Next
 
Agile process with a fixed cost
Agile process with a fixed costAgile process with a fixed cost
Agile process with a fixed costRalph Johnson
 
Agile conference 2013
Agile conference 2013Agile conference 2013
Agile conference 2013gbgruver
 
Continuous Delivery: why ? where to start ? how to scale ?
Continuous Delivery: why ? where to start ? how to scale ?Continuous Delivery: why ? where to start ? how to scale ?
Continuous Delivery: why ? where to start ? how to scale ?Jean-Philippe Briend
 
Automating Deployment Between Orgs Using Git & Continuous Integration
Automating Deployment Between Orgs Using Git & Continuous IntegrationAutomating Deployment Between Orgs Using Git & Continuous Integration
Automating Deployment Between Orgs Using Git & Continuous IntegrationSebastian Wagner
 

What's hot (20)

The Continuous Delivery toolstack for embedded Java af Leif Sørensen, Praqma
The Continuous Delivery toolstack for embedded Java af Leif Sørensen, PraqmaThe Continuous Delivery toolstack for embedded Java af Leif Sørensen, Praqma
The Continuous Delivery toolstack for embedded Java af Leif Sørensen, Praqma
 
Salesforce – Proven Platform Development with DevOps & Agile
Salesforce – Proven Platform Development with DevOps & AgileSalesforce – Proven Platform Development with DevOps & Agile
Salesforce – Proven Platform Development with DevOps & Agile
 
Vincent IT Inc
Vincent IT IncVincent IT Inc
Vincent IT Inc
 
CodeLive with Adam Daw - Building a mobile friendly geolocation aware candy t...
CodeLive with Adam Daw - Building a mobile friendly geolocation aware candy t...CodeLive with Adam Daw - Building a mobile friendly geolocation aware candy t...
CodeLive with Adam Daw - Building a mobile friendly geolocation aware candy t...
 
Seven Deadly Saves To Security With Integrations
Seven Deadly Saves To Security With IntegrationsSeven Deadly Saves To Security With Integrations
Seven Deadly Saves To Security With Integrations
 
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demo
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demoAgile Software Factory - Cloud Expo / DevOps Summit 2014 demo
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demo
 
5 Principles to Managing Your Application Lifecycle with SpiraTeam
5 Principles to Managing Your Application Lifecycle with SpiraTeam5 Principles to Managing Your Application Lifecycle with SpiraTeam
5 Principles to Managing Your Application Lifecycle with SpiraTeam
 
1×10 rola QA w tworzeniu Atlassian JIRA
 1×10 rola QA w tworzeniu Atlassian JIRA 1×10 rola QA w tworzeniu Atlassian JIRA
1×10 rola QA w tworzeniu Atlassian JIRA
 
Cloud load testing with Visual Studio Team Services
Cloud load testing with Visual Studio Team ServicesCloud load testing with Visual Studio Team Services
Cloud load testing with Visual Studio Team Services
 
Release Management for Large Enterprises
Release Management for Large EnterprisesRelease Management for Large Enterprises
Release Management for Large Enterprises
 
RemoteLaunch Overview Presentation (2022)
RemoteLaunch Overview Presentation (2022)RemoteLaunch Overview Presentation (2022)
RemoteLaunch Overview Presentation (2022)
 
Salesforce & GitLab Integration for Next-gen DevOps with CEPTES
Salesforce & GitLab Integration for Next-gen DevOps with CEPTESSalesforce & GitLab Integration for Next-gen DevOps with CEPTES
Salesforce & GitLab Integration for Next-gen DevOps with CEPTES
 
Design patterns for salesforce app decomposition
Design patterns for salesforce app decompositionDesign patterns for salesforce app decomposition
Design patterns for salesforce app decomposition
 
STX Next - Scrum Development Process Overview
STX Next - Scrum Development Process OverviewSTX Next - Scrum Development Process Overview
STX Next - Scrum Development Process Overview
 
Agile process with a fixed cost
Agile process with a fixed costAgile process with a fixed cost
Agile process with a fixed cost
 
Agile conference 2013
Agile conference 2013Agile conference 2013
Agile conference 2013
 
Four Keys to Efficient DevOps
Four Keys to Efficient DevOpsFour Keys to Efficient DevOps
Four Keys to Efficient DevOps
 
Continuous Delivery: why ? where to start ? how to scale ?
Continuous Delivery: why ? where to start ? how to scale ?Continuous Delivery: why ? where to start ? how to scale ?
Continuous Delivery: why ? where to start ? how to scale ?
 
Automating Deployment Between Orgs Using Git & Continuous Integration
Automating Deployment Between Orgs Using Git & Continuous IntegrationAutomating Deployment Between Orgs Using Git & Continuous Integration
Automating Deployment Between Orgs Using Git & Continuous Integration
 
Demystifying Devops - Uday kumar
Demystifying Devops - Uday kumarDemystifying Devops - Uday kumar
Demystifying Devops - Uday kumar
 

Similar to San Francisco Jenkins Area Meetup October 2016: Self-service secure test and release pipelines

DevOps in Salesforce AppCloud
DevOps in Salesforce AppCloudDevOps in Salesforce AppCloud
DevOps in Salesforce AppCloudrsg00usa
 
Preview: Local Development for Lightning Web Components
Preview: Local Development for Lightning Web ComponentsPreview: Local Development for Lightning Web Components
Preview: Local Development for Lightning Web ComponentsDeveloper Force
 
Meet The Welkin Suite IDE: Product Overview
Meet The Welkin Suite IDE: Product OverviewMeet The Welkin Suite IDE: Product Overview
Meet The Welkin Suite IDE: Product OverviewSalesforce Developers
 
Salesforce DX Pilot Product Overview
Salesforce DX Pilot Product OverviewSalesforce DX Pilot Product Overview
Salesforce DX Pilot Product OverviewSalesforce Partners
 
Utilizing SVN Jenkins to Manage Multi-line Development to Deployments
Utilizing SVN  Jenkins to Manage Multi-line Development to DeploymentsUtilizing SVN  Jenkins to Manage Multi-line Development to Deployments
Utilizing SVN Jenkins to Manage Multi-line Development to DeploymentsTeresa Garcia-Bovenmyer ☁
 
Srecon18americas lightning talk: Auto-Cascading Security Updates Through Dock...
Srecon18americas lightning talk: Auto-Cascading Security Updates Through Dock...Srecon18americas lightning talk: Auto-Cascading Security Updates Through Dock...
Srecon18americas lightning talk: Auto-Cascading Security Updates Through Dock...Andrey Falko
 
Test Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and MochaTest Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and MochaSalesforce Developers
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and TestingSalesforce Developers
 
PhillyForce 2018 - Salesforce Platform Keynote
PhillyForce 2018  - Salesforce Platform KeynotePhillyForce 2018  - Salesforce Platform Keynote
PhillyForce 2018 - Salesforce Platform Keynoteandyinthecloud
 
Building einstein analytics apps uk-compressed
Building einstein analytics apps   uk-compressedBuilding einstein analytics apps   uk-compressed
Building einstein analytics apps uk-compressedrikkehovgaard
 
Sandboxes: The Future of App Development by Evan Barnet & Pam Barnet
Sandboxes: The Future of App Development by Evan Barnet & Pam BarnetSandboxes: The Future of App Development by Evan Barnet & Pam Barnet
Sandboxes: The Future of App Development by Evan Barnet & Pam BarnetSalesforce Admins
 
Puppet Camp San Francisco 2015: Puppet Adoption in a Mature Environment
Puppet Camp San Francisco 2015: Puppet Adoption in a Mature EnvironmentPuppet Camp San Francisco 2015: Puppet Adoption in a Mature Environment
Puppet Camp San Francisco 2015: Puppet Adoption in a Mature EnvironmentPuppet
 
Lightning Developer Experience, Eclipse IDE Evolved
Lightning Developer Experience, Eclipse IDE EvolvedLightning Developer Experience, Eclipse IDE Evolved
Lightning Developer Experience, Eclipse IDE EvolvedSalesforce Developers
 
How Developers and Quality Engineer Collaborate at Salesforce
How Developers and Quality Engineer Collaborate at SalesforceHow Developers and Quality Engineer Collaborate at Salesforce
How Developers and Quality Engineer Collaborate at SalesforceSalesforce Engineering
 
Mds cloud saturday 2015 how to heroku
Mds cloud saturday 2015 how to herokuMds cloud saturday 2015 how to heroku
Mds cloud saturday 2015 how to herokuDavid Scruggs
 
Introducing the Welkin Suite IDE for Salesforce
Introducing the Welkin Suite IDE for SalesforceIntroducing the Welkin Suite IDE for Salesforce
Introducing the Welkin Suite IDE for SalesforceSalesforce Developers
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionSalesforce Developers
 

Similar to San Francisco Jenkins Area Meetup October 2016: Self-service secure test and release pipelines (20)

DevOps in Salesforce AppCloud
DevOps in Salesforce AppCloudDevOps in Salesforce AppCloud
DevOps in Salesforce AppCloud
 
Preview: Local Development for Lightning Web Components
Preview: Local Development for Lightning Web ComponentsPreview: Local Development for Lightning Web Components
Preview: Local Development for Lightning Web Components
 
Meet The Welkin Suite IDE: Product Overview
Meet The Welkin Suite IDE: Product OverviewMeet The Welkin Suite IDE: Product Overview
Meet The Welkin Suite IDE: Product Overview
 
Salesforce DX Pilot Product Overview
Salesforce DX Pilot Product OverviewSalesforce DX Pilot Product Overview
Salesforce DX Pilot Product Overview
 
Utilizing SVN Jenkins to Manage Multi-line Development to Deployments
Utilizing SVN  Jenkins to Manage Multi-line Development to DeploymentsUtilizing SVN  Jenkins to Manage Multi-line Development to Deployments
Utilizing SVN Jenkins to Manage Multi-line Development to Deployments
 
Srecon18americas lightning talk: Auto-Cascading Security Updates Through Dock...
Srecon18americas lightning talk: Auto-Cascading Security Updates Through Dock...Srecon18americas lightning talk: Auto-Cascading Security Updates Through Dock...
Srecon18americas lightning talk: Auto-Cascading Security Updates Through Dock...
 
Test Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and MochaTest Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and Mocha
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and Testing
 
PhillyForce 2018 - Salesforce Platform Keynote
PhillyForce 2018  - Salesforce Platform KeynotePhillyForce 2018  - Salesforce Platform Keynote
PhillyForce 2018 - Salesforce Platform Keynote
 
Building einstein analytics apps uk-compressed
Building einstein analytics apps   uk-compressedBuilding einstein analytics apps   uk-compressed
Building einstein analytics apps uk-compressed
 
Sandboxes: The Future of App Development by Evan Barnet & Pam Barnet
Sandboxes: The Future of App Development by Evan Barnet & Pam BarnetSandboxes: The Future of App Development by Evan Barnet & Pam Barnet
Sandboxes: The Future of App Development by Evan Barnet & Pam Barnet
 
Dev ops.enterprise.2014 (1)
Dev ops.enterprise.2014 (1)Dev ops.enterprise.2014 (1)
Dev ops.enterprise.2014 (1)
 
Puppet Camp San Francisco 2015: Puppet Adoption in a Mature Environment
Puppet Camp San Francisco 2015: Puppet Adoption in a Mature EnvironmentPuppet Camp San Francisco 2015: Puppet Adoption in a Mature Environment
Puppet Camp San Francisco 2015: Puppet Adoption in a Mature Environment
 
Coding in the App Cloud
Coding in the App CloudCoding in the App Cloud
Coding in the App Cloud
 
Lightning Developer Experience, Eclipse IDE Evolved
Lightning Developer Experience, Eclipse IDE EvolvedLightning Developer Experience, Eclipse IDE Evolved
Lightning Developer Experience, Eclipse IDE Evolved
 
How Developers and Quality Engineer Collaborate at Salesforce
How Developers and Quality Engineer Collaborate at SalesforceHow Developers and Quality Engineer Collaborate at Salesforce
How Developers and Quality Engineer Collaborate at Salesforce
 
Mds cloud saturday 2015 how to heroku
Mds cloud saturday 2015 how to herokuMds cloud saturday 2015 how to heroku
Mds cloud saturday 2015 how to heroku
 
Introducing the Welkin Suite IDE for Salesforce
Introducing the Welkin Suite IDE for SalesforceIntroducing the Welkin Suite IDE for Salesforce
Introducing the Welkin Suite IDE for Salesforce
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An Introduction
 
Development Best Practices
Development Best PracticesDevelopment Best Practices
Development Best Practices
 

Recently uploaded

SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 

Recently uploaded (20)

SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 

San Francisco Jenkins Area Meetup October 2016: Self-service secure test and release pipelines

  • 1. Self-Service Secure Test and Release Pipelines Andrey Falko - Lead Engineer - Diagnostics, Visibility, and Analytics Cloud afalko@salesforce.com Our journey to get Jenkins to deploy and deliver software to production
  • 2. Forward-Looking Statements Statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
  • 3. Outline Once Upon A Time… From Guilds to a Factory Pipeline Phases Happily Ever After? Presentation Content
  • 4. Once Upon A Time... ● One App ● No public cloud Imagine being a startup in 1999
  • 5. Once Upon A Time... ● Customer data ○ Lives and livelihoods depend on it! ● Need ○ Secure chain of trust ■ Release process from source control to production (CI/CD) ■ Test and release pipelines (TNRP) With success comes great responsibility VCS Test and Package Package Store Customer Data
  • 6. Once Upon A Time... ● 400+ developers ● App and Platform ● CI and CD mature: ○ Automation ○ Two-man rule ○ Java, java, and more java! Fast forward a decade: 2009
  • 7. Once Upon A Time... ● 25 Acquisitions ● Countless apps and infrastructures ● Infrastructure gets complicated Fast forward five years: 2014
  • 8. Once Upon A Time... ● One of many clouds under infrastructure ● Platforms for Monitoring and Alerting ● Lots of software components ○ Some open source, some not, most somewhere in between ○ Java, Scala, Python, Go, Ruby, Erlang… ○ Ant, Maven, Gradle, Make, Rake, Tox Formation of Diagnostics, Visibility, and Analytics (DVA) Cloud
  • 9. Once Upon A Time... ● Same release requirements ○ Everything going into any datacenter must follow two-man rule and other compliance rules! ● Mature process? ○ It was complicated... Guess how we coped?
  • 10. Once Upon A Time... ● Jenkins was widely used ○ Fifty software packages shipped ○ Three different installations ○ Inconsistent authentication and authorization setups ○ Inconsistent release process enforcement ○ Lovingly hand-crafted FreeStyle jobs The Strata team formed! Security Compliance Deliver Features Service Ownership
  • 11. Outline Once Upon A Time… From Guilds to a Factory Pipeline Phases Happily Ever After? Presentation Content
  • 12. From Guilds To Factory Solution ● Generate Jenkins jobs for developers ○ Engineers-only CRUD per team ○ Test and Release Pipelines ○ Parameterized Jenkins build jobs ■ See DEMO
  • 13. From Guilds To Factory ● Regardless of language, project, to tools: ○ How do I unit test? ○ How do I package? ○ How do I integration test my components? ○ What defines my application health? ○ Is my application stateful or stateless? ○ Where do I deploy first? ○ How large is the footprint and where? Developers have to do all these things
  • 14. CI: Big Picture Our Continuous Integration Flow Git Master Branch Unit Tests Create Package Integration Tests Promote To Production Git Branch Unit Tests Create Package Integration Tests Code Review
  • 15. Continuous Deployment Completing the feedback loop Back to developer for fixes Production Tests Production Deployments Production Tests Rollback Deployment Monitoring System Canary Deployments Jenkins
  • 16. Outline Once Upon A Time… From Guilds to a Factory Pipeline Phases Happily Ever After? Presentation Content
  • 17. Unit Testing and Static Analysis ● User input ○ Unit test command(s) ○ Docker image to use for unit test commands ■ Create pipeline for new docker image ■ Automated static analysis via SonarQube ■ Never give access to Docker daemon How do I test?
  • 18. Packaging ● Had to support multiple packaging formats ○ RPM, TAR, JAR, Docker ● RPM and TAR also allow users to package Docker ○ Provide a better future ○ Make legacy components more testable ● CI system controls package signing ○ Sign on separate physical machines Package what you test, test what you package
  • 19. Integration Testing ● Declare how components are wired together ○ See EXAMPLE ● Users create integration test that is run from a container and executed in docker-compose.yaml ○ Output JUNIT formatted test result info to Jenkins Test what you ship, ship what you test Deployment Declaration Pipeline diagram by Lauren Padia
  • 20. Integration Testing ● Integration test failures difficult to troubleshoot ○ Only change one component at a time ○ Slow ■ Force containerization ■ Limit quantity of tests ■ Large footprints Overcome the pitfalls
  • 21. Delivery To Production Master Docker Registry R&D DMZ Notary Master Trusted TNRP PROD Mirrored Registry Servers Pull Validate Push Pull Pull Sign Release Engineer presses release buttons Data flow VCS
  • 22. Delivery To Production ● Fail if “FROM” contains non-approved image ● Trigger pipeline runs when parent image updated ○ Dockerfile Image Update tool ○ See DEMO Overcome Docker pitfalls
  • 23. Monitoring in Production ● Monitoring Driven Deployments ○ Deploy if in good state ● Time Series Metrics and Alerts ○ Continuously test ■ Why not use those integration tests? ■ Think like a customer ○ Application metrics ○ System metrics ■ CPU, Memory, Disk I/O, etc. From TDD to MDD
  • 24. Outline Once Upon A Time… From Guilds to a Factory Pipeline Phases Happily Ever After? Presentation Content
  • 25. Happily Ever After? ● 150 pipelines ● 50 pipelines runs per day ● 80 developers ● Current challenges: ○ Feedback to Jenkins on deployments in production ○ Better Jenkins agent support ○ Pipeline declaration in VCS Fast-forward to today
  • 26. Happily Ever After? ● Use Pipeline Multibranch and Github Organization plugins: ○ Don’t allow users full use of the DSL ○ Represent the same fields we have, but in “Stratafile” in VCS ● Never run a single job on master ○ Start with agents from day 1 If we were to start again today
  • 27. Happily Ever After? ● Jenkins feature wishlist ○ User-controlled credentials for integration tests ○ AWS/Openstack plugins ■ Spin up containers for Jenkins on VMs ■ Autoscale ● Swarm or dynaslave plugins don’t fully fit our needs Still not automated out of a job...
  • 28. Takeaways ● Limit access to critical systems ● No Freestyle Jobs ● Split your agents by security boundaries ● Integrate Jenkins with your monitoring systems
  • 29. Acknowledgements ● Project contributors ○ Nari Mulakala ○ Jinesh Doshi ○ Nelson Wolf ○ Justin Harringa ○ Min Ho Park ● Project management ○ Vaishali Nandal ○ Fergus Sullivan ● Chief Beard Officer ○ Ian Varley ● Doc Writer ○ Lauren Padia ● Security Reviewer ○ Travis Emmert