New issue
Advanced search Search tips

Issue 917525 link

Starred by 2 users

Issue metadata

Status: Started
Owner:
Cc:
Components:
EstimatedDays: 2
NextAction: ----
OS: Chrome
Pri: 1
Type: Feature

Blocking:
issue 917502



Sign in to add a comment

Start a "mini-annealing" builder publishing manifest snapshots

Project Member Reported by la...@chromium.org, Dec 21

Issue description

In order to help unblock Findit integration, set up a luci-scheduler-triggered "mini-annealing" builder. This builder will just sync to ToT and publish a manifest snapshot; no uprevs or any other work needed.

Lets push to the public chromiumos/manifest repo; I just created a "annealing-test" branch.

Bonus points if we can work with Andrii to figure out how to make the "only snapshot if all the dependencies are synced" requirement work.
 
Cc: gmeinke@chromium.org
Labels: Pri-2
The FindIt integration is blocked on the Post-Submit builder, not the Annealing builder. And there will be no relationship between FindIt and Annealing after the integration is completed. It's fine to start an Annealing builder now but it's not related to the FindIt work. gmeinke@ is working on the post-submit builder manifest update. I would prioritize starting Annealing in favor of higher priority tasks.

CrOS-side work and blockers is documented here: https://docs.google.com/document/d/1DzryIRCLkMUzDdzmvl8PCdjxhtM3QYc3bXUNEESALto/edit

I would *de*prioritize starting Annealing in favor of higher priority tasks.

Correct, this is output of a meeting Lann and I had today. The post-submit builder work can't wait for Annealing and will progress independently.
What "SLoC" will findit bisect without the annealing snapshots?
Cc: st...@chromium.org
The post-submit LKGM will trigger FindIt since that's the only one that will have "good" and "bad" signals to initiate the work. That will be true both before and after PCQ launch.

Before the launch, FindIt will do temporal bisection of our repo tree with an understanding of our CQ-DEPEND added in. I don't know if FindIt already understands branch commits or not. After launch, the configuration is the same with the caveat the Post-Submit is doing the same thing, just using Recipes.

The problem with just relying on Annealing is that kernel commits have hundreds of CL's in them and land at the same time. (So a single Annealing "step" would be hundreds of CL's.) We will need to bisect within that merge commit to identify the culprit. So, if we are building that capability, we might as well just use that logic throughout.

If addition of CQ-DEPEND or merge bisection becomes too difficult, we can certainly start with the Annealing snapshots as a first step. We'd eventually have to sub-Annealing bisection, though.

Cc: tandrii@chromium.org
Labels: -Pri-2 Pri-1
Status: Started (was: Assigned)
Andrii, have you done any work on following our CQ-DEPEND commit message annotations? That might be reusable between LUCI CQ and Chromite, but it's not that hard a problem if we just want to do our own things (if CQ and our Recipe/Chromite code are too different).

This is all work that must be done on the annealing builder irrespective of Findit, I don't see why it would be deprioritized.
athilenius@ i did only parsing CQ-Depends, but for old deprecated design. I didn't intend to write truly re-usable standalone component, but I could.
I expect to do this work next week between meetings with CrOS folks. I'll cc you on the CLs. SG?
I thought more about whether we should do temporal bisection or rely on the annealing manifest over vacation. On further consideration, it seems like doing the annealing manifest would be easier and quicker than temporal bisection. We can have stgao@'s team look at temporal bisection as a follow-on, since we'll have to do both. So, I retract my objection to prioritizing this soonish.

tandrii@ That's alright, I think it's simple enough that it's fine to duplicate. Plus this use case is sufficiency different as to make reuse a pain anyway.
Project Member

Comment 10 by bugdroid1@chromium.org, Jan 4

Labels: merge-merged-config
The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chromeos/manifest-internal/+/d6b7ef85b2a4a262ea6e3d91d421cda3ace83667

commit d6b7ef85b2a4a262ea6e3d91d421cda3ace83667
Author: Alec Thilenius <athilenius@google.com>
Date: Fri Jan 04 17:44:34 2019

Project Member

Comment 11 by bugdroid1@chromium.org, Jan 4

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/infra/recipes/+/9cdab5729d6b2ba659025b29b2399e824979b805

commit 9cdab5729d6b2ba659025b29b2399e824979b805
Author: Alec Thilenius <athilenius@google.com>
Date: Fri Jan 04 17:51:37 2019

Cleaned up the annealing recipe.

Cleaned up the annealing recipe a bit in prep for creating a
mini-annealing recipe.

Bug: 917525

Change-Id: I413dc4921730cdb14fc3d5da8e92d83d17ce4341
Reviewed-on: https://chromium-review.googlesource.com/c/1392739
Commit-Queue: Alec Thilenius <athilenius@google.com>
Tested-by: Alec Thilenius <athilenius@google.com>
Reviewed-by: Alec Thilenius <athilenius@google.com>

[modify] https://crrev.com/9cdab5729d6b2ba659025b29b2399e824979b805/recipes/annealing.py

Project Member

Comment 12 by bugdroid1@chromium.org, Jan 4

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/infra/recipes/+/84406d59a4c664b06be8e42f97af6d427ef7aade

commit 84406d59a4c664b06be8e42f97af6d427ef7aade
Author: Alec Thilenius <athilenius@google.com>
Date: Fri Jan 04 17:51:38 2019

Add a mini-annealing recipe

Add a mini-annealing recipe that is a stripped down annealing recipe.
This is also running in dryrun but will be switched on once the LUCI
scheduler is setup for it.

Bug: 917525
Change-Id: I6233f053442b82bea7903881ff9aa66edfa94661
Reviewed-on: https://chromium-review.googlesource.com/c/1392740
Reviewed-by: Jason Clinton <jclinton@chromium.org>
Tested-by: Alec Thilenius <athilenius@google.com>
Commit-Queue: Alec Thilenius <athilenius@google.com>

[modify] https://crrev.com/84406d59a4c664b06be8e42f97af6d427ef7aade/README.recipes.md
[add] https://crrev.com/84406d59a4c664b06be8e42f97af6d427ef7aade/recipes/mini_annealing.expected/basic.json
[add] https://crrev.com/84406d59a4c664b06be8e42f97af6d427ef7aade/recipes/mini_annealing.py

> I don't know if FindIt already understands branch commits or not
No. Findit currently works on master branch only.

athilenius@: do we have a build (running the mini-annealing recipe) that are triggered through buildbucket already?
Cc: chanli@chromium.org
stgao@ No but it's close (days). The plan is to trigger it from LUCI Scheduler though, which in turn creates Buildbucket builds.

The last missing chunk is checking that CQ-DEPEND is met for all CLs before committing snapshots, which involves diffing the manifest, walking the commits in each repo, and checking with Gerrit to make sure their deps landed into the local checkout. Right now it's manually triggered and fails most of the time :p
Project Member

Comment 16 by bugdroid1@chromium.org, Jan 9

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/infra/recipes/+/2eb41f0e72ee0bbb5e40f30b7a5b296062dcabd8

commit 2eb41f0e72ee0bbb5e40f30b7a5b296062dcabd8
Author: Alec Thilenius <athilenius@google.com>
Date: Wed Jan 09 20:25:51 2019

Add launch_mini_annealing script

Bug: 917525
Change-Id: I539ffa564d07ba405b72abf828f0fed1af9e7154
Reviewed-on: https://chromium-review.googlesource.com/c/1403139
Commit-Queue: Alec Thilenius <athilenius@google.com>
Tested-by: Alec Thilenius <athilenius@google.com>
Reviewed-by: Lann Martin <lannm@chromium.org>

[add] https://crrev.com/2eb41f0e72ee0bbb5e40f30b7a5b296062dcabd8/contrib/launch_mini_annealing.sh

Project Member

Comment 17 by bugdroid1@chromium.org, Jan 9

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/infra/recipes/+/32e0be6d98dffa22801bd2c294bdf7c431ffdfa0

commit 32e0be6d98dffa22801bd2c294bdf7c431ffdfa0
Author: Alec Thilenius <athilenius@google.com>
Date: Wed Jan 09 20:59:24 2019

Fix git diff_check

The git diff-index command didn't do what I thought it did. The git
ls-files command seems to have been what I was after.

Bug: 917525

Change-Id: I80c56d8ddbb231995becf50607a9806ae2c809e8
Reviewed-on: https://chromium-review.googlesource.com/c/1403135
Reviewed-by: Lann Martin <lannm@chromium.org>
Commit-Queue: Alec Thilenius <athilenius@google.com>
Tested-by: Alec Thilenius <athilenius@google.com>

[modify] https://crrev.com/32e0be6d98dffa22801bd2c294bdf7c431ffdfa0/recipes/annealing.expected/basic.json
[modify] https://crrev.com/32e0be6d98dffa22801bd2c294bdf7c431ffdfa0/recipe_modules/git_txn/examples/full.expected/basic.json
[modify] https://crrev.com/32e0be6d98dffa22801bd2c294bdf7c431ffdfa0/recipes/mini_annealing.expected/basic.json
[modify] https://crrev.com/32e0be6d98dffa22801bd2c294bdf7c431ffdfa0/recipe_modules/git_txn/examples/full.expected/retry succeed.json
[modify] https://crrev.com/32e0be6d98dffa22801bd2c294bdf7c431ffdfa0/recipe_modules/git_txn/examples/full.py
[modify] https://crrev.com/32e0be6d98dffa22801bd2c294bdf7c431ffdfa0/README.recipes.md
[modify] https://crrev.com/32e0be6d98dffa22801bd2c294bdf7c431ffdfa0/recipe_modules/git/examples/full.expected/basic.json
[modify] https://crrev.com/32e0be6d98dffa22801bd2c294bdf7c431ffdfa0/recipe_modules/git/api.py
[modify] https://crrev.com/32e0be6d98dffa22801bd2c294bdf7c431ffdfa0/recipe_modules/git_txn/examples/full.expected/update ref has diff.json
[modify] https://crrev.com/32e0be6d98dffa22801bd2c294bdf7c431ffdfa0/recipe_modules/git/examples/full.expected/detached HEAD.json

Project Member

Comment 19 by bugdroid1@chromium.org, Jan 9

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/infra/recipes/+/35c87fe018d5335c926bdd426353dfd03d02c614

commit 35c87fe018d5335c926bdd426353dfd03d02c614
Author: Alec Thilenius <athilenius@google.com>
Date: Wed Jan 09 21:41:15 2019

Add an XML diff for manifest paths

Add a diff_manifest method to repo recipe module to diff two manifests
and return an array of changes. Also renamed the old `diffmanifest` to
`diff_manifest_informational`.

Bug: 917525
Change-Id: I2fc94df51d49bca211f2cd5c999d920f6c0b1887
Reviewed-on: https://chromium-review.googlesource.com/c/1403954
Commit-Queue: Alec Thilenius <athilenius@google.com>
Tested-by: Alec Thilenius <athilenius@google.com>
Reviewed-by: Lann Martin <lannm@chromium.org>

[modify] https://crrev.com/35c87fe018d5335c926bdd426353dfd03d02c614/README.recipes.md
[modify] https://crrev.com/35c87fe018d5335c926bdd426353dfd03d02c614/recipe_modules/repo/examples/full.py
[modify] https://crrev.com/35c87fe018d5335c926bdd426353dfd03d02c614/recipe_modules/repo/api.py

Project Member

Comment 20 by bugdroid1@chromium.org, Jan 10

EstimatedDays: 2
Quick update on this, once crrev.com/c/1412239, crrev.com/c/1412238, and crrev.com/c/1412237 land this "should" be very close to being completed. The last run (including patch crrev.com/c/1412684) was https://ci.chromium.org/swarming/task/426c3d29ab880810?server=chrome-swarming.appspot.com which looks close to correct, although concerned about the `git log` steps.

TL;DR: 1-2 days assuming the last few issues are easy to iron out.
Project Member

Comment 22 by bugdroid1@chromium.org, Jan 17 (5 days ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/infra/recipes/+/f6812dea8baed1c929dbf61eef293d24c05b0246

commit f6812dea8baed1c929dbf61eef293d24c05b0246
Author: Alec Thilenius <athilenius@google.com>
Date: Thu Jan 17 18:16:07 2019

Add ref_exists method to git recipe module

Add `ref_exists` method to the git recipe module which checks if the
given ref exists in the current branch. Also fixed `log` which was using
an incorrect format for the `--pretty` flag.

Bug: 917525
Change-Id: I0f4edfdcf418fd6139bf3327225cc2454731ff7e
Reviewed-on: https://chromium-review.googlesource.com/c/1412237
Reviewed-by: Lann Martin <lannm@chromium.org>
Commit-Queue: Alec Thilenius <athilenius@google.com>
Tested-by: Alec Thilenius <athilenius@google.com>

[modify] https://crrev.com/f6812dea8baed1c929dbf61eef293d24c05b0246/recipe_modules/git/examples/full.py
[modify] https://crrev.com/f6812dea8baed1c929dbf61eef293d24c05b0246/README.recipes.md
[modify] https://crrev.com/f6812dea8baed1c929dbf61eef293d24c05b0246/recipe_modules/git/examples/full.expected/basic.json
[modify] https://crrev.com/f6812dea8baed1c929dbf61eef293d24c05b0246/recipe_modules/git/examples/full.expected/detached HEAD.json
[modify] https://crrev.com/f6812dea8baed1c929dbf61eef293d24c05b0246/recipe_modules/git/api.py

Project Member

Comment 23 by bugdroid1@chromium.org, Jan 17 (5 days ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/infra/recipes/+/f75ba06d39e9c8ac2b6b6108710777b7d503aeb2

commit f75ba06d39e9c8ac2b6b6108710777b7d503aeb2
Author: Alec Thilenius <athilenius@google.com>
Date: Thu Jan 17 18:36:07 2019

Add test_output_data property to support call method.

Add `test_output_data` property to the `call` method of the `support` recipe
module. This allows an object to be passed back from the call in the
case of unit testing.

Bug: 917525
Change-Id: Ibbaf0161629cbc38562833b6b00e2db1054c52a3
Reviewed-on: https://chromium-review.googlesource.com/c/1412238
Reviewed-by: Lann Martin <lannm@chromium.org>
Commit-Queue: Alec Thilenius <athilenius@google.com>
Tested-by: Alec Thilenius <athilenius@google.com>

[modify] https://crrev.com/f75ba06d39e9c8ac2b6b6108710777b7d503aeb2/recipe_modules/support/api.py
[modify] https://crrev.com/f75ba06d39e9c8ac2b6b6108710777b7d503aeb2/README.recipes.md

Project Member

Comment 24 by bugdroid1@chromium.org, Today (12 hours ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/infra/recipes/+/22ad32bfcd4c61068c7b7e84c304bf3490a94deb

commit 22ad32bfcd4c61068c7b7e84c304bf3490a94deb
Author: Alec Thilenius <athilenius@google.com>
Date: Tue Jan 22 18:41:15 2019

Add depends recipe module and update mini-annealing builder

Add a `depends` recipe module which supports checking that all
depends annotations (which I can't write out in this commit message
or CQ barfs) in all CLs between two manifests are checked out
locally. Updated the mini-annealing builder to use this check.

This is the last chunk needed for the mini-annealing builder (modulo any
oversights and/or bugs).

Bug: 917525
Change-Id: I251fb4d687733d258e64feaa4d4545bb61caa2ab
Reviewed-on: https://chromium-review.googlesource.com/c/1412239
Commit-Queue: Alec Thilenius <athilenius@google.com>
Tested-by: Alec Thilenius <athilenius@google.com>
Reviewed-by: Lann Martin <lannm@chromium.org>

[modify] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipes/annealing.expected/basic.json
[add] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/depends/api.py
[add] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/depends/examples/full.expected/basic.json
[add] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/depends/examples/full.py
[modify] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/repo/api.py
[add] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/depends/examples/full.expected/has fulfilled dep.json
[add] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/depends/__init__.py
[modify] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/README.recipes.md
[modify] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/repo/examples/full.expected/setup_repo.json
[add] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/depends/examples/full.expected/missing from XML.json
[modify] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/repo/examples/full.py
[add] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/depends/examples/full.expected/has missing dep.json
[modify] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipes/mini_annealing.expected/basic.json
[modify] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipes/mini_annealing.py

Project Member

Comment 25 by bugdroid1@chromium.org, Today (12 hours ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/infra/recipes/+/22ad32bfcd4c61068c7b7e84c304bf3490a94deb

commit 22ad32bfcd4c61068c7b7e84c304bf3490a94deb
Author: Alec Thilenius <athilenius@google.com>
Date: Tue Jan 22 18:41:15 2019

Add depends recipe module and update mini-annealing builder

Add a `depends` recipe module which supports checking that all
depends annotations (which I can't write out in this commit message
or CQ barfs) in all CLs between two manifests are checked out
locally. Updated the mini-annealing builder to use this check.

This is the last chunk needed for the mini-annealing builder (modulo any
oversights and/or bugs).

Bug: 917525
Change-Id: I251fb4d687733d258e64feaa4d4545bb61caa2ab
Reviewed-on: https://chromium-review.googlesource.com/c/1412239
Commit-Queue: Alec Thilenius <athilenius@google.com>
Tested-by: Alec Thilenius <athilenius@google.com>
Reviewed-by: Lann Martin <lannm@chromium.org>

[modify] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipes/annealing.expected/basic.json
[add] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/depends/api.py
[add] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/depends/examples/full.expected/basic.json
[add] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/depends/examples/full.py
[modify] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/repo/api.py
[add] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/depends/examples/full.expected/has fulfilled dep.json
[add] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/depends/__init__.py
[modify] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/README.recipes.md
[modify] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/repo/examples/full.expected/setup_repo.json
[add] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/depends/examples/full.expected/missing from XML.json
[modify] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/repo/examples/full.py
[add] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipe_modules/depends/examples/full.expected/has missing dep.json
[modify] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipes/mini_annealing.expected/basic.json
[modify] https://crrev.com/22ad32bfcd4c61068c7b7e84c304bf3490a94deb/recipes/mini_annealing.py

Sign in to add a comment