SlideShare a Scribd company logo
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

PDF
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Matt Raible
 
DOCX
Secure your jenkins
Loves Cloud
 
PDF
Apache Roller, Acegi Security and Single Sign-on
Matt Raible
 
PDF
Are you ready to be hacked?
Daniel Kanchev
 
PPTX
Python in SQL 2019
Rich Benner
 
PDF
Java Web Application Security - Jazoon 2011
Matt Raible
 
PDF
Google analytics
Sean Tsai
 
PDF
I Am MongoDB – And So Can You!
MongoDB
 
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Matt Raible
 
Secure your jenkins
Loves Cloud
 
Apache Roller, Acegi Security and Single Sign-on
Matt Raible
 
Are you ready to be hacked?
Daniel Kanchev
 
Python in SQL 2019
Rich Benner
 
Java Web Application Security - Jazoon 2011
Matt Raible
 
Google analytics
Sean Tsai
 
I Am MongoDB – And So Can You!
MongoDB
 

What's hot (11)

PPT
Alicia Lyttle & Lorette Lyttle of Monetized Marketing - WordPress Wednesday –...
justcess
 
PDF
Pick a password, any password - Wicus Ross - SensePost
Harry Gunns
 
PDF
Using Docker For Testing Legacy Code
Alex Soto
 
PDF
How to fix kaspersky error 27300 - Easy Steps
Antivirus-Support-Number
 
PDF
Baekjoon Online Judge 1201번 풀이
Baekjoon Choi
 
PDF
WordPress News - March 2017
WordPress Sydney
 
PDF
Security in the Delivery Pipeline - GOTO Amsterdam 2017
James Wickett
 
PDF
Innovative usage
Jesse Noller
 
PDF
Deploy With Confidence
Alex Soto
 
PDF
20150415 Something About Meteor
Rick Wehrle
 
ODP
5 Reasons Why Maven Sux
Carlos Sanchez
 
Alicia Lyttle & Lorette Lyttle of Monetized Marketing - WordPress Wednesday –...
justcess
 
Pick a password, any password - Wicus Ross - SensePost
Harry Gunns
 
Using Docker For Testing Legacy Code
Alex Soto
 
How to fix kaspersky error 27300 - Easy Steps
Antivirus-Support-Number
 
Baekjoon Online Judge 1201번 풀이
Baekjoon Choi
 
WordPress News - March 2017
WordPress Sydney
 
Security in the Delivery Pipeline - GOTO Amsterdam 2017
James Wickett
 
Innovative usage
Jesse Noller
 
Deploy With Confidence
Alex Soto
 
20150415 Something About Meteor
Rick Wehrle
 
5 Reasons Why Maven Sux
Carlos Sanchez
 
Ad

More from Giulio Vian (20)

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

Recently uploaded (20)

DOCX
Can You Build Dashboards Using Open Source Visualization Tool.docx
Varsha Nayak
 
PDF
vAdobe Premiere Pro 2025 (v25.2.3.004) Crack Pre-Activated Latest
imang66g
 
PDF
Protecting the Digital World Cyber Securit
dnthakkar16
 
PDF
49784907924775488180_LRN2959_Data_Pump_23ai.pdf
Abilash868456
 
PPTX
classification of computer and basic part of digital computer
ravisinghrajpurohit3
 
PDF
Exploring AI Agents in Process Industries
amoreira6
 
PDF
10 posting ideas for community engagement with AI prompts
Pankaj Taneja
 
PDF
advancepresentationskillshdhdhhdhdhdhhfhf
jasmenrojas249
 
PPTX
Presentation about Database and Database Administrator
abhishekchauhan86963
 
PDF
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 
PDF
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
ESUG
 
PDF
Using licensed Data Loss Prevention (DLP) as a strategic proactive data secur...
Q-Advise
 
PPTX
Can You Build Dashboards Using Open Source Visualization Tool.pptx
Varsha Nayak
 
PPT
Activate_Methodology_Summary presentatio
annapureddyn
 
PDF
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
PPTX
Contractor Management Platform and Software Solution for Compliance
SHEQ Network Limited
 
PPTX
ConcordeApp: Engineering Global Impact & Unlocking Billions in Event ROI with AI
chastechaste14
 
PPTX
ASSIGNMENT_1[1][1][1][1][1] (1) variables.pptx
kr2589474
 
PPTX
Odoo Integration Services by Candidroot Solutions
CandidRoot Solutions Private Limited
 
PPTX
GALILEO CRS SYSTEM | GALILEO TRAVEL SOFTWARE
philipnathen82
 
Can You Build Dashboards Using Open Source Visualization Tool.docx
Varsha Nayak
 
vAdobe Premiere Pro 2025 (v25.2.3.004) Crack Pre-Activated Latest
imang66g
 
Protecting the Digital World Cyber Securit
dnthakkar16
 
49784907924775488180_LRN2959_Data_Pump_23ai.pdf
Abilash868456
 
classification of computer and basic part of digital computer
ravisinghrajpurohit3
 
Exploring AI Agents in Process Industries
amoreira6
 
10 posting ideas for community engagement with AI prompts
Pankaj Taneja
 
advancepresentationskillshdhdhhdhdhdhhfhf
jasmenrojas249
 
Presentation about Database and Database Administrator
abhishekchauhan86963
 
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
ESUG
 
Using licensed Data Loss Prevention (DLP) as a strategic proactive data secur...
Q-Advise
 
Can You Build Dashboards Using Open Source Visualization Tool.pptx
Varsha Nayak
 
Activate_Methodology_Summary presentatio
annapureddyn
 
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
Contractor Management Platform and Software Solution for Compliance
SHEQ Network Limited
 
ConcordeApp: Engineering Global Impact & Unlocking Billions in Event ROI with AI
chastechaste14
 
ASSIGNMENT_1[1][1][1][1][1] (1) variables.pptx
kr2589474
 
Odoo Integration Services by Candidroot Solutions
CandidRoot Solutions Private Limited
 
GALILEO CRS SYSTEM | GALILEO TRAVEL SOFTWARE
philipnathen82
 

Top 10 pipeline mistakes - dotnetsheff

Editor's Notes

  • #23: Le Jugement Dernier de Jean Cousin le Jeune (v. 1585), Musée du Louvre.