Slide 1

Slide 1 text

Rethinking Package Building at Jimdo 1

Slide 2

Slide 2 text

Hello I'm Mathias Lafeldt. 2

Slide 3

Slide 3 text

I work at Jimdo 3

Slide 4

Slide 4 text

Building Debian packages isn't (always) fun 4

Slide 5

Slide 5 text

The Past 5

Slide 6

Slide 6 text

buildhost02 $ ssh buildhost02.jimdo.office $ sudo su buildmaster $ cd ~/builds $ ... do something to build package ... $ ~/scripts/regenerate_deb_repo.sh 6

Slide 7

Slide 7 text

But... Who built the package? How was it built? Why? 7

Slide 8

Slide 8 text

buildhost02 8

Slide 9

Slide 9 text

Milestone "Packaging 2.0" May 2014 9

Slide 10

Slide 10 text

Package builds Automated Documented Repeatable 10

Slide 11

Slide 11 text

A build system that anybody may use 11

Slide 12

Slide 12 text

Rebuild and redeploy all packages 12

Slide 13

Slide 13 text

Languages PHP Python Ruby Go (whatever upstream uses) 13

Slide 14

Slide 14 text

Build instructions debian/rules Makefile script.sh recipe.rb ... 14

Slide 15

Slide 15 text

The Present 15

Slide 16

Slide 16 text

Common interface $ make build publish or $ rake build publish 16

Slide 17

Slide 17 text

Old-school Makefile build: dpkg-buildpackage publish: build rsync ../*.deb $(PUBLISH_DIR) $ make build publish PUBLISH_DIR=/some/path 17

Slide 18

Slide 18 text

Rake 18

Slide 19

Slide 19 text

git-buildpackage # Rakefile require "buildtasks" BuildTasks::GitBuildpackage.define do name "periodicnoise" version "debian/1.1" source "https://github.com/Jimdo/periodicnoise" end 19

Slide 20

Slide 20 text

fpm-cookery # Rakefile require "buildtasks" BuildTasks::FPMCookery.define do recipe "recipe.rb" fpm_cookery_version "0.25.0" fpm_version "1.3.3" end 20

Slide 21

Slide 21 text

Rake tasks $ rake -T rake build # Build packages rake clean # Remove any temporary products rake clobber # Remove any generated file rake deps # Install build dependencies rake publish # Publish built packages $ rake build publish PUBLISH_DIR=/some/path 21

Slide 22

Slide 22 text

Demo 22

Slide 23

Slide 23 text

It's open source! $ gem install buildtasks github.com/Jimdo/buildtasks 23

Slide 24

Slide 24 text

Jimdo BuildBox1 1 Cool project name. Only used by two companies so far. 24

Slide 25

Slide 25 text

Package recipes + Isolated build env + Shell glue 25

Slide 26

Slide 26 text

$ cd buildbox/ $ vagrant up $ script/build 26

Slide 27

Slide 27 text

$ cd buildbox/ $ script/bootstrap $ script/build 27

Slide 28

Slide 28 text

Demo 28

Slide 29

Slide 29 text

! buildhost02 ! September 2014 29

Slide 30

Slide 30 text

The Future 30

Slide 31

Slide 31 text

Turn shell glue into tool CI for package building Open source all the things 31

Slide 32

Slide 32 text

Thank you. mlafeldt.github.io @mlafeldt 32