[lucicfg] Allow calling rules inline right where they are referenced.

Rules now return graph.keyset(...) objects that are accepted by other rules.

This is now allowed (but subject to all existing constraints, e.g. name
uniqueness):

    core.builder(
        ...
        recipe = core.recipe(
            ...
        ),
    )

This is in preparation for adding Milo and CQ rules that use "annotated"
many-to-many relations (milo groups <-> builders, CQ ref sets <-> builders).
Each such annotated relation would be represented by a graph node. Requiring
all of them to be declared at the top scope leads to a lot of unnecessary
repetition.

R=tandrii@chromium.org, nodir@chromium.org
BUG=833946

Change-Id: I1bb742d7973ca7f3c419fa843e42ff0e6c965aa5
Reviewed-on: https://chromium-review.googlesource.com/c/1462540
Reviewed-by: Nodir Turakulov <nodir@chromium.org>
Commit-Queue: Vadim Shtayura <vadimsh@chromium.org>
13 files changed
tree: b54e8b30f3fb3926a81ce6b6fc7fb469bcd3aec0
  1. appengine/
  2. auth/
  3. buildbucket/
  4. cipd/
  5. client/
  6. common/
  7. config/
  8. cq/
  9. dm/
  10. examples/
  11. gce/
  12. grpc/
  13. hardcoded/
  14. infra/
  15. logdog/
  16. luci_notify/
  17. lucicfg/
  18. lucictx/
  19. machine-db/
  20. milo/
  21. mmutex/
  22. mp/
  23. scheduler/
  24. scripts/
  25. server/
  26. starlark/
  27. swarming/
  28. tokenserver/
  29. tools/
  30. tumble/
  31. vpython/
  32. web/
  33. .gitattributes
  34. .travis.yml
  35. AUTHORS
  36. codereview.settings
  37. CONTRIBUTING.md
  38. CONTRIBUTORS
  39. LICENSE
  40. OWNERS
  41. pre-commit-go.yml
  42. PRESUBMIT.py
  43. README.md
README.md

luci-go: LUCI services and tools in Go

GoDoc

Installing

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

Contributing uses the same flow as Chromium contributions.