Базель Создайте несколько целей одновременно - PullRequest
2 голосов
/ 02 февраля 2020

Мне нужно правило Базеля, которое способно создавать сразу несколько целей. В общем, что-то вроде этого:

build_all(
  name = "build_all",
  targets = [
    "//services/service1:build",
    "//services/service2:build",
    "//services/service3:build",
  ]
)

Так что я бы просто запустил

bazel build //:build_all

, чтобы собрать все мои сервисы одной простой командой (и такой же для тестирования). Но я не мог найти какие-либо текущие решения.

Есть ли способ достичь этого?

Ответы [ 2 ]

5 голосов
/ 02 февраля 2020

Может показаться, что filegroup будет готовым правилом, которым можно злоупотреблять для этой цели:

filegroup(
  name = "build_all",
  srcs = [
    "//services/service1:build",
    "//services/service2:build",
    "//services/service3:build",
  ]
)

В противном случае оно позволяет вам дать общее имя для группы файлов (меток) для удобной передачи, но, похоже, работает так же, как и итоговая цель для использования в командной строке.

1 голос
/ 04 февраля 2020

Поскольку я пытался развернуть несколько конфигураций Kubernetes, я в итоге использовал Многообъектные действия для rules_k8s , которые затем выглядят так:

load("@io_bazel_rules_k8s//k8s:objects.bzl", "k8s_objects")

k8s_objects(
   name = "deployments",
   objects = [
      "//services/service1:build",
      "//services/service2:build",
      "//services/service3:build",
   ]
)
...