SlideShare a Scribd company logo
Jenkins World Tour 2015
London, UK, June 2015
1
#jenkinsconf
A Reproducible Build
Environment with Jenkins
Robert Fach, TechniSat Digital GmbH
2
#jenkinsconf
Footer
Agenda
•  Some words about me
•  Some words about TechniSat
•  What is binary code reproducibility?
•  Why do we need it?
•  Why is it so difficult to achieve?
•  Reproducible Build System
•  Questions?
#jenkinsconf
Footer
Some words about me
•  Degree in computer science
•  Research background in H/A, Scalability, Big Data
•  Today Software Integrator, DevOps and Systems
Engineer at TechniSat
•  Contributing to Salt Stack + Salt Cookbook Reviewer
•  High technical affinity
–  was contributing in 3D printing area
–  currently building fpv drones
#jenkinsconf
Footer
Some words about TechniSat
•  TechniSat group develops and produces consumer and information
technology products
•  Founded in 1987, today locations in Germany, Hungary, Poland, USA, China
•  In-House hardware & software development and production
•  Tier-1 supplier for well known car manufacturers
•  Solutions for navigation, tuners, telematics systems
#jenkinsconf
Footer
Some words about TechniSat
•  Develop digital receivers and digital television receivers
•  Develop customer-specific OEM concepts for electronics and automotive
industry
Technisat Digital GmbH Dresden
Research & Development
#jenkinsconf
Footer
What is binary reproducibility?
•  Same “inputs” produce same binary outputs!
–  today, tomorrow, next month, in 15 years
–  Difficulty: Identify & reproduce everything which has
influence on the output
Sources
(C,C+
+,Java,
…)
Target
BinaryTransform
Compiler,
Scripts, …
#jenkinsconf
Footer
Why do we need it?
•  Customer requests a limited change in a software for a specific software
release
•  Software bugfixes
•  Reduce or avoid side effects in build environment
•  Toolchain & build system validation
•  Achieve a new level of trust to our customers (changes are proof-able)
•  Independent verification of binaries
•  Validation of cross-builds vs. native builds
•  Finding bugs in software modules
•  Good for automotive spice (e.g., for tracking of changes/requirements)
#jenkinsconf
Footer
Why do we need it?
Release XY Release XYZ
Rebuild
with
changes
#jenkinsconf
Footer
Why is it so difficult to achieve?
Sources
(C,C+
+,Java,
…)
Target
BinaryTransform
Compiler,
Scripts, …
#jenkinsconf
Footer
Why is it so difficult to achieve?
Sources
(C,C+
+,Java,
…)
Target
BinaryTransform
Compiler,
Scripts, …
Stable
Sources
SVN,GIT
#jenkinsconf
Footer
Why is it so difficult to achieve?
Sources
(C,C+
+,Java,
…)
Target
BinaryTransform
Compiler,
Scripts, …
Stable
Sources
SVN,GIT
Version
Issues
#jenkinsconf
Footer
Why is it so difficult to achieve?
Sources
(C,C+
+,Java,
…)
Target
BinaryTransform
Compiler,
Scripts, …
Stable
Sources
SVN,GIT
Version
Issues
Operating System
Filesystem
Issues
#jenkinsconf
Footer
Why is it so difficult to achieve?
Sources
(C,C+
+,Java,
…)
Target
BinaryTransform
Compiler,
Scripts, …
Stable
Sources
SVN,GIT
Version
Issues
Operating System
Filesystem
Issues
#jenkinsconf
Footer
Why is it so difficult to achieve?
Sources
(C,C+
+,Java,
…)
Target
BinaryTransform
Compiler,
Scripts, …
Stable
Sources
Stable
Compiler
& Scripts
Random
Decisions
SVN,GIT
Version
Issues
Operating System
Filesystem
Issues
Sorting
Issues
#jenkinsconf
Footer
Why is it so difficult to achieve?
Sources
(C,C+
+,Java,
…)
Target
BinaryTransform
Compiler,
Scripts, …
Stable
Sources
Stable
Compiler
& Scripts
Random
Decisions
SVN,GIT
Version
Issues
Operating System
Filesystem
Issues
Encoding
Issues
Date & Time
Issues
Random
Values,
UUIDs
Sorting
Issues
#jenkinsconf
Footer
Why is it so difficult to achieve?
•  Workspace paths compiled into the binary
•  Random compiler decisions for optimizations, for namespace mangling etc.
–  frandom-seed
•  Timestamps, UUIDs in object files and libraries
–  deterministic mode
•  Timestamps, dates generated by macros (__DATE__, __TIME__,
__TIMESTAMP__)
–  Faketime/libfaketime (submillis not covered)
–  Overriding these macros with defined value
•  File processing order depends on inode ordering
•  Locales can have influence on sorting order
#jenkinsconf
Footer
Why is it so difficult to achieve?
•  Dealing with complexity & scale
–  Multiple integration stages
–  Modular software
–  Load distribution (virtualization & build slaves)
#jenkinsconf
Footer
Why is it so difficult to achieve?
•  Dealing with complexity & scale
–  Multiple integration stages
–  Modular software
–  Load distribution (virtualization & build slaves)
Release
Management
extra external
dependencies
#jenkinsconf
Footer
Why is it so difficult to achieve?
Sources
(C,C+
+,Java,
…)
Target
BinaryTransform
Compiler,
Scripts, …
Sources
&
Binaries
Target
BinaryTransform
Compiler,
Scripts
Sources
&
Binaries
Sources
&
Binaries
Sources
&
Binaries
Stage 0
Stage >0
SVN,GIT
Artefact
Repository
#jenkinsconf
Footer
Why is it so difficult to achieve?
Sources
(C,C+
+,Java,
…)
Target
BinaryTransform
Compiler,
Scripts, …
Sources
&
Binaries
Target
BinaryTransform
Compiler,
Scripts
Sources
&
Binaries
Sources
&
Binaries
Sources
&
Binaries
Stage 0
Stage >0
SVN,GIT
Artefact
Repository
Artefact & Dependency
Management
#jenkinsconf
Footer
Reproducible Build System
Release
Manager
Release Mgmt
System
Release XY
Software
Container
Module
M1
Library
L1
Library
L2
Library
L3
Library
L4
Module
M2
Module
M2
specify
defines
Software Release
Configuration
#jenkinsconf
Footer
Reproducible Build System
Release XY
Jenkins Job
source references
script references
parameters, etc.
Jenkins Job
source references
script references
parameters, etc.
Jenkins Job
source references
script references
parameters, etc.
Jenkins Job
source references
script references
parameters, etc.
Release Mgmt
System
SCM (SVN,GIT)
Artefact
Repository
define
map
#jenkinsconf
Footer
Reproducible Build System
Jenkins Job
source references
script references
parameters, etc.
Jenkins Job
source references
script references
parameters, etc.
Jenkins Job
source references
script references
parameters, etc.
Jenkins Job
source references
script references
parameters, etc.
Release XY Infrastructure
Jenkins Master XY
Jenkins Slave XY
Jenkins Slave XY
Jenkins Slave XY
Release Mgmt
System
map
#jenkinsconf
Footer
Reproducible Build System
Release XYZ Infrastructure
Salt(manageseverything)
KVM Host
KVM Cluster (libvirt, OpenStack planned)
KVM Host … KVM Host
Release Mgmt
System
SCM
Artefact
Repository
DNS
Q/A Systems
Jenkins Master XY
Jenkins Slave XY
Jenkins Slave XY
Jenkins Slave XY
Release XY Infrastructure
Jenkins Master XY
Jenkins Slave XY
Jenkins Slave XY
Jenkins Slave XY
#jenkinsconf
Footer
Reproducible Build System
•  Each release is built in a new bootstrapped vm infrastructure completely
described by SALT and Release Mgmt system
•  Archive complete infrastructure including os, tools, jenkins, etc.
•  Restore or recreate systems from specification or backup) for rebuild (1st, 2nd
and 3rd LOD)
•  Infrastructure Bootstrapping
–  node spec. + Salt conf. + release spec. defines release infrastructure
–  images connect to salt cm to finalize bootstrap according their tasks
–  jenkins instance is a “clone” from release predecessor
–  Release Jenkins jobs include a “copy” of the job history of predecessor
•  Finally map release configuration to Jenkins jobs
#jenkinsconf
Footer
Reproducible Build System
•  Optimizing VM Performance
–  Use tmpfs inside VMs for fast random I/O filesystems
–  Try to use nfs read-only cache for saving network
bandwidth
–  Put Jenkins workspace on a dedicated lvm volume on
the host instead of on a filesystem based disk
–  Kvm Optimizations
#jenkinsconf
Any Questions?
28

More Related Content

PPTX
How to Work Efficiently in a Hybrid Git-Perforce Environment
PPTX
[Webinar] The Frog And The Butler: CI Pipelines For Modern DevOps
PDF
Patterns and antipatterns in Docker image lifecycle as was presented at DC Do...
PDF
resume2016
PDF
TDD and Related Techniques for Non Developers (2012)
PDF
Git essentials
PDF
Concepts of Functional Programming for Java Brains (2010)
PDF
Can PL/SQL be Clean? (2013)
How to Work Efficiently in a Hybrid Git-Perforce Environment
[Webinar] The Frog And The Butler: CI Pipelines For Modern DevOps
Patterns and antipatterns in Docker image lifecycle as was presented at DC Do...
resume2016
TDD and Related Techniques for Non Developers (2012)
Git essentials
Concepts of Functional Programming for Java Brains (2010)
Can PL/SQL be Clean? (2013)

What's hot (13)

PPTX
Trunk Based Development in the Enterprise - Its Relevance and Economics
ODP
Deploying your SaaS stack OnPrem
PDF
Succesful testing-continuous-delivery-testnet
PDF
BKK16-212: What's broken on ARM64?
PDF
The Road to Continuous Delivery - JAX DevOps 2018
PDF
Trunk based development for Beginners
PDF
Porque Odeio Branches
PDF
Succesful Testing The Continuous Delivery Process
PDF
CI/CD 101
PDF
Pipeline as Code
KEY
Lean and Kanban Principles for Software Developers
PDF
Devops is a Security Requirement
DOC
Anil_Resume
Trunk Based Development in the Enterprise - Its Relevance and Economics
Deploying your SaaS stack OnPrem
Succesful testing-continuous-delivery-testnet
BKK16-212: What's broken on ARM64?
The Road to Continuous Delivery - JAX DevOps 2018
Trunk based development for Beginners
Porque Odeio Branches
Succesful Testing The Continuous Delivery Process
CI/CD 101
Pipeline as Code
Lean and Kanban Principles for Software Developers
Devops is a Security Requirement
Anil_Resume
Ad

Viewers also liked (18)

PDF
Welcome to Hybrid Cloud Innovation Tour 2016
PDF
Weclome to The Software Defined Society
PDF
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
PPTX
Sv jug - mar 2013 - sl
PPTX
Getting Started Developing with Platform as a Service
PPTX
Getting Started with Platform-as-a-Service
PDF
JUC Europe 2015: Configuration as Code: The Job DSL Plugin
PPT
Just do it!
PDF
CloudBees PaaS Presentation at Oakland JUG
PPTX
Mobile Application Testing in the Cloud - Oct 2012
PDF
Jenkins Enterprise by CloudBees Webinar
PDF
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
PDF
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
PDF
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
PDF
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
PPT
Managing Software from Development to Deployment in the Cloud
PDF
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
PPTX
Automated Testing and Continuous Deployment for Mobile Apps with Jenkins
Welcome to Hybrid Cloud Innovation Tour 2016
Weclome to The Software Defined Society
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
Sv jug - mar 2013 - sl
Getting Started Developing with Platform as a Service
Getting Started with Platform-as-a-Service
JUC Europe 2015: Configuration as Code: The Job DSL Plugin
Just do it!
CloudBees PaaS Presentation at Oakland JUG
Mobile Application Testing in the Cloud - Oct 2012
Jenkins Enterprise by CloudBees Webinar
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
Managing Software from Development to Deployment in the Cloud
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
Automated Testing and Continuous Deployment for Mobile Apps with Jenkins
Ad

Similar to JUC Europe 2015: A Reproducible Build Environment with Jenkins (20)

PDF
Juc boston2014.pptx
PDF
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
PPTX
Going literate in Amadeus JUC Berlin June 25th 2014
PDF
From Virtual Machines to Containers
PDF
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
PPSX
Enabling Continuous Delivery For Major Retailer using open source Jenkins
PDF
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
PDF
QA in DevOps: Transformation thru Automation via Jenkins
PDF
Pipeline as code for your infrastructure as Code
PDF
Making Enterprise-Ready Plugins - Kaj Kandler JUC West 2015
PDF
The Job DSL Plugin: Introduction & What’s New
PDF
Continuous delivery from the trenches
PDF
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
PDF
Versioning for Developers
ODP
Continuous Delivery of (y)our infrastructure.
PDF
Jenkins User Conference 2014
PDF
A Continuous Delivery Safety Net for Databases
PPTX
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
PDF
Jenkins vs. AWS CodePipeline (AWS User Group Berlin)
PPTX
Introduction to jenkins for the net developer
Juc boston2014.pptx
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
Going literate in Amadeus JUC Berlin June 25th 2014
From Virtual Machines to Containers
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
Enabling Continuous Delivery For Major Retailer using open source Jenkins
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
QA in DevOps: Transformation thru Automation via Jenkins
Pipeline as code for your infrastructure as Code
Making Enterprise-Ready Plugins - Kaj Kandler JUC West 2015
The Job DSL Plugin: Introduction & What’s New
Continuous delivery from the trenches
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
Versioning for Developers
Continuous Delivery of (y)our infrastructure.
Jenkins User Conference 2014
A Continuous Delivery Safety Net for Databases
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Jenkins vs. AWS CodePipeline (AWS User Group Berlin)
Introduction to jenkins for the net developer

More from CloudBees (19)

PDF
JUC Europe 2015: Scaling Your Jenkins Master with Docker
PDF
JUC Europe 2015: Plugin Development with Gradle and Groovy
PDF
JUC Europe 2015: Jenkins Made Easy
PDF
JUC Europe 2015: Hey! What Did We Just Release?
PDF
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
PDF
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
PDF
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
PDF
JUC Europe 2015: Evolving the Jenkins UI
PDF
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
PDF
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
PDF
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
PDF
Pimp your jenkins platform with docker - Devops.com 2015/11
PDF
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
PDF
Jenkins Workflow Webinar - Dec 10, 2014
PDF
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
PDF
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
PDF
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
PDF
Rethinking Application Design for the Cloud
PPTX
The Fall of Giants
JUC Europe 2015: Scaling Your Jenkins Master with Docker
JUC Europe 2015: Plugin Development with Gradle and Groovy
JUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
JUC Europe 2015: Evolving the Jenkins UI
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
Pimp your jenkins platform with docker - Devops.com 2015/11
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Jenkins Workflow Webinar - Dec 10, 2014
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
Rethinking Application Design for the Cloud
The Fall of Giants

Recently uploaded (20)

PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Approach and Philosophy of On baking technology
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPT
Teaching material agriculture food technology
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
Modernizing your data center with Dell and AMD
PPTX
Big Data Technologies - Introduction.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
A Presentation on Artificial Intelligence
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Encapsulation_ Review paper, used for researhc scholars
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Digital-Transformation-Roadmap-for-Companies.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Approach and Philosophy of On baking technology
Per capita expenditure prediction using model stacking based on satellite ima...
“AI and Expert System Decision Support & Business Intelligence Systems”
Teaching material agriculture food technology
NewMind AI Weekly Chronicles - August'25 Week I
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Empathic Computing: Creating Shared Understanding
Modernizing your data center with Dell and AMD
Big Data Technologies - Introduction.pptx
20250228 LYD VKU AI Blended-Learning.pptx
A Presentation on Artificial Intelligence
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Encapsulation_ Review paper, used for researhc scholars

JUC Europe 2015: A Reproducible Build Environment with Jenkins

  • 1. Jenkins World Tour 2015 London, UK, June 2015 1
  • 2. #jenkinsconf A Reproducible Build Environment with Jenkins Robert Fach, TechniSat Digital GmbH 2
  • 3. #jenkinsconf Footer Agenda •  Some words about me •  Some words about TechniSat •  What is binary code reproducibility? •  Why do we need it? •  Why is it so difficult to achieve? •  Reproducible Build System •  Questions?
  • 4. #jenkinsconf Footer Some words about me •  Degree in computer science •  Research background in H/A, Scalability, Big Data •  Today Software Integrator, DevOps and Systems Engineer at TechniSat •  Contributing to Salt Stack + Salt Cookbook Reviewer •  High technical affinity –  was contributing in 3D printing area –  currently building fpv drones
  • 5. #jenkinsconf Footer Some words about TechniSat •  TechniSat group develops and produces consumer and information technology products •  Founded in 1987, today locations in Germany, Hungary, Poland, USA, China •  In-House hardware & software development and production •  Tier-1 supplier for well known car manufacturers •  Solutions for navigation, tuners, telematics systems
  • 6. #jenkinsconf Footer Some words about TechniSat •  Develop digital receivers and digital television receivers •  Develop customer-specific OEM concepts for electronics and automotive industry Technisat Digital GmbH Dresden Research & Development
  • 7. #jenkinsconf Footer What is binary reproducibility? •  Same “inputs” produce same binary outputs! –  today, tomorrow, next month, in 15 years –  Difficulty: Identify & reproduce everything which has influence on the output Sources (C,C+ +,Java, …) Target BinaryTransform Compiler, Scripts, …
  • 8. #jenkinsconf Footer Why do we need it? •  Customer requests a limited change in a software for a specific software release •  Software bugfixes •  Reduce or avoid side effects in build environment •  Toolchain & build system validation •  Achieve a new level of trust to our customers (changes are proof-able) •  Independent verification of binaries •  Validation of cross-builds vs. native builds •  Finding bugs in software modules •  Good for automotive spice (e.g., for tracking of changes/requirements)
  • 9. #jenkinsconf Footer Why do we need it? Release XY Release XYZ Rebuild with changes
  • 10. #jenkinsconf Footer Why is it so difficult to achieve? Sources (C,C+ +,Java, …) Target BinaryTransform Compiler, Scripts, …
  • 11. #jenkinsconf Footer Why is it so difficult to achieve? Sources (C,C+ +,Java, …) Target BinaryTransform Compiler, Scripts, … Stable Sources SVN,GIT
  • 12. #jenkinsconf Footer Why is it so difficult to achieve? Sources (C,C+ +,Java, …) Target BinaryTransform Compiler, Scripts, … Stable Sources SVN,GIT Version Issues
  • 13. #jenkinsconf Footer Why is it so difficult to achieve? Sources (C,C+ +,Java, …) Target BinaryTransform Compiler, Scripts, … Stable Sources SVN,GIT Version Issues Operating System Filesystem Issues
  • 14. #jenkinsconf Footer Why is it so difficult to achieve? Sources (C,C+ +,Java, …) Target BinaryTransform Compiler, Scripts, … Stable Sources SVN,GIT Version Issues Operating System Filesystem Issues
  • 15. #jenkinsconf Footer Why is it so difficult to achieve? Sources (C,C+ +,Java, …) Target BinaryTransform Compiler, Scripts, … Stable Sources Stable Compiler & Scripts Random Decisions SVN,GIT Version Issues Operating System Filesystem Issues Sorting Issues
  • 16. #jenkinsconf Footer Why is it so difficult to achieve? Sources (C,C+ +,Java, …) Target BinaryTransform Compiler, Scripts, … Stable Sources Stable Compiler & Scripts Random Decisions SVN,GIT Version Issues Operating System Filesystem Issues Encoding Issues Date & Time Issues Random Values, UUIDs Sorting Issues
  • 17. #jenkinsconf Footer Why is it so difficult to achieve? •  Workspace paths compiled into the binary •  Random compiler decisions for optimizations, for namespace mangling etc. –  frandom-seed •  Timestamps, UUIDs in object files and libraries –  deterministic mode •  Timestamps, dates generated by macros (__DATE__, __TIME__, __TIMESTAMP__) –  Faketime/libfaketime (submillis not covered) –  Overriding these macros with defined value •  File processing order depends on inode ordering •  Locales can have influence on sorting order
  • 18. #jenkinsconf Footer Why is it so difficult to achieve? •  Dealing with complexity & scale –  Multiple integration stages –  Modular software –  Load distribution (virtualization & build slaves)
  • 19. #jenkinsconf Footer Why is it so difficult to achieve? •  Dealing with complexity & scale –  Multiple integration stages –  Modular software –  Load distribution (virtualization & build slaves) Release Management extra external dependencies
  • 20. #jenkinsconf Footer Why is it so difficult to achieve? Sources (C,C+ +,Java, …) Target BinaryTransform Compiler, Scripts, … Sources & Binaries Target BinaryTransform Compiler, Scripts Sources & Binaries Sources & Binaries Sources & Binaries Stage 0 Stage >0 SVN,GIT Artefact Repository
  • 21. #jenkinsconf Footer Why is it so difficult to achieve? Sources (C,C+ +,Java, …) Target BinaryTransform Compiler, Scripts, … Sources & Binaries Target BinaryTransform Compiler, Scripts Sources & Binaries Sources & Binaries Sources & Binaries Stage 0 Stage >0 SVN,GIT Artefact Repository Artefact & Dependency Management
  • 22. #jenkinsconf Footer Reproducible Build System Release Manager Release Mgmt System Release XY Software Container Module M1 Library L1 Library L2 Library L3 Library L4 Module M2 Module M2 specify defines Software Release Configuration
  • 23. #jenkinsconf Footer Reproducible Build System Release XY Jenkins Job source references script references parameters, etc. Jenkins Job source references script references parameters, etc. Jenkins Job source references script references parameters, etc. Jenkins Job source references script references parameters, etc. Release Mgmt System SCM (SVN,GIT) Artefact Repository define map
  • 24. #jenkinsconf Footer Reproducible Build System Jenkins Job source references script references parameters, etc. Jenkins Job source references script references parameters, etc. Jenkins Job source references script references parameters, etc. Jenkins Job source references script references parameters, etc. Release XY Infrastructure Jenkins Master XY Jenkins Slave XY Jenkins Slave XY Jenkins Slave XY Release Mgmt System map
  • 25. #jenkinsconf Footer Reproducible Build System Release XYZ Infrastructure Salt(manageseverything) KVM Host KVM Cluster (libvirt, OpenStack planned) KVM Host … KVM Host Release Mgmt System SCM Artefact Repository DNS Q/A Systems Jenkins Master XY Jenkins Slave XY Jenkins Slave XY Jenkins Slave XY Release XY Infrastructure Jenkins Master XY Jenkins Slave XY Jenkins Slave XY Jenkins Slave XY
  • 26. #jenkinsconf Footer Reproducible Build System •  Each release is built in a new bootstrapped vm infrastructure completely described by SALT and Release Mgmt system •  Archive complete infrastructure including os, tools, jenkins, etc. •  Restore or recreate systems from specification or backup) for rebuild (1st, 2nd and 3rd LOD) •  Infrastructure Bootstrapping –  node spec. + Salt conf. + release spec. defines release infrastructure –  images connect to salt cm to finalize bootstrap according their tasks –  jenkins instance is a “clone” from release predecessor –  Release Jenkins jobs include a “copy” of the job history of predecessor •  Finally map release configuration to Jenkins jobs
  • 27. #jenkinsconf Footer Reproducible Build System •  Optimizing VM Performance –  Use tmpfs inside VMs for fast random I/O filesystems –  Try to use nfs read-only cache for saving network bandwidth –  Put Jenkins workspace on a dedicated lvm volume on the host instead of on a filesystem based disk –  Kvm Optimizations