4. Motivations - What we had
python 2.7
modules
openssl
xmlsec1
manually install produces
artefact
pipeline
manually config
on CI server
agent1
agent2
agent3
devticketops
devsudo
git
server app A
server app B
server app C
6. ● minimize the need to touch
or change the CI agent
● allow self-service build
environments
Toolset
Goals:
● the build environment that
runs on developer machine
runs everywhere
● can build any version of
anything
● standardized
environment to bring
speed and quality to
the development
process
8. Motivations - What we had
python 2.7
modules
openssl
xmlsec1
manually install produces
artefact
pipeline
manually config
on CI server
agent1
agent2
agent3
devticketops
devsudo
git
server app A
server app B
server app C
9. What we envisioned
builds toolset
container
produces
artefact
pipeline
manually config
on CI server
agent1
agent2
agent3
git
servers app A
servers app B
servers app C
commit Dockerfile
on git repo
python 2.7
modules
openssl
xmlsec1
10. What we have done
builds toolset
container
produces
artefact
pipeline
manually config
on CI server
agent1
agent2
agent3
git
servers app A
servers app B
servers app C
commit Dockerfile
on git repo
15. ● costs minimized by sharing
one CI agent instance
between several teams
● not a blocker to others
anymore
Toolset
Pros:
● very small administration
overhead on the CI agent
● not limited by the linux
distro the CI agent runs on
● easy to keep local dev
and prod identical
16. ● makes troubleshooting way
more complex
Toolset
Cons:
● learning curve (new
mindset, new tools, etc.)
● now you have to use
containers for all CI jobs
● performance issues
on the agent instance
affects all the teams
17. ● pay attention to the order
of the instructions inside
your dockerfile
Toolset
Lessons learned:
● use small bash scripts for
your docker build and run
commands
● use small bash scripts to
handle environment
variables
● keep docker up to
date