1 of 16

How Mozilla uses Python to Build and Ship Firefox

2 of 16

How do we get from this….

To this

3 of 16

Who am I?

Chris AtLee

catlee@mozilla.com

4 of 16

some numbers

4 GB in version control (hg) for Firefox; 494k commits

Over 200 commits per day; around 7,000 per month

1,750 build & test tasks per commit

approximately 15 cpu days of automation per commit

20 releases per month. Each release can have over 7,000 individual tasks and generates 50-100GB of artifacts!

All powered by Python!

5 of 16

Goal of this talk:

understanding pipelines & python

6 of 16

treeherder

7 of 16

taskcluster

mostly not python, sorry :(

8 of 16

mach taskgraph

it’s complicated

9 of 16

workers

Photo by Randy Fath on Unsplash

10 of 16

Keeping users up to date

11 of 16

updates

https://aus5.mozilla.org/update/6/Firefox/65.0a1/20181106100114/Linux_x86_64-gcc3/en-CA/nightly/Linux%204.18.0-2-amd64%20(GTK%203.24.1%2Clibpulse%2012.2.0)/ISET:SSE4_2,MEM:15790/default/default/update.xml

<updates>

<update type="minor" displayVersion="65.0a1" appVersion="65.0a1" platformVersion="65.0a1" buildID="20181109101751">

<patch type="complete" URL="https://archive.mozilla.org/pub/firefox/nightly/2018/11/2018-11-09-10-17-51-mozilla-central-l10n/firefox-65.0a1.en-CA.linux-x86_64.complete.mar" hashFunction="sha512" hashValue="a56f091a1a74a10917e6adbae6603593e89c8173d4d6a4689895ae31181e72c33e158988d12c19a8e4c52ec32a9df8df22ca891e42bf2cb7445476e45acb3d49" size="53647369"/>

</update></updates>

12 of 16

Python can work with binary file formats too!

13 of 16

why python?

14 of 16

why not python?

15 of 16

stuff I missed

16 of 16

Thanks!

slides are at https://mzl.la/2yUhiqH