Open Bug 1878157 Opened 2 years ago Updated 1 month ago

Decouple test packaging from build tasks

Categories

(Firefox Build System :: Task Configuration, enhancement)

enhancement

Tracking

(Not tracked)

People

(Reporter: ahal, Unassigned)

References

(Blocks 1 open bug)

Details

As of bug 1752677 we'll have the ability to re-use tasks from a previous try push. One of the more obvious use cases of this would be to run a single build, and then iterate on a test that depends on that build quickly.

The problem is that the test tasks also depend on the builds for the tests.zip artifacts, which contain the test in question. This means if you were iterating on a test, your test tasks would still use the old version of the test that comes from the build.

Aki had the idea to split the test packaging step out of the build and into a standalone task. So we'd have a graph like:

push ------> build ------------> test
     \-----> test_zip_task ---/

This way we could replace the builds, but not replace the tasks that package up tests. Imo having tasks that adhere to the single responsibility principle is a good thing in general and has further potential benefits. For example, it'll make builds faster for cases where the test package isn't needed (e.g a release pipeline).

What if we stop packaging tests and have test tasks clone the repo? I guess that's a more invasive change and might affect runtimes?

It would be a killer on Windows, where very often a clone takes > 30 minutes (especially true on try)

One aspect of this is that the build configuration has an effect of what tests are packaged. Also, some of the test files are compiled. So you'd need as many of those tasks as there are build types.

How about allowing mach try --artifact to do artifact builds using artifacts from another push?

See Also: → 1628981

Andrew, can you weight in about Mike's proposal in comment 2? I'm willing to help some, I'm currently debugging performance tests, and the debugging cycle is extremely long because of PGO. Or any other idea you'd have to speed my case up, or anything.

Flags: needinfo?(ahal)

I like that idea too, it's probably a "yes and" type of thing with this bug rather than either or (I don't see any reason not to split test packaging out of the build).

My only problem with Mike's idea is that I don't know how to implement it :)

Flags: needinfo?(ahal)

(In reply to Andrew Halberstadt [:ahal] from comment #4)

I like that idea too, it's probably a "yes and" type of thing with this bug rather than either or (I don't see any reason not to split test packaging out of the build).

My only problem with Mike's idea is that I don't know how to implement it :)

If you set MOZ_ARTIFACT_TASK* appropriately, you'd end up with binaries from a pre-existing task and test (packages) from the current push. It's not clear to me that's better than clever use of --use-existing-tasks, which kinda-sorta should achieve the same thing.

You need to log in before you can comment on or make changes to this bug.