SlideShare a Scribd company logo
1 of 24
Top 10 pipeline mistakes
Giulio Vian — 7 July 2020
@giulio_vian
https://www.getlatestversion.eu
http://blog.casavian.eu
https://www.slideshare.net/giuliov
https://github.com/giuliov
Unsafe Secrets
Sloppy handling of
secrets
Fix: use a safe store
Security risk
Unsafe Secrets
Wrong
<add
name="DefaultConnection"
connectionString="Data
Source=*omiss*;Initial
Catalog=*omiss*;Persist
Security Info=False;User
ID=*omiss*;Password=*omiss*
"
providerName="System.Data
.SqlClient"/>
Correct
GitHub Secrets
Azure Pipelines Service
Connections
Azure Pipelines Secret Variables
Jenkins Credentials
AWS Systems Manager Parameter
Store
AWS Secrets Manager
Azure KeyVault
Untraceable
artifacts
No artifact versioning
Careless versioning
Unrelated binary and source
versions
No links to work items or
deployments
Fixes: careful versioning, link
artifacts
Untraceable
Wrong
.NET
AssemblyVersion["1.0.*"]
Maven
<version>1.0.0</version>
Correct
Add #id and/or URLs in
commits and work items
Patch AssemblyInfo.cs
Use VersionPrefix and
Version with .NET Core
Use Maven version plugin
Add version data into .ps1
.sql .xml .yaml .json
Too specific
Environment-specific
deploy packages
Fix: just stop doing,
I mean, stop it
Too specific
Wrong
React App PUBLIC_URL
Correct
Ship you package to
Artifactory, Nexus or else
Deploy the same package
to all environments (and
patch config files along the
way)
What, quality?
No testing
No quality scan
Fix: add quality checks to
your pipelines
What, quality?
Wrong Correct
linters
SonarQube
Checkmarx
GitHub
CodeQL
WhiteSource
OWASP ZAP
Atlassian
Crucible
Veracode
Fortify
…
Bleeding edge
Undeployable technology
No agents
Fix: ask and negotiate, do
not assume
Galactic build
Does too much
Takes too much
Slow feedback
Fix: split the process
Flaky builds
Same source different
binaries
Test randomly pass/fail
Loose dependencies
specifications
Fixes: reproducible builds,
drop flaky tests, pinpoint
dependencies
Deterministic Builds
.NET
<PropertyGroup>
<Deterministic>True</Deterministic>
</PropertyGroup>
msbuild /property:Deterministic=True
Java
<properties>
<project.build.outputTimestamp>2020-05-
02T08:00:00Z</project.build.outputTimestamp>
</properties>
Loose dependencies
NuGet (4.9+)
<PropertyGroup>
<RestorePackagesWithLockFile>true</RestorePackages
WithLockFile>
</PropertyGroup>
msbuild.exe /t:restore /p:RestoreLockedMode=true
dotnet.exe restore –locked-mode
Too much
of a good thing
Too much versioning
Fix: libraries ≠ deploy
packages, use SemVer in
full
Too much of a good thing
SemVer
https://semver.org/
1.0.0-dev+sha.5114f85
Maven
1.0-SNAPSHOT
Implicit
assumptions
No conditions on agent
requirements
No checks on toolchain
versions
Magic agents (e.g. tools
dropped in obscure
corners)
Fix: explicit tool checks
Implicit assumptions
Wrong
GitVersion.exe
/output buildserver
Correct
dotnet tool install
-g GitVersion.Tool
dotnet gitversion
Untamed plugins
Relying on dubious
plugins/extensions
Fix: autonomous pipelines
Best (worst?) Mistakes
1. Unsafe Secrets
2. Untraceable
3. Too specific
4. What quality?
5. Bleeding edge
6. Galactic build
7. Flaky builds
8. Too much of a good thing
9. Implicit assumptions
10. Untamed plugins
Unpardonable
No pipeline at all
References
Reproducible builds
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/deterministic-compiler-
option
https://maven.apache.org/guides/mini/guide-reproducible-builds.html
https://zlika.github.io/reproducible-build-maven-plugin/
https://reproducible-builds.org/
Pin dependencies
https://github.com/NuGet/Home/wiki/Repeatable-build-using-lock-file-implementation
https://docs.npmjs.com/configuring-npm/package-locks.html
https://docs.gradle.org/current/userguide/dependency_locking.html
http://maven.apache.org/guides/introduction/introduction-to-dependency-
mechanism.html#Dependency_Management
Flaky tests
https://docs.microsoft.com/en-us/azure/devops/pipelines/test/flaky-test-management
https://docs.gitlab.com/ee/development/testing_guide/flaky_tests.html
https://plugins.jenkins.io/flaky-test-handler/
SemVer https://semver.org/
Hardware spec:
1 KB RAM
(16KB after upgrade)
4 KB ROM
(8KB after upgrade)
First computer Past Companies Communities
Giulio Vian Senior DevOps Engineer
End of trasmissions
25

More Related Content

What's hot

Pick a password, any password - Wicus Ross - SensePost
Pick a password, any password - Wicus Ross - SensePostPick a password, any password - Wicus Ross - SensePost
Pick a password, any password - Wicus Ross - SensePost
Harry Gunns
 

What's hot (11)

Alicia Lyttle & Lorette Lyttle of Monetized Marketing - WordPress Wednesday –...
Alicia Lyttle & Lorette Lyttle of Monetized Marketing - WordPress Wednesday –...Alicia Lyttle & Lorette Lyttle of Monetized Marketing - WordPress Wednesday –...
Alicia Lyttle & Lorette Lyttle of Monetized Marketing - WordPress Wednesday –...
 
Pick a password, any password - Wicus Ross - SensePost
Pick a password, any password - Wicus Ross - SensePostPick a password, any password - Wicus Ross - SensePost
Pick a password, any password - Wicus Ross - SensePost
 
Using Docker For Testing Legacy Code
Using Docker For Testing Legacy CodeUsing Docker For Testing Legacy Code
Using Docker For Testing Legacy Code
 
How to fix kaspersky error 27300 - Easy Steps
How to fix kaspersky error 27300 - Easy StepsHow to fix kaspersky error 27300 - Easy Steps
How to fix kaspersky error 27300 - Easy Steps
 
Baekjoon Online Judge 1201번 풀이
Baekjoon Online Judge 1201번 풀이Baekjoon Online Judge 1201번 풀이
Baekjoon Online Judge 1201번 풀이
 
WordPress News - March 2017
WordPress News - March 2017WordPress News - March 2017
WordPress News - March 2017
 
Security in the Delivery Pipeline - GOTO Amsterdam 2017
Security in the Delivery Pipeline - GOTO Amsterdam 2017Security in the Delivery Pipeline - GOTO Amsterdam 2017
Security in the Delivery Pipeline - GOTO Amsterdam 2017
 
Innovative usage
Innovative usageInnovative usage
Innovative usage
 
Deploy With Confidence
Deploy With ConfidenceDeploy With Confidence
Deploy With Confidence
 
20150415 Something About Meteor
20150415 Something About Meteor20150415 Something About Meteor
20150415 Something About Meteor
 
5 Reasons Why Maven Sux
5 Reasons Why Maven Sux5 Reasons Why Maven Sux
5 Reasons Why Maven Sux
 

Similar to Top 10 pipeline mistakes - dotnetsheff

Hashitalks 2021 - How the Dynamic Duo of Vault and Puppet Tame SSL Certificates
Hashitalks 2021 - How the Dynamic Duo of Vault and Puppet Tame SSL CertificatesHashitalks 2021 - How the Dynamic Duo of Vault and Puppet Tame SSL Certificates
Hashitalks 2021 - How the Dynamic Duo of Vault and Puppet Tame SSL Certificates
Nick Maludy
 

Similar to Top 10 pipeline mistakes - dotnetsheff (20)

Test Design for Continuous Integration and Delivery (2020)
Test Design for Continuous Integration and Delivery (2020)Test Design for Continuous Integration and Delivery (2020)
Test Design for Continuous Integration and Delivery (2020)
 
Introduction to rg\injection
Introduction to rg\injectionIntroduction to rg\injection
Introduction to rg\injection
 
32916
3291632916
32916
 
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...
 
Integrating Jira Software Cloud With the AWS Code Suite
Integrating Jira Software Cloud With the AWS Code SuiteIntegrating Jira Software Cloud With the AWS Code Suite
Integrating Jira Software Cloud With the AWS Code Suite
 
Labs And Walkthroughs
Labs And WalkthroughsLabs And Walkthroughs
Labs And Walkthroughs
 
NuGet 3.0 - Transitioning from OData to JSON-LD
NuGet 3.0 - Transitioning from OData to JSON-LDNuGet 3.0 - Transitioning from OData to JSON-LD
NuGet 3.0 - Transitioning from OData to JSON-LD
 
Connection String Parameter Pollution Attacks
Connection String Parameter Pollution AttacksConnection String Parameter Pollution Attacks
Connection String Parameter Pollution Attacks
 
Hashitalks 2021 - How the Dynamic Duo of Vault and Puppet Tame SSL Certificates
Hashitalks 2021 - How the Dynamic Duo of Vault and Puppet Tame SSL CertificatesHashitalks 2021 - How the Dynamic Duo of Vault and Puppet Tame SSL Certificates
Hashitalks 2021 - How the Dynamic Duo of Vault and Puppet Tame SSL Certificates
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in Rails
 
IBM Connections Activity Stream 3rd Party Integration - Social Connect VI - P...
IBM Connections Activity Stream 3rd Party Integration - Social Connect VI - P...IBM Connections Activity Stream 3rd Party Integration - Social Connect VI - P...
IBM Connections Activity Stream 3rd Party Integration - Social Connect VI - P...
 
SharePoint Fest Chicago 2015 - Anatomy of configuring provider hosted add-in...
SharePoint Fest Chicago 2015  - Anatomy of configuring provider hosted add-in...SharePoint Fest Chicago 2015  - Anatomy of configuring provider hosted add-in...
SharePoint Fest Chicago 2015 - Anatomy of configuring provider hosted add-in...
 
Quick Start Guide using Virtuozzo 7 (β) on AWS EC2
Quick Start Guide using Virtuozzo 7 (β) on AWS EC2Quick Start Guide using Virtuozzo 7 (β) on AWS EC2
Quick Start Guide using Virtuozzo 7 (β) on AWS EC2
 
Work with data in ASP.NET
Work with data in ASP.NETWork with data in ASP.NET
Work with data in ASP.NET
 
Grails Advanced
Grails Advanced Grails Advanced
Grails Advanced
 
Behind the Code 'September 2022 // by Exness
Behind the Code 'September 2022 // by ExnessBehind the Code 'September 2022 // by Exness
Behind the Code 'September 2022 // by Exness
 
SQLSecurity.ppt
SQLSecurity.pptSQLSecurity.ppt
SQLSecurity.ppt
 
SQLSecurity.ppt
SQLSecurity.pptSQLSecurity.ppt
SQLSecurity.ppt
 
APIsecure 2023 - Securing API Credentials on GitHub.com, Jose Palafox & Natal...
APIsecure 2023 - Securing API Credentials on GitHub.com, Jose Palafox & Natal...APIsecure 2023 - Securing API Credentials on GitHub.com, Jose Palafox & Natal...
APIsecure 2023 - Securing API Credentials on GitHub.com, Jose Palafox & Natal...
 
Git & version control crash course
Git & version control crash course Git & version control crash course
Git & version control crash course
 

More from Giulio Vian

More from Giulio Vian (20)

Come implementare la governance nella vostra piattaforma e lavorare felici se...
Come implementare la governance nella vostra piattaforma e lavorare felici se...Come implementare la governance nella vostra piattaforma e lavorare felici se...
Come implementare la governance nella vostra piattaforma e lavorare felici se...
 
Is Technical Debt the right metaphor for Continuous Update?
Is Technical Debt the right metaphor for Continuous Update?Is Technical Debt the right metaphor for Continuous Update?
Is Technical Debt the right metaphor for Continuous Update?
 
Is Technical Debt the right metaphor for Continuous Update - AllDayDevOps 2022
Is Technical Debt the right metaphor for Continuous Update - AllDayDevOps 2022Is Technical Debt the right metaphor for Continuous Update - AllDayDevOps 2022
Is Technical Debt the right metaphor for Continuous Update - AllDayDevOps 2022
 
Software rotting - DevOpsCon Berlin
Software rotting - DevOpsCon BerlinSoftware rotting - DevOpsCon Berlin
Software rotting - DevOpsCon Berlin
 
Software rotting
Software rottingSoftware rotting
Software rotting
 
Software rotting - 28 Apr - DeveloperWeek Europe 2022
Software rotting - 28 Apr - DeveloperWeek Europe 2022Software rotting - 28 Apr - DeveloperWeek Europe 2022
Software rotting - 28 Apr - DeveloperWeek Europe 2022
 
L'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOpsL'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOps
 
L'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOpsL'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOps
 
A map for DevOps on Microsoft Stack - MS DevSummit
A map for DevOps on Microsoft Stack - MS DevSummitA map for DevOps on Microsoft Stack - MS DevSummit
A map for DevOps on Microsoft Stack - MS DevSummit
 
Perché è così difficile il deploy dei database - DevCast DevOps Serie
Perché è così difficile il deploy dei database  - DevCast DevOps SeriePerché è così difficile il deploy dei database  - DevCast DevOps Serie
Perché è così difficile il deploy dei database - DevCast DevOps Serie
 
Database deployments - dotnetsheff
Database deployments - dotnetsheffDatabase deployments - dotnetsheff
Database deployments - dotnetsheff
 
Database deployment: still hard after all these years - Data Saturday #1
Database deployment: still hard after all these years - Data Saturday #1Database deployment: still hard after all these years - Data Saturday #1
Database deployment: still hard after all these years - Data Saturday #1
 
Pipeline your Pipelines - 2020 All Day DevOps
Pipeline your Pipelines - 2020 All Day DevOpsPipeline your Pipelines - 2020 All Day DevOps
Pipeline your Pipelines - 2020 All Day DevOps
 
How to write cloud-agnostic Terraform code - Incontro DevOps Italia 2020
How to write cloud-agnostic Terraform code - Incontro DevOps Italia 2020How to write cloud-agnostic Terraform code - Incontro DevOps Italia 2020
How to write cloud-agnostic Terraform code - Incontro DevOps Italia 2020
 
Introduction to Terraform with Azure flavor
Introduction to Terraform with Azure flavorIntroduction to Terraform with Azure flavor
Introduction to Terraform with Azure flavor
 
How collaboration works between Dev and Ops - DevOps Agile Testing and Test S...
How collaboration works between Dev and Ops - DevOps Agile Testing and Test S...How collaboration works between Dev and Ops - DevOps Agile Testing and Test S...
How collaboration works between Dev and Ops - DevOps Agile Testing and Test S...
 
Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...
Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...
Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...
 
Pipeline your pipelines!
Pipeline your pipelines!Pipeline your pipelines!
Pipeline your pipelines!
 
Why is DevOps vital for my company’s business
Why is DevOps vital for my company’s businessWhy is DevOps vital for my company’s business
Why is DevOps vital for my company’s business
 
Introduzione a GitHub Actions (beta)
Introduzione a GitHub Actions (beta)Introduzione a GitHub Actions (beta)
Introduzione a GitHub Actions (beta)
 

Recently uploaded

%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 

Recently uploaded (20)

%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 

Top 10 pipeline mistakes - dotnetsheff

Editor's Notes

  1. Le Jugement Dernier de Jean Cousin le Jeune (v. 1585), Musée du Louvre.