SlideShare a Scribd company logo
Containerized Build
BUILDING YOUR CODE USING CONTAINERS….AND SOME SCRIPTS
HO PENG FOONG
Build
Steps
Compiler
Code
Quality
tools
Testing
Tools
Package
Manager
Other
Tools
How a build looks like now (usually)
Environmental
Dependencies
How a build looks like now (usually)
How a build looks like now (usually)
Build
Steps
Compiler
Code
Quality
tools
Testing
Tools
Package
Manager
Other
Tools
Build
Steps
Compiler
Code
Quality
tools
Testing
Tools
Package
Manager
Other
Tools
Build
Steps
Compiler
Code
Quality
tools
Testing
Tools
Package
Manager
Other
Tools
Build
Script
Compiler
Code
Quality
tools
Testing
Tools
Package
Manager
Other
Tools
How a build looks like with build scripts
Build
Script
Compiler
Code
Quality
tools
Testing
Tools
Package
Manager
Other
Tools
Build
Script
Compiler
Code
Quality
tools
Testing
Tools
Package
Manager
Other
Tools
Build
Script
Compiler
Code
Quality
tools
Testing
Tools
Package
Manager
Other
Tools
How a build looks like with build scripts
Build
Script
Compiler
Code
Quality
tools
Testing
Tools
Package
Manager
Other
Tools
How containerized build looks like
Advantages of containerized build
◦ Repeatable builds
◦ Less of “build works on my machine” scenarios
◦ Environment is versioned controlled. Can go back in time to build older versions.
◦ Faster ramp up for new team members.
◦ Can ask new team members to code with only Notepad & Docker 😎
◦ Simplify IT infrastructure work. Less variants of build agents.
◦ Portability
Build
Script
Compiler
Code
Quality
tools
Testing
Tools
Package
Manager
Other
Tools
Build
Script
Compiler
Code
Quality
tools
Testing
Tools
Package
Manager
Other
Tools
Build
Script
Compiler
Code
Quality
tools
Testing
Tools
Package
Manager
Other
Tools
How containerized build looks like
What’s needed
Docker multi stage build
Docker cache
Sending build context to Docker daemon 2.491MB
Step 1/28 : FROM microsoft/dotnet:2.1.6-aspnetcore-runtime-stretch-slim AS base
---> ea22d9662fa7
Step 2/28 : WORKDIR /app
---> Using cache
---> 526306fb506d
Step 3/28 : EXPOSE 80
---> Using cache
---> ead27daa8400
Docker cache can dramatically improve your build speed 
Demo
Other steps that you might need
◦ Pushing to nuget => dotnet nuget push
◦ Pushing docker image to repository => docker push
◦ Building in Windows => create a powershell script
Common Gotchas
◦ Line endings (CRLF vs LF) with ps1 and sh files.
◦ ALWAYS use LF 
◦ Set ps1 and sh files to have LF ending in .gitattributes
◦ Case sensitivity in Linux
◦ Linux & Windows path when using Windows Subsystem for Linux
(WSL)
◦ wslpath and WSLENV
Key takeaway
◦ If you’re not building using build scripts, consider using them
◦ If you’re building build script and want to take things further, take a look at containerized build 
The End
HO PENG FOONG
pengfoong@gmail.com

More Related Content

ODP
Test Automation Framework using Cucumber BDD overview (part 1)
PPTX
What Is Cucumber?
PDF
BDD in PHP - Behat
PDF
BDD & Cucumber
PDF
Why continuous deployment keeps on giving
PPTX
Hands on BDD with cucumber - Agile Goa Sept 2013
PPTX
Automation test framework with cucumber – BDD
PPTX
Php[tek] 2016 - BDD with Behat for Beginners
Test Automation Framework using Cucumber BDD overview (part 1)
What Is Cucumber?
BDD in PHP - Behat
BDD & Cucumber
Why continuous deployment keeps on giving
Hands on BDD with cucumber - Agile Goa Sept 2013
Automation test framework with cucumber – BDD
Php[tek] 2016 - BDD with Behat for Beginners

What's hot (20)

PPTX
Cucumber Tool
PPTX
Behat - human-readable automated testing
ODP
BDD with Behat
PPTX
Bdd and Behat
ODP
BDD with Cucumber
PDF
BDD with the Cucumber
PPTX
Testing With OutSystems
PPTX
Gozengo sauce presentation
PDF
Why and how to keep your code quality
PPTX
Testing with cucumber testing framework
PPTX
Docker and Selenoid - Make Autotests Great Again
PPTX
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...
PDF
DevQA: make your testers happier with Groovy, Spock and Geb
KEY
Hudson Continuous Integration for PHP
PDF
Letter to a Junior Developer: The Engineering Side of Programming
PPTX
Building Massive AngularJS Apps
KEY
Continuous Integration In A PHP World
PPTX
How to Write UI Automated Tests
KEY
Javascript Tests with Jasmine for Front-end Devs
PDF
Detangling Your JavaScript
Cucumber Tool
Behat - human-readable automated testing
BDD with Behat
Bdd and Behat
BDD with Cucumber
BDD with the Cucumber
Testing With OutSystems
Gozengo sauce presentation
Why and how to keep your code quality
Testing with cucumber testing framework
Docker and Selenoid - Make Autotests Great Again
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...
DevQA: make your testers happier with Groovy, Spock and Geb
Hudson Continuous Integration for PHP
Letter to a Junior Developer: The Engineering Side of Programming
Building Massive AngularJS Apps
Continuous Integration In A PHP World
How to Write UI Automated Tests
Javascript Tests with Jasmine for Front-end Devs
Detangling Your JavaScript
Ad

Similar to Containerized build (20)

PDF
codEnforcer 2013
PDF
Coding Together - A Dev Workflow
PPTX
Creating a reasonable project boilerplate
PDF
Unit Testing in JavaScript
PPTX
Software Quality via Unit Testing
PDF
Continuous Integration 101
PDF
Continuous integration and delivery for java based web applications
PDF
DevOps in an Embedded World
PDF
Code Quality Assurance v4 (2013)
PPTX
You cant be agile if your code sucks
PDF
Continuous integration & Continuous Delivery @DeVz
PDF
Java Tool Mastery Streamlining Application Development || Strawberry InfoTech
PPTX
TDD - Seriously, try it! (updated '22)
PDF
Deliberate Practice (Agile Slovenia 2015)
PDF
IDE and Toolset For Magento Development
PPTX
“One man” development process model
PDF
Software Testing Basic Concepts
PDF
Test Driven Development with PHP
PDF
Developer Productivity Engineering with Gradle
codEnforcer 2013
Coding Together - A Dev Workflow
Creating a reasonable project boilerplate
Unit Testing in JavaScript
Software Quality via Unit Testing
Continuous Integration 101
Continuous integration and delivery for java based web applications
DevOps in an Embedded World
Code Quality Assurance v4 (2013)
You cant be agile if your code sucks
Continuous integration & Continuous Delivery @DeVz
Java Tool Mastery Streamlining Application Development || Strawberry InfoTech
TDD - Seriously, try it! (updated '22)
Deliberate Practice (Agile Slovenia 2015)
IDE and Toolset For Magento Development
“One man” development process model
Software Testing Basic Concepts
Test Driven Development with PHP
Developer Productivity Engineering with Gradle
Ad

Recently uploaded (20)

PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPTX
Odoo POS Development Services by CandidRoot Solutions
PPTX
ai tools demonstartion for schools and inter college
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
L1 - Introduction to python Backend.pptx
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Complete React Javascript Course Syllabus.pdf
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
medical staffing services at VALiNTRY
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
Transform Your Business with a Software ERP System
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Softaken Excel to vCard Converter Software.pdf
PPTX
Online Work Permit System for Fast Permit Processing
PDF
System and Network Administration Chapter 2
PPTX
ISO 45001 Occupational Health and Safety Management System
PDF
System and Network Administraation Chapter 3
How to Choose the Right IT Partner for Your Business in Malaysia
Odoo POS Development Services by CandidRoot Solutions
ai tools demonstartion for schools and inter college
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
L1 - Introduction to python Backend.pptx
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Operating system designcfffgfgggggggvggggggggg
Complete React Javascript Course Syllabus.pdf
PTS Company Brochure 2025 (1).pdf.......
medical staffing services at VALiNTRY
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Upgrade and Innovation Strategies for SAP ERP Customers
Transform Your Business with a Software ERP System
Which alternative to Crystal Reports is best for small or large businesses.pdf
Softaken Excel to vCard Converter Software.pdf
Online Work Permit System for Fast Permit Processing
System and Network Administration Chapter 2
ISO 45001 Occupational Health and Safety Management System
System and Network Administraation Chapter 3

Containerized build

Editor's Notes

  • #3: No version control for “build steps” (when not using pipelines.yaml)
  • #5: Need someone to configure the build server Hard to debug when something goes wrong in build server, cannot reproduce easily Tough on newcomers
  • #9: How long does it take for a new developer to setup their machine? Have you been in a situation where nobody remembers/knows how to configure the build server? Or when you need to keep certain versions of Visual Studio around? Or when something was upgraded and build breaks?