Commit Graph

364 Commits

Author SHA1 Message Date
Simon Fraser
322cd0ea39 Bug 1473276 'which' is non-standard, use 'command -v' in partials r=mtabara
This will start to cause an error when a newer shellcheck is available in CI

Differential Revision: https://phabricator.services.mozilla.com/D1940
2018-07-04 11:33:13 +00:00
Bogdan Tara
8245a830c3 Backed out changeset 9c75cab2e322 (bug 733530) for breaking artifact builds 2018-07-04 14:50:22 +03:00
Chris AtLee
49625724f4 Bug 733530: Use .tar.gz for test archives r=gps
Differential Revision: https://phabricator.services.mozilla.com/D1743
2018-07-03 18:33:02 +00:00
Mike Hommey
cc431e41f5 Bug 1471103 - Add a few useful packages to the base Debian docker images. r=froydnj 2018-06-26 10:59:34 +09:00
Simon Fraser
35c0f29d29 Bug 1468770 Update author for repo-update commits r=RyanVM
Differential Revision: https://phabricator.services.mozilla.com/D1753
2018-06-21 15:47:24 +00:00
Simon Fraser
5b28a451b5 Bug 1468770 repo-update submitter and commit msg r=RyanVM
Differential Revision: https://phabricator.services.mozilla.com/D1700
2018-06-19 13:01:54 +00:00
Simon Fraser
0f1006995a Bug 1468386 Clean up unused funsize-balrog-submitter image r=mtabara
Reviewers: mtabara

Reviewed By: mtabara

Subscribers: sfraser, mtabara

Bug #: 1468386

Differential Revision: https://phabricator.services.mozilla.com/D1648
2018-06-15 08:29:54 -07:00
Narcis Beleuzu
2478854196 Merge mozilla-central to inbound. a=merge CLOSED TREE 2018-06-14 00:58:55 +03:00
Simon Fraser
f972c8d19d Bug 1468423 Change to greedy match to fix version parsing r=RyanVM
Differential Revision: https://phabricator.services.mozilla.com/D1639
2018-06-13 03:38:16 +00:00
Ben Hearsum
f4a11d7fc5 bug 1458329: update funsize update generator deps. r=sfraser 2018-06-13 15:53:46 -04:00
Ben Hearsum
0c02f8deaa bug 1455061: upgrade update verify and funsize update generator docker images to newer ubuntu to get latest python. r=sfraser 2018-06-08 09:08:32 -04:00
Simon Fraser
f63613ac09 Bug 1467456 Use correct hg repo in repo-update r=lguo
1. Updated hgrepo to work with mozilla-beta, mozilla-esr60 and project branches (just in case)
2. Presquashed commits, so we only submit one.
3. Replaced 'which' with 'command -v' to avoid future shellcheck issues.

Differential Revision: https://phabricator.services.mozilla.com/D1582
2018-06-07 17:55:50 +00:00
Gregory Szorc
3697053827 Bug 1460777 - Taskgraph tasks for retrieving remote content; r=dustin, glandium
Currently, many tasks fetch content from the Internets. A problem with
that is fetching from the Internets is unreliable: servers may have
outages or be slow; content may disappear or change out from under us.

The unreliability of 3rd party services poses a risk to Firefox CI.
If services aren't available, we could potentially not run some CI tasks.
In the worst case, we might not be able to release Firefox. That would
be bad. In fact, as I write this, gmplib.org has been unavailable for
~24 hours and Firefox CI is unable to retrieve the GMP source code.
As a result, building GCC toolchains is failing.

A solution to this is to make tasks more hermetic by depending on
fewer network services (which by definition aren't reliable over time
and therefore introduce instability).

This commit attempts to mitigate some external service dependencies
by introducing the *fetch* task kind.

The primary goal of the *fetch* kind is to obtain remote content and
re-expose it as a task artifact. By making external content available
as a cached task artifact, we allow dependent tasks to consume this
content without touching the service originally providing that
content, thus eliminating a run-time dependency and making tasks more
hermetic and reproducible over time.

We introduce a single "fetch-url" "using" flavor to define tasks that
fetch single URLs and then re-expose that URL as an artifact. Powering
this is a new, minimal "fetch" Docker image that contains a
"fetch-content" Python script that does the work for us.

We have added tasks to fetch source archives used to build the GCC
toolchains.

Fetching remote content and re-exposing it as an artifact is not
very useful by itself: the value is in having tasks use those
artifacts.

We introduce a taskgraph transform that allows tasks to define an
array of "fetches." Each entry corresponds to the name of a "fetch"
task kind. When present, the corresponding "fetch" task is added as a
dependency. And the task ID and artifact path from that "fetch" task
is added to the MOZ_FETCHES environment variable of the task depending
on it. Our "fetch-content" script has a "task-artifacts"
sub-command that tasks can execute to perform retrieval of all
artifacts listed in MOZ_FETCHES.

To prove all of this works, the code for fetching dependencies when
building GCC toolchains has been updated to use `fetch-content`. The
now-unused legacy code has been deleted.

This commit improves the reliability and efficiency of GCC toolchain
tasks. Dependencies now all come from task artifacts and should always
be available in the common case. In addition, `fetch-content` downloads
and extracts files concurrently. This makes it faster than the serial
application which we were previously using.

There are some things I don't like about this commit.

First, a new Docker image and Python script for downloading URLs feels
a bit heavyweight. The Docker image is definitely overkill as things
stand. I can eventually justify it because I want to implement support
for fetching and repackaging VCS repositories and for caching Debian
packages. These will require more packages than what I'm comfortable
installing on the base Debian image, therefore justifying a dedicated
image.

The `fetch-content static-url` sub-command could definitely be
implemented as a shell script. But Python is readily available and
is more pleasant to maintain than shell, so I wrote it in Python.

`fetch-content task-artifacts` is more advanced and writing it in
Python is more justified, IMO. FWIW, the script is Python 3 only,
which conveniently gives us access to `concurrent.futures`, which
facilitates concurrent download.

`fetch-content` also duplicates functionality found elsewhere.
generic-worker's task payload supports a "mounts" feature which
facilitates downloading remote content, including from a task
artifact. However, this feature doesn't exist on docker-worker.
So we have to implement downloading inside the task rather than
at the worker level. I concede that if all workers had generic-worker's
"mounts" feature and supported concurrent download, `fetch-content`
wouldn't need to exist.

`fetch-content` also duplicates functionality of
`mach artifact toolchain`. I probably could have used
`mach artifact toolchain` instead of writing
`fetch-content task-artifacts`. However, I didn't want to introduce
the requirement of a VCS checkout. `mach artifact toolchain` has its
origins in providing a feature to the build system. And "fetching
artifacts from tasks" is a more generic feature than that. I think
it should be implemented as a generic feature and not something that is
"toolchain" specific.

I think the best place for a generic "fetch content" feature is in
the worker, where content can be defined in the task payload. But as
explained above, that feature isn't universally available. The next
best place is probably run-task. run-task already performs generic,
very-early task preparation steps, such as performing a VCS checkout.
I would like to fold `fetch-content` into run-task and make it all
driven by environment variables. But run-task is currently Python 2
and achieving concurrency would involve a bit of programming (or
adding package dependencies). I may very well port run-task to Python
3 and then fold fetch-content into it. Or maybe we leave
`fetch-content` as a standalone script.

MozReview-Commit-ID: AGuTcwNcNJR
2018-06-06 14:37:49 -07:00
Gurzau Raul
e787324b17 Backed out 2 changesets (bug 1460777) for Toolchains failure on a CLOSED TREE
Backed out changeset 52ef9348401d (bug 1460777)
Backed out changeset 60ed097650b8 (bug 1460777)
2018-06-06 20:57:29 +03:00
Gregory Szorc
c9ef9aa239 Bug 1460777 - Taskgraph tasks for retrieving remote content; r=dustin,glandium
Currently, many tasks fetch content from the Internets. A problem with
that is fetching from the Internets is unreliable: servers may have
outages or be slow; content may disappear or change out from under us.

The unreliability of 3rd party services poses a risk to Firefox CI.
If services aren't available, we could potentially not run some CI tasks.
In the worst case, we might not be able to release Firefox. That would
be bad. In fact, as I write this, gmplib.org has been unavailable for
~24 hours and Firefox CI is unable to retrieve the GMP source code.
As a result, building GCC toolchains is failing.

A solution to this is to make tasks more hermetic by depending on
fewer network services (which by definition aren't reliable over time
and therefore introduce instability).

This commit attempts to mitigate some external service dependencies
by introducing the *fetch* task kind.

The primary goal of the *fetch* kind is to obtain remote content and
re-expose it as a task artifact. By making external content available
as a cached task artifact, we allow dependent tasks to consume this
content without touching the service originally providing that
content, thus eliminating a run-time dependency and making tasks more
hermetic and reproducible over time.

We introduce a single "fetch-url" "using" flavor to define tasks that
fetch single URLs and then re-expose that URL as an artifact. Powering
this is a new, minimal "fetch" Docker image that contains a
"fetch-content" Python script that does the work for us.

We have added tasks to fetch source archives used to build the GCC
toolchains.

Fetching remote content and re-exposing it as an artifact is not
very useful by itself: the value is in having tasks use those
artifacts.

We introduce a taskgraph transform that allows tasks to define an
array of "fetches." Each entry corresponds to the name of a "fetch"
task kind. When present, the corresponding "fetch" task is added as a
dependency. And the task ID and artifact path from that "fetch" task
is added to the MOZ_FETCHES environment variable of the task depending
on it. Our "fetch-content" script has a "task-artifacts"
sub-command that tasks can execute to perform retrieval of all
artifacts listed in MOZ_FETCHES.

To prove all of this works, the code for fetching dependencies when
building GCC toolchains has been updated to use `fetch-content`. The
now-unused legacy code has been deleted.

This commit improves the reliability and efficiency of GCC toolchain
tasks. Dependencies now all come from task artifacts and should always
be available in the common case. In addition, `fetch-content` downloads
and extracts files concurrently. This makes it faster than the serial
application which we were previously using.

There are some things I don't like about this commit.

First, a new Docker image and Python script for downloading URLs feels
a bit heavyweight. The Docker image is definitely overkill as things
stand. I can eventually justify it because I want to implement support
for fetching and repackaging VCS repositories and for caching Debian
packages. These will require more packages than what I'm comfortable
installing on the base Debian image, therefore justifying a dedicated
image.

The `fetch-content static-url` sub-command could definitely be
implemented as a shell script. But Python is readily available and
is more pleasant to maintain than shell, so I wrote it in Python.

`fetch-content task-artifacts` is more advanced and writing it in
Python is more justified, IMO. FWIW, the script is Python 3 only,
which conveniently gives us access to `concurrent.futures`, which
facilitates concurrent download.

`fetch-content` also duplicates functionality found elsewhere.
generic-worker's task payload supports a "mounts" feature which
facilitates downloading remote content, including from a task
artifact. However, this feature doesn't exist on docker-worker.
So we have to implement downloading inside the task rather than
at the worker level. I concede that if all workers had generic-worker's
"mounts" feature and supported concurrent download, `fetch-content`
wouldn't need to exist.

`fetch-content` also duplicates functionality of
`mach artifact toolchain`. I probably could have used
`mach artifact toolchain` instead of writing
`fetch-content task-artifacts`. However, I didn't want to introduce
the requirement of a VCS checkout. `mach artifact toolchain` has its
origins in providing a feature to the build system. And "fetching
artifacts from tasks" is a more generic feature than that. I think
it should be implemented as a generic feature and not something that is
"toolchain" specific.

I think the best place for a generic "fetch content" feature is in
the worker, where content can be defined in the task payload. But as
explained above, that feature isn't universally available. The next
best place is probably run-task. run-task already performs generic,
very-early task preparation steps, such as performing a VCS checkout.
I would like to fold `fetch-content` into run-task and make it all
driven by environment variables. But run-task is currently Python 2
and achieving concurrency would involve a bit of programming (or
adding package dependencies). I may very well port run-task to Python
3 and then fold fetch-content into it. Or maybe we leave
`fetch-content` as a standalone script.

MozReview-Commit-ID: AGuTcwNcNJR
2018-06-06 09:37:38 -07:00
Gregory Szorc
f427debf5b Bug 1466746 - Install python-zstandard in debian-base; r=glandium
Let's install python-zstandard for both Python 2 and Python 3 in
all our Debian-based images so it is readily available for use.

MozReview-Commit-ID: 1L8zDc5MYXA
2018-06-04 23:21:19 -07:00
Csoregi Natalia
6e1ac76332 Merge mozilla-central to inbound. a=merge CLOSED TREE 2018-06-02 01:05:17 +03:00
Tom Prince
35099b7dd8 No bug: [release] Remove lint leftovers in update-verify docker image; r=bhearsum
Remove some leftover packages from when update-verify docker image was copied
from the lint docker image.

Differential Revision: https://phabricator.services.mozilla.com/D1485
2018-06-01 15:20:48 +00:00
Chris AtLee
1b7a87253f Bug 1237182: get rid of oauth.txt r=mtabara
Differential Revision: https://phabricator.services.mozilla.com/D1444
2018-05-25 17:43:15 -04:00
Chris AtLee
841d546d18 Bug 1237182: Get rid of buildprops.json r=tomprince,sfraser
Differential Revision: https://phabricator.services.mozilla.com/D1443
2018-05-25 17:35:43 -04:00
Simon Fraser
8160372aa6 Bug 1452927 Improve logging and retries for partials r=mtabara
Summary:
Attempt to get more information about download timeouts, and
also retry the partial generation if download timeouts happen too often.

Reviewers: mtabara

Reviewed By: mtabara

Bug #: 1452927

Differential Revision: https://phabricator.services.mozilla.com/D1467
2018-05-30 15:34:36 +02:00
Mathieu Leplatre
466052e67f Bug 1465254 - Fix copy error in periodic updates task r=sfraser
MozReview-Commit-ID: 8YXHlZylBQG
2018-05-30 00:36:27 +02:00
Mathieu Leplatre
95602feb7e Bug 1451040 - Download remote settings dumps regularly r=sfraser
MozReview-Commit-ID: BCCEplOq1O8
2018-05-16 13:03:22 +02:00
Johan Lorenzo
3064f3afa6 Bug 1459980 - google-play-strings: pin mozapkpublisher to 0.7.2 r=gps
MozReview-Commit-ID: 65Puqafnlkw
2018-05-16 18:45:02 +02:00
Dorel Luca
c9a4b9a01d Merge mozilla-central to autoland 2018-05-16 00:58:05 +03:00
Geoff Brown
4ca176bbb9 Bug 1460411 - Follow-up - diffoscope repo moved; updated url; r=me on a CLOSED TREE 2018-05-15 11:36:28 -06:00
Geoff Brown
1f62497c49 Bug 1460411 - Add kvm to desktop1604-test image; r=jmaher
Our normal ubuntu 16.04 test image is suitable for hosting an Android x86
emulator with these minor updates: Install kvm and make sure /dev/kvm
rw permissions are open for everyone. Note that /dev/kvm is generally
only visible when running docker with --privileged; its permissions
cannot be modified in the Dockerfile, only at run-time: run-task is the
first opportunity.
2018-05-15 09:57:27 -06:00
Gregory Szorc
bb863b68fa Bug 1460475 - Port download-and-compress to Python 3; r=dustin
download-and-compress isn't very complicated and should work on Python 3
with minimal effort. So let's switch it to use Python 3.

MozReview-Commit-ID: 9G1WfcbbKEY
2018-05-09 19:41:07 -07:00
Gregory Szorc
58378e5f67 Bug 1460475 - Upgrade python-zstandard in image_builder; r=dustin
Version 0.9.0 bundles a newer version of the zstandard library, which
is a little faster and has a few minor bug fixes (none that we were
likely hitting, however).

MozReview-Commit-ID: 9YgSZ0G41eg
2018-05-09 17:54:38 -07:00
Gregory Szorc
d5568c4273 Bug 1460475 - Install Python 3 on image_builder; r=dustin
We want Python 3 available everywhere because it is 2018.

MozReview-Commit-ID: L3wufNXKdnp
2018-05-09 17:45:39 -07:00
Sylvestre Ledru
b71900a490 Bug 1460402 - Update the CI to use codespell with pip instead of the apt packages (too old) r=ahal
MozReview-Commit-ID: 9QkTPyP7izS
2018-05-09 21:57:36 +02:00
Dorel Luca
a5dd93f753 Backed out 4 changesets (bug 1460402) for lint failure on intl/locales/en-US/hyphenation/hyph_en_US.dic. CLOSED TREE
Backed out changeset c2e8fbd72ca6 (bug 1460402)
Backed out changeset 3676e913dbff (bug 1460402)
Backed out changeset bb12ffd4b96e (bug 1460402)
Backed out changeset 3e50885329c4 (bug 1460402)
2018-05-11 00:47:34 +03:00
Sylvestre Ledru
a296aa552f Bug 1460402 - Update the CI to use codespell with pip instead of the apt packages (too old) r=ahal
MozReview-Commit-ID: 9QkTPyP7izS
2018-05-09 21:57:36 +02:00
Dorel Luca
488319102d Backed out 4 changesets (bug 1460402) for breaking taskcluster images. CLOSED TREE
Backed out changeset 5b40f3f18f42 (bug 1460402)
Backed out changeset 17526c61b995 (bug 1460402)
Backed out changeset e1caff997e5a (bug 1460402)
Backed out changeset 06ceda084d69 (bug 1460402)
2018-05-10 23:54:38 +03:00
Sylvestre Ledru
efc242bfe9 Bug 1460402 - Update the CI to use codespell with pip instead of the apt packages (too old) r=ahal
MozReview-Commit-ID: 9QkTPyP7izS
2018-05-09 21:57:36 +02:00
Gregory Szorc
55e7762851 Bug 1460451 - Add /usr/bin/python3 to Debian images; r=glandium
The python3-minimal package provides /usr/bin/python3 on Debian.

This commit installs this package so a `python3` executable is
provided.

This required backporting the package to wheezy. The final patch
is trivial. But I wasted a bit of time figuring out why `mk-build-deps`
wasn't working. It would no-op and exit 0 and then the build would
complain about missing dependencies!

glandium's theory is that the ":any" multiarch support on wheezy
isn't complete. Removing ":any" seems to make things "just work."

MozReview-Commit-ID: FBicpK4SmkQ
2018-05-09 19:54:21 -07:00
Gregory Szorc
bbfe03add5 Bug 1459737 - Add missing package dependencies to google-play-strings Dockerfile; r=nalexander CLOSED TREE
This Dockerfile downloads non-deterministic remote content (by cloning a
Git repo) and then executes code from it. Part of that code is
executing Python package installs.

Since this Docker image was generated, it appears the remote code
requires new build dependencies. This commit adds those package
dependencies.

Not having deterministic Docker image builds is a bug. I'll file a
follow-up so we pin the Git commit used for building so this type
of failure doesn't occur again.
2018-05-08 09:03:35 -07:00
Gregory Szorc
7e947fd801 Bug 1459737 - Move run-task into taskcluster/scripts; r=dustin
In preparation for making it usable on Windows, after which point
having it in a directory with "docker" in it doesn't make much sense.

MozReview-Commit-ID: Hgu0buFyJwF
2018-05-04 17:23:31 -07:00
Gregory Szorc
2751bbf50d Bug 1459077 - Install known working pip and virtualenv; r=ted
Previously, we installed the latest version of pip and virtualenv.

This commit pins the pip and virtualenv version so we install known
working versions (pip 10 breaks the image build for some reason).

MozReview-Commit-ID: hOAMencdcr
2018-05-04 13:10:50 -07:00
Chris AtLee
280a2c7b21 Bug 1450029: Remove buildbot/buildbot-bridge references from taskcluster r=aki,tomprince
MozReview-Commit-ID: Hu9ju4XVQpA
2018-05-01 16:07:19 -04:00
Kris Maglione
fd7e9e6a69 Bug 1456035: Part 4 - Convert callers of XPCOMUtils.generateQI to ChromeUtils.generateQI. r=mccr8
This also removes any redundant Ci.nsISupports elements in the interface
lists.

This was done using the following script:

acecb401b7/processors/chromeutils-generateQI.jsm

MozReview-Commit-ID: AIx10P8GpZY
2018-04-22 20:55:06 -07:00
Johan Lorenzo
2d3a4a82dd Bug 1456327 - Snap: pin desktop-gtk3 dependency for causing start up crash r=sfraser
MozReview-Commit-ID: 4diqZRxNwj3
2018-04-27 11:17:02 +02:00
Gregory Szorc
3327d840c1 Bug 1456326 - Bump version of decision image; r=dustin
Version number is arbitrary.

MozReview-Commit-ID: EGfDiyGuCPI
2018-04-23 17:53:16 -07:00
Gregory Szorc
8be7052447 Bug 1456326 - Trim some fat from decision image; r=dustin
The big win comes from removing the APT lists. We also reduce the
number of layers while we're here.

This makes the image 162 MB instead of 202 MB.

MozReview-Commit-ID: K2ic4zcr31j
2018-04-23 17:52:45 -07:00
Ben Hearsum
cac809ce31 Bug 1442545: [partner-repack] Add docker image for partner repacks; r=Callek
Differential Revision: https://phabricator.services.mozilla.com/D979
2018-04-19 10:00:47 -06:00
Mihai Tabara
42c2e9bf7d Bug 1447688 - Retire first generation of in-tree beetmover and relpro postrelease scripts.r=rail 2018-04-18 18:58:27 +01:00
Dorel Luca
deb3f993e5 Backed out changeset f5f4089f457e (bug 1447688) for Gecko Decision Task failures. CLOSED TREE 2018-04-18 11:14:20 +03:00
Mihai Tabara
009e372219 Bug 1447688 - Retire first generation of in-tree beetmover and relpro postrelease scripts.r=rail DONTBUILD 2018-04-18 09:01:20 +01:00
Simon Fraser
17f0926d42 Bug 1454411 Update stat calls in funsize r=catlee
Reviewers: catlee

Reviewed By: catlee

Bug #: 1454411

Differential Revision: https://phabricator.services.mozilla.com/D952
2018-04-17 08:03:54 +01:00
Simon Fraser
a61e4a9d9c Bug 1452159 periodic file udpates, fix awk behaviour r=jlorenzo
Summary:
a difference in behaviours between awks meant the original didn't work in-situ,
although the task didn't fail due to the pipe chain.

Reviewers: jlorenzo

Reviewed By: jlorenzo

Bug #: 1452159

Differential Revision: https://phabricator.services.mozilla.com/D899
2018-04-10 13:10:45 +01:00