Commit Graph

143 Commits

Author SHA1 Message Date
Nick Alexander
4ca8f96c20 Bug 1407672 - Pre: Add rsync for l10n repacks and interactive helpers in android-build image. r=Callek
MozReview-Commit-ID: 9c1J7PdpLp2
2017-10-12 08:30:20 -07:00
Rail Aliiev
b6f842d15d Bug 1402015 - Submit re-compressed MAR metadata to Balrog r=sfraser a=release DONTBUILD
MozReview-Commit-ID: DuJxPBErAhg
2017-10-04 10:14:35 -04:00
Tom Ritter
32e47f847b Bug 1330608 Add the MinGW32 toolchain build to Taskcluster r=glandium
MozReview-Commit-ID: JHS6y8kqr4T
2017-09-22 00:24:58 -05:00
Johan Lorenzo
75fbf19f95 Bug 1401620 - Snap: Use Canonical partner config instead of a duplicated one r=rail
MozReview-Commit-ID: RuB9KC1l49
2017-09-21 14:53:10 +02:00
Johan Lorenzo
4e69af7213 Bug 1390071 - Snap: Add required .desktop file r=mtabara
MozReview-Commit-ID: JtQlswCqZNl
2017-08-14 16:16:14 +02:00
Nick Alexander
020608bac5 Bug 1396098 - part 1 - base android-build on Debian instead of CentOS; r=glandium,dustin
CentOS 6 is pinned to glibc 2.12, but newer Android build-tools (like
aapt) require glibc 2.14.  It's not possible to safely upgrade CentOS
6 distributions to glibc 2.14.

CentOS 7 is pinned to glibc 2.17, which is new enough for newer
Android build-tools. However, I had great difficulty bringing forward
our existing centos:6 Docker image to centos:7.  In particular,
installing recent enough Mercurial, git, Python, and pip versions was
difficult enough that I elected to not pursue this approach.

Instead, I've elected to follow glandium's suggestion from
https://bugzilla.mozilla.org/show_bug.cgi?id=1370119#c5: base on
Debian with snapshots.debian.org for reproducibility.

The most significant changes here:

- using Debian's snapshots repository
- using Python and related tools provided by Debian and baked into the
  build image
- using the JDK and JRE provided by Debian and baked into the build
  image, rather than versions from tooltool (or eventually a toolchain
  build)

Moving the builds over to use this image will follow in the patches
ahead.
2017-09-18 15:38:22 -04:00
Rail Aliiev
dbed7bf937 Bug 1395697 - Use BZ2 MAR compression for versions less than 56.0 r=sfraser
MozReview-Commit-ID: LutFJRayTOX
2017-09-19 06:09:23 -04:00
Nick Thomas
4c45b3a99e Bug 1400141 - Use redo params from nightly with a jitter r=bhearsum
MozReview-Commit-ID: BjU6A9pOpKE
2017-09-19 15:21:22 +02:00
Wes Kocher
c5dea92656 Merge inbound to central, a=merge
MozReview-Commit-ID: EK8iFR1hSRp
2017-09-18 16:21:01 -07:00
Gregory Szorc
7495229000 Backed out changesets ef813898b5d3, ce228388aaf6, and c798f482b2c5 (bug 1396098) for violating TC cache constraints
CLOSED TREE
2017-09-18 13:30:43 -07:00
Nick Alexander
80be0903de Bug 1396098 - part 1 - base android-build on Debian instead of CentOS; r=glandium,dustin
CentOS 6 is pinned to glibc 2.12, but newer Android build-tools (like
aapt) require glibc 2.14.  It's not possible to safely upgrade CentOS
6 distributions to glibc 2.14.

CentOS 7 is pinned to glibc 2.17, which is new enough for newer
Android build-tools. However, I had great difficulty bringing forward
our existing centos:6 Docker image to centos:7.  In particular,
installing recent enough Mercurial, git, Python, and pip versions was
difficult enough that I elected to not pursue this approach.

Instead, I've elected to follow glandium's suggestion from
https://bugzilla.mozilla.org/show_bug.cgi?id=1370119#c5: base on
Debian with snapshots.debian.org for reproducibility.

The most significant changes here:

- using Debian's snapshots repository
- using Python and related tools provided by Debian and baked into the
  build image
- using the JDK and JRE provided by Debian and baked into the build
  image, rather than versions from tooltool (or eventually a toolchain
  build)

Moving the builds over to use this image will follow in the patches
ahead.
2017-09-18 15:38:22 -04:00
Nick Alexander
65ad8c7736 Bug 1396098 - part 0b - rename android-gradle-build to android-build; r=glandium,dustin
The name `android-gradle-build` is an accident of history; let's rename it
before we attempt major surgery on it.
2017-09-18 15:38:22 -04:00
Rail Aliiev
fcc591785d Bug 1395697 - Add scripts to handle MAR recompression in release automation r=catlee
MozReview-Commit-ID: 5WCy01RFQMX
2017-09-16 08:38:34 -04:00
Simon Fraser
0ab9dada04 Bug 1342392 Migrate partial update generation in-tree r=rail
MozReview-Commit-ID: G6EFXY0UzSa
2017-09-18 13:36:36 +01:00
Sebastian Hengst
f1bbda3eeb Backed out changeset 0d71c0be62de (bug 1342392) for bustage in partial update generator for docker images: recompress.sh not found. r=backout 2017-09-18 14:15:42 +02:00
Simon Fraser
d2b8ac4d0d Bug 1342392 Migrate partial update generation in-tree r=rail
MozReview-Commit-ID: 84fP48sMYhS
2017-09-15 11:04:35 +01:00
Sebastian Hengst
ca434b9d52 Backed out changeset a43387ee65d7 (bug 1342392) for failing flake8 and py-compat jobs. r=backout 2017-09-18 13:50:16 +02:00
Simon Fraser
498d6b87a7 Bug 1342392 Migrate partial update generation in-tree r=rail
MozReview-Commit-ID: 84fP48sMYhS
2017-09-15 11:04:35 +01:00
Jonas Finnemann Jensen
4e7abc11d5 Bug 1393655 - Strip microsecond from run-task logs r=gps
* Strip microsecond from log prefixes generated
    by run-task.

MozReview-Commit-ID: 87kL6gs2LZS
2017-08-24 17:56:15 -07:00
Wes Kocher
d62fefa0af Backed out 2 changesets (bug 1342392) for bustage a=backout
Backed out changeset b0e86286b173 (bug 1342392)
Backed out changeset 01bf0c29331e (bug 1342392)

MozReview-Commit-ID: 71fcOZ2RgEp
2017-09-11 17:35:09 -07:00
Simon Fraser
278648e798 Bug 1342392 Move partial update generation in-tree r=dustin,jlorenzo 2017-09-11 09:55:52 +01:00
Sebastian Hengst
27461f48cf Backed out 2 changesets (bug 1342392) for adding .orig file and flake lint failures. r=backout on a CLOSED TREE
Backed out changeset bf0bcdc7482e (bug 1342392)
Backed out changeset 7f5ae5ff1181 (bug 1342392)
2017-09-11 10:38:08 +02:00
Simon Fraser
57931cc98f Bug 1342392 Rename of docker image for partials generation CLOSED TREE 2017-09-11 09:31:00 +01:00
Simon Fraser
e9d9241564 Bug 1342392 Move partial update generation in-tree r=dustin,jlorenzo 2017-09-11 09:24:10 +01:00
Dustin J. Mitchell
0a6d21881e Bug 1397318: mozlint -l py2 for taskcluster/; r=ahal
MozReview-Commit-ID: 1ZUOrIfxQef
2017-09-06 17:29:32 +00:00
Dustin J. Mitchell
8baac61f75 Bug 1396022: combine docker docs, talk about hsahes; r=garndt
MozReview-Commit-ID: A27Qoemw2T3
2017-09-01 17:47:46 +00:00
Dustin J. Mitchell
eb4e3749a5 Bug 1394883: update docs about docker hashes; r=wcosta
MozReview-Commit-ID: AwMWyCWs4aS
2017-08-30 16:05:10 +00:00
Dustin J. Mitchell
c80e2187c3 Bug 1394883: use /builds/worker in decision images; r=wcosta
MozReview-Commit-ID: 29cnSAr3zCW
2017-08-30 15:55:35 +00:00
Dustin J. Mitchell
854c8fee05 Bug 1394883: use /builds/worker in image building; r=gps
This includes adding TASKCLUSTER_VOLUMES to docker image builds directly.  The
env variable is not added as part of the task transform because `run-task` is
not in payload.command.  In fact, build-image.sh calls run-task after doing
some other housekeeping.

Ideally image builds would be turned into jobs and all of this would occur
automatically, but that turns out to be quite a bit too complex for this
incidental fix -- perhaps best solved in another bug.

MozReview-Commit-ID: FYHvafJras7
2017-08-30 16:30:13 +00:00
Phil Ringnalda
b00e26f42d Backed out 4 changesets (bug 1394883) for Windows signing chain-of-trust failures
CLOSED TREE

Backed out changeset e3f42eca51c1 (bug 1394883)
Backed out changeset 081f830cf285 (bug 1394883)
Backed out changeset 9426705a05af (bug 1394883)
Backed out changeset 3a579a5054ef (bug 1394883)

MozReview-Commit-ID: 2viO8A8arHd
2017-08-31 20:02:34 -07:00
Andrew Halberstadt
1432d39374 Bug 1391019 - Move tools/lint/flake_/__init__.py to tools/lint/python/flake8.py, r=gps
This will allow us keep python related linting files in the same place.

MozReview-Commit-ID: ABtq9dnPo9T
2017-08-31 10:06:08 -04:00
Dustin J. Mitchell
ae48d87a7a Bug 1394883: update docs about docker hashes; r=wcosta
MozReview-Commit-ID: AwMWyCWs4aS
2017-08-30 16:05:10 +00:00
Dustin J. Mitchell
8fda8d80f9 Bug 1394883: use /builds/worker in decision images; r=wcosta
MozReview-Commit-ID: 29cnSAr3zCW
2017-08-30 15:55:35 +00:00
Dustin J. Mitchell
da609c4357 Bug 1394883: use /builds/worker in image building; r=gps
This includes adding TASKCLUSTER_VOLUMES to docker image builds directly.  The
env variable is not added as part of the task transform because `run-task` is
not in payload.command.  In fact, build-image.sh calls run-task after doing
some other housekeeping.

Ideally image builds would be turned into jobs and all of this would occur
automatically, but that turns out to be quite a bit too complex for this
incidental fix -- perhaps best solved in another bug.

MozReview-Commit-ID: FYHvafJras7
2017-08-30 16:30:13 +00:00
Dustin J. Mitchell
2bc34bde4c Bug 1390968: add a py(3) job; r=gps
MozReview-Commit-ID: 1BkOEvPKjSD
2017-08-28 20:55:55 +00:00
Wander Lairson Costa
6b7f9ef0d1 Bug 1338651 part 1: Change docker image home dir to /build. r=dustin,mshal
Using /home/worker is the build directory has a 30% talos performance
loss, because test machines has a /home mount directory.

MozReview-Commit-ID: 554IPMRWgzK
2017-08-28 08:44:51 -03:00
Wes Kocher
08356deb1c Merge m-c to autoland, a=merge
MozReview-Commit-ID: LEKykpTAKjv
2017-08-25 17:32:33 -07:00
Gregory Szorc
67b73a5c00 Bug 1390700 - Use sparse checkouts for decision task; r=dustin
The updated Docker image contains robustcheckout and run-task support
for sparse checkouts, which are obvious prerequisites.

We change the cache name so sparse and non-sparse checkouts don't
use the same working directory. If we didn't do this, tasks running
from images with old Mercurial clients or without a sparse aware
robustcheckout would fail.

The effect of using a sparse checkout is that we reduce the number
of files in the checkout from ~234,000 to ~3,600. This reduces time
for a fresh checkout from several dozen seconds to under 2s.

MozReview-Commit-ID: IJz794g8ZKH
2017-08-23 12:09:00 -07:00
Johan Lorenzo
07849862c1 Bug 1390123 - Snap: Automate uploads to Ubuntu Store r=mtabara
MozReview-Commit-ID: 7JVwiUaxk0G
2017-08-14 15:00:33 +02:00
Gregory Szorc
9c6085d5e0 Backed out changeset 9923fffd4f64 (bug 1390700) for somehow breaking chain of trust on some Windows builds
CLOSED TREE
2017-08-24 21:42:18 -07:00
Gregory Szorc
6449f5d788 Bug 1390700 - Use sparse checkouts for decision task; r=dustin
The updated Docker image contains robustcheckout and run-task support
for sparse checkouts, which are obvious prerequisites.

We change the cache name so sparse and non-sparse checkouts don't
use the same working directory. If we didn't do this, tasks running
from images with old Mercurial clients or without a sparse aware
robustcheckout would fail.

The effect of using a sparse checkout is that we reduce the number
of files in the checkout from ~234,000 to ~3,600. This reduces time
for a fresh checkout from several dozen seconds to under 2s.

MozReview-Commit-ID: IJz794g8ZKH
2017-08-23 12:09:00 -07:00
Gregory Szorc
a7ff09d251 Bug 1390700 - Support sparse checkouts in run-task; r=dustin
`run-task` is taught a --sparse-profile argument to be passed down
to `hg robustcheckout` for the main source checkout. It does what
you expect: performs a sparse checkout using the named profile.

The Taskgraph YAML for run-task is taught a "sparse-profile"
property to define the sparse profile. When defined, --sparse-profile
will be passed down to `run-task` and the cache name will be updated
to reflect the use of sparse checkout.

Our cache checking transform is updated to audit for the use of
--sparse-profile without the corresponding "-sparse" cache name
variation.

The reason we need a distinct cache name for sparse is because
clients that aren't sparse aware will be unable to read checkouts
that are sparse. By forcing sparse and non-sparse into different
cache pools, we avoid compatibility issues.

In the ideal world, we probably support sparse profiles on all the
VCS checkouts that `run-task` supports (e.g. --tools-checkout).
Perfect is the enemy of done. All of this is defined in-tree and
it is easy enough to change atomically.

MozReview-Commit-ID: 79k7Vul0hHO
2017-08-23 18:54:14 -07:00
Gregory Szorc
a3c18f48fa Bug 1390700 - Fix some error messages in run-task; r=dustin
Include "error:" so Treeherder log parser picks things up (hopefully).

Also, actually include cache path in string.

MozReview-Commit-ID: 8b8ou7TJYZs
2017-08-24 09:06:45 -07:00
Gregory Szorc
3641ed7fbf Bug 1391476 - Add UID and GID to cache parameters; r=dustin
The UID and GID that a task executes under is dynamic. As a result,
caches need to be aware of the UID and GID that owns files otherwise
subsequent tasks could run into permission denied errors. This is
why `run-task --chown-recursive` exists. By recursively changing
ownership of persisted files, we ensure the current task is able
to read and write all existing files.

When you take a step back, you realize that chowning of cached
files is an expensive workaround. Yes, this results in cache hits.
But the cost is you potentially have to perform hundreds of thousands
of I/O system calls to mass chown. The ideal situation is that
UID/GID is consistent across tasks on any given cache and
potentially expensive permissions setting can be avoided. So, that's
what this commit does.

We add the task's UID and GID to run-task's requirements. When we
first see a cache, we record a UID and GID with it and chown the
empty cache directory to that UID and GID. Subsequent tasks using
this cache *must* use the same UID and GID or else run-task will
fail.

Since run-task now guarantees that all cache consumers use the same
UID and GID, we can avoid a potentially expensive recursive chown.

But there is an exception. In untrusted environments (namely Try),
we recursively chown existing caches if there is a uid/gid mismatch.
We do this because Try is a sandbox and any random task could
experiment with a non-standard uid/gid. That populated cache would
"poison" the cache for the next caller. Or vice-versa. It would be
annoying if caches were randomly poisoned due to Try pushes that
didn't realize there was a UID/GID mismatch. We could outlaw "bad"
UID and GIDs. But that makes the barrier to testing things on Try
harder. So, we go with the flow and recursively chown caches in
this scenario.

This change will shine light on all tasks using inconsistent UID
and GID values on the same cache. Bustage is anticipated.
Unfortunately, we can't easily know what will break. So it will be
one of those things where we will have to fix problems as they arise.
Fortunately, because caches are now tied to the content of run-task,
we only need to back out this change and tasks should revert to caches
without UID and GID pinning requirements and everything will work
again.

MozReview-Commit-ID: 2ka4rOnnXIp
2017-08-22 16:49:26 -07:00
Gregory Szorc
5e32e83855 Bug 1391476 - Automatically set cache/volume permissions in run-task; r=dustin
run-task's --chown and --chown-recursive are only used on volumes and
caches - the only locations that aren't controlled by the Docker image
itself and thus whose permissions could be "undefined."

Previous commits have taught run-task about the locations of all caches
and volumes. Therefore, we no longer need to manually define paths to
chown. Instead, we can chown as a side-effect of the path being a
cache or a volume.

So, this commit changes run-task to chown caches and volumes
automatically. Since we no longer have a use for --chown and
--chown-recursive, those arguments are removed.

There /could/ be some paths that are caches or volumes but aren't
getting defined as such in Taskgraph. I consider this a bug in
Taskgraph and the recourse is to properly define a path as a cache or
a volume there.

MozReview-Commit-ID: 1yqrhjil6gy
2017-08-23 12:07:18 -07:00
Gregory Szorc
6be419bf57 Bug 1391476 - Tell run-task about volumes so it can sanitize them; r=dustin
We recently introduced support for telling run-task about caches so
it could sanitize them automatically. We also recently taught
docker-worker and docker-engine how to declare volumes.

Building on that work, we now pass a list of paths corresponding
to Docker volumes to run-task.

run-task now verifies volumes behave as expected. Unless the volume
paths correspond to caches, run-task verifies they are empty and chowns
them to an appropriate owner.

Requiring empty volumes is an arbitrary decision. But as the inline
comment says, it keeps things simpler and makes caches and volumes
behave more like each other.

MozReview-Commit-ID: 5lm2uIitrS3
2017-08-23 10:47:37 -07:00
Gregory Szorc
13fbc64bc2 Bug 1391476 - Don't install nexus.xml in a Docker volume; r=mshal
We're about to ban files in Docker volumes so they behave almost
identically to caches (which start empty).

We move the install of nexus.xml from Docker image time to
task time. This also means that changes to nexus.xml don't result
in having to rebuild the Docker image.

MozReview-Commit-ID: JIjeJN4mt2
2017-08-23 10:34:14 -07:00
Gregory Szorc
140cd1126c Bug 1391476 - Require that all cache paths be declared as volumes; r=dustin
See the inline comment for the rationale here.

This check may not catch all volumes and caches. But after subsequent
commits refactor how permissions for caches and volumes are handled,
this edge case will likely result in permissions errors in the task,
so it isn't worth worrying about.

Several Dockerfile have been updated to add missing VOLUME so the check
passes.

In the case of desktop1604-test, we stopped removing
/home/worker/.cache because you can't remove a mount point, which is
what volumes are inside Docker containers.

MozReview-Commit-ID: GEyNkkX00kN
2017-08-23 08:57:59 -07:00
Gregory Szorc
b185e46c30 Bug 1391476 - Print cache info; r=dustin
For forensic purposes.

MozReview-Commit-ID: 6pcOm90cPdw
2017-08-22 16:48:03 -07:00
Gregory Szorc
b331ebe160 Bug 1391476 - Dedent block; r=dustin
MozReview-Commit-ID: 1l8gWfBNBMs
2017-08-22 12:40:44 -07:00