Есть ли правило bazel, которое поддерживает публикацию двоичного файла go?

При успешной сборке двоичного файла go (cli) я хотел бы опубликовать двоичный файл в диспетчере репозитория, например. Артифактор. Я нашел различные ссылки на загрузку зависимостей jar, но не нашел ничего конкретного для rules_go

Может кто-то указать мне верное направление?


person Graham Brooks    schedule 13.12.2020    source источник


Ответы (2)


Я не думаю, что есть опубликованная история на ходу. На реализацию # 1372 потребовалось 4 года, вероятно, проще не указывать публикуемую часть Базеля, миссия которого - строить.

person rds    schedule 28.12.2020

Спасибо за ответ. Я продолжал копать и не нашел решения, но пришел к следующему.

def _local_deploy_impl(ctx):
    target = ctx.attr.target
    shell_commands = ""

    for s in ctx.files.srcs:
        shell_commands += "sudo cp %s %s\n" % (s.short_path, target) # <2>

    ctx.actions.write(
        output = ctx.outputs.executable,
        is_executable = True,
        content = shell_commands,
    )
    runfiles = ctx.runfiles(files = ctx.files.srcs)
    return DefaultInfo(
        executable = ctx.outputs.executable,
        runfiles = runfiles,
    )

local_deploy = rule(
    executable = True,
    implementation = _local_deploy_impl,
    attrs = {
        "srcs": attr.label_list(allow_files = True),
        "target": attr.string(default = "/usr/local/bin", doc = "Deployment target directory"),
    },
)

В том числе в файле сборки:

local_deploy(
    name = "install",
    srcs = [":binary"],
)

srcs ссылается на двоичные выходы другого правила, которое будет установлено локально.

Есть предложения по улучшению?

person Graham Brooks    schedule 02.01.2021