Reland "[bbagent] use cached cipd client if possible"

This is a reland of commit 97d54a83734ad2fa5bad6dd196ad14525cc985f1

With a fix to append absolute paths of the cipd client to $PATH.

Original change's description:
> [bbagent] use cached cipd client if possible
>
> When bbagent installs cipd client:
> - If `cipd_client` named cache is set in the build (build.Infra.Buildbucket.Agent.CipdClientCache)
>   - First check if there's a cached one in the cache dir, if yes, use it
>   - if no, download and install the cipd client into the cache dir
> - If no cache is specified
>   - download and install the cipd client into task dir
>
> Also update $PATH with the the cipd client dir
>
> Bug: 1507142
> Change-Id: I13491ce03404bbc9d167e7df1cefa13efbced8a1
> Reviewed-on: https://chromium-review.googlesource.com/c/infra/luci/luci-go/+/5106625
> Reviewed-by: Randy Maldonado <randymaldonado@google.com>
> Reviewed-by: Yuanjun Huang <yuanjunh@google.com>
> Commit-Queue: Chan Li <chanli@chromium.org>

Bug: 1507142
Change-Id: Iba297033c788129158f20556681b8a3a1d809832
Reviewed-on: https://chromium-review.googlesource.com/c/infra/luci/luci-go/+/5118239
Reviewed-by: Yuanjun Huang <yuanjunh@google.com>
Commit-Queue: Chan Li <chanli@chromium.org>
4 files changed
tree: e652468e5c7b4821bfbe4b73bfd6baed0e8a5799
  1. analysis/
  2. appengine/
  3. auth/
  4. auth_service/
  5. bisection/
  6. build/
  7. buildbucket/
  8. casviewer/
  9. cipd/
  10. cipkg/
  11. client/
  12. common/
  13. config/
  14. config_service/
  15. cv/
  16. deploy/
  17. examples/
  18. gae/
  19. gce/
  20. grpc/
  21. hardcoded/
  22. led/
  23. logdog/
  24. luci_notify/
  25. lucicfg/
  26. lucictx/
  27. luciexe/
  28. mailer/
  29. milo/
  30. mmutex/
  31. provenance/
  32. resultdb/
  33. scheduler/
  34. scripts/
  35. server/
  36. standalone/
  37. starlark/
  38. swarming/
  39. third_party/
  40. tokenserver/
  41. tools/
  42. tree_status/
  43. vpython/
  44. web/
  45. .gitallowed
  46. .gitattributes
  47. .gitignore
  48. .go-lintable
  49. AUTHORS
  50. codereview.settings
  51. CONTRIBUTING.md
  52. CONTRIBUTORS
  53. go.mod
  54. go.sum
  55. LICENSE
  56. OWNERS
  57. PRESUBMIT.py
  58. README.md
  59. tools.go
  60. WATCHLISTS
README.md

luci-go: LUCI services and tools in Go

GoReference

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

It is now possible to directly install tools with go install:

go install go.chromium.org/luci/auth/client/cmd/...@latest
go install go.chromium.org/luci/buildbucket/cmd/...@latest
go install go.chromium.org/luci/cipd/client/cmd/...@latest
go install go.chromium.org/luci/client/cmd/...@latest
go install go.chromium.org/luci/cv/cmd/...@latest
go install go.chromium.org/luci/gce/cmd/...@latest
go install go.chromium.org/luci/grpc/cmd/...@latest
go install go.chromium.org/luci/logdog/client/cmd/...@latest
go install go.chromium.org/luci/luci_notify/cmd/...@latest
go install go.chromium.org/luci/lucicfg/cmd/...@latest
go install go.chromium.org/luci/luciexe/legacy/cmd/...@latest
go install go.chromium.org/luci/mailer/cmd/...@latest
go install go.chromium.org/luci/mmutex/cmd/...@latest
go install go.chromium.org/luci/resultdb/cmd/...@latest
go install go.chromium.org/luci/server/cmd/...@latest
go install go.chromium.org/luci/swarming/cmd/...@latest
go install go.chromium.org/luci/tokenserver/cmd/...@latest
go install go.chromium.org/luci/tools/cmd/...@latest

Contributing

Contributing uses the same flow as Chromium contributions.