commit | cb94fd9523b01c1b26c29b6408cb5262da0fbe7c | [log] [tgz] |
---|---|---|
author | Vadim Shtayura <vadimsh@chromium.org> | Tue Jan 08 19:29:22 2019 |
committer | Commit Bot <commit-bot@chromium.org> | Tue Jan 08 19:29:22 2019 |
tree | 2640fd25293bb40c96fe2273db4c5fd3afeb30c0 | |
parent | 608ee0461bb9138d2a8e31f1ff60332cd64cf0fb [diff] |
[lucicfg] Add empty core.gitiles_poller, define 'triggers/triggered_by' rels. It's a first instance of polymorphism in lucicfg: 'triggered_by' can refer to either a builder or a gitiles_poller. As additional complication, we allow to refer to builders via either their full names ("<bucket>/<name>") or short names ("<name>"), if the latter is non-ambiguous. Same for gitiles_poller names. This is resolved by introduction of a new internal 'triggerer' node: it is an entity that can be referred to in 'triggered_by' relation. Both 'builder' and 'gitiles_poller' (each) have two 'triggerer' nodes as children: a bucket-scoped one and a global one. This is very similar to 'builder_ref', except the direction of the relation is reversed: a 'builder_ref' has associated builders as children, but 'triggerer' has them as parents. This allows to catch cycles in triggering graphs. For example, a builder that triggers itself produces the following cycle: core.builder_ref('b') -> core.builder('ci/b') -> core.triggerer('ci/b') -> core.builder_ref('b') While such cycle doesn't necessarily mean an invalid configuration, it does have a potential to introduce a positive feedback loop in runtime that can blow everything up, so we forbid them. R=tandrii@chromium.org, nodir@chromium.org BUG=833946 Change-Id: I25b21a51fc2b355a8688182ccf55820c768ee46b Reviewed-on: https://chromium-review.googlesource.com/c/1394188 Commit-Queue: Vadim Shtayura <vadimsh@chromium.org> Reviewed-by: Nodir Turakulov <nodir@chromium.org>
LUCI Go code is meant to be worked on from an Chromium infra.git checkout, which enforces packages versions and Go toolchain version. First get fetch via depot_tools.git then run:
fetch infra cd infra/go eval `./env.py` cd src/go.chromium.org/luci
Contributing uses the same flow as Chromium contributions.