On Tue, Sep 13, 2016 at 1:02 PM, Dustin Mitchell <dus...@mozilla.com> wrote:
> I think many of the concerned people were flagged for r? on bug > 1286075, but for everyone else, it's landed in inbound today. > > If you haven't mucked around with the configuration of which > TaskCluster tasks run for pushes, and how they run, then you can tune > out now. > > If you have a project that I've rudely said "please wait until I land > this", then now is your chance! > > The changes were pretty wide-spread, but the upshot is this: > taskcluster/ci/legacy is gone, as as all of the yaml files with their > weird inheritance hierarchies. In their place is a better > implementation that should be more semantic and easier to modify or > extend. This is well documented under http://gecko.readthedocs.io/ > (or will be once it lands in central). > > Please send any questions my way, as always! > Dustin undersells the importance of his work. So let me try. Essentially what Dustin did was rewrite the in-tree automation scheduling code to make it simpler and easier to hack on. It is kinda like going from Makefile.in files to moz.build files. You can now drop a .yml file into a directory and TaskCluster will start running automation for it and the results will show up in Treeherder. For example, to add a new linter, simply add an entry to https://hg.mozilla.org/integration/mozilla-inbound/file/82d0a583a9a39bf0b0000bccbf6d5c9ec2596bcc/taskcluster/ci/source-check/mozlint.yml. You don't need any help from anyone to add new tasks: just add a few lines of YAML and it runs. We had this before. However, there was a pile of inheritance and spaghetti code. With the rewrite, each job/task type (build, desktop test, linter, etc) has a well-defined type and behavior and the Python code that converts it from YAML to what automation schedules is pretty easy to follow and debug. It abstracts many of the complexities away from YAML so people who only care about defining new tasks or tweaking existing ones can do so without as much head scratching. This work builds upon Dustin's earlier work of converting the in-tree scheduling code to use a graph data structure to represent tasks. This allows us to do crazy things like say define a task to build the Rust toolchain that is a dependency of the build task so that any time we change how the Rust toolchain is built, we automatically build the Rust toolchain and feed its output into the build task. This makes deterministic and reproducible builds much easier to achieve. It also essentially makes TaskCluster a distributed build system. And that makes me giddy. Dustin's work and the overall work to convert things to TaskCluster are an incredible transformation from the days where you had to define buildbot configs on a server somewhere and couldn't easily add or experiment with new automation. Everything is in tree and developers are in almost complete control to modify [TaskCluster] automation to their heart's content. It is really quite amazing. _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform