Bazel очищает только подмножество кэшированных правил

В настоящее время я разрабатываю монорепозиторий с довольно большим файлом рабочей области.

Прямо сейчас я отмечаю, что одно из моих правил тестирования не перестраивает свои правила зависимостей, когда я обновляю один из своих тестов. Вот пример этого:

      load("@npm//@grafana/toolkit:index.bzl", "grafana_toolkit")
load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin")

APPLICATION_DEPS = glob(
    [   
        # My updated test file is included in this glob
        "src/**/*", 
    ],
) + [
    "my-config-files.json"
]

RULE_DEPS = [
    "@npm//@grafana/data",
    "@npm//@grafana/ui",
    "@npm//emotion",
    "@npm//fs-extra",
]

copy_to_bin(
    name = "bin_files",
    srcs = APPLICATION_DEPS,
)


grafana_toolkit(
    name = "test",
    args = [
        "plugin:test",
    ],
    chdir = package_name(),
    data = RULE_DEPS + [
        ":bin_files",
    ],
)

Затем у меня есть файл с именем возможно something.test.ts. я бегу bazel run :testи мой тест может показать, что я потерпел неудачу, и я вижу проблему и исправляю ее. Проблема в том, что в следующий раз, когда я запускаю свой тест, я вижу из вывода, что он все еще не работает, потому что он запускает старый тест вместо нового.

Проблема

Способ, которым я обычно исправляю такого рода проблемы с устаревшими файлами, которые не обновляются, заключается в запуске . Проблема в том, что делать bazel cleanзначит я убираю ВСЕ. И это делает повторный запуск всех шагов сборки чертовски долгим. Мне интересно, есть ли способ указать, что я очищаю только подмножество кеша (возможно, только вывод моего bin_filesправило, например). Таким образом, вместо того, чтобы начинать все сначала, я перестраиваю только то, что хочу перестроить.

1 ответ

На самом деле я нашел довольно быстрый и простой способ сделать то, о чем я изначально просил, - это просто перейти кbazel-binкаталог и удалите вывод любого правила, которое я хочу повторно запустить. Так что, возможно, в этом случае я мог бы удалить вывод в моем каталоге bazel-bin, а затем запустить свойbin_filesправило снова.

С учетом сказанного, я думаю, что @ahumsky может быть прав в том, что если вам нужно это сделать, это, скорее всего, ошибка в чем-то другом. В моем случае я запускал сборную версию своего правила вместо тестовой. Таким образом, очистка подмножества моего кеша на самом деле не имела ничего общего с моей первоначальной проблемой.

Другие вопросы по тегам