Как использовать аутентифицированное репо в Базеле для сторонних артефактов - PullRequest
1 голос
/ 08 апреля 2020

Мой код зависит от некоторых сторонних артефактов, которые помещаются в какое-либо аутентифицированное хранилище. Файл WORKSPACE выглядит следующим образом:

http_archive(
  name = "glog_archive",
  build_file = "@//:third_party/BUILD.glog",
  sha256 = "SOME SHA ID",
  url = "https://artifactory/thirdparty/glog.<version>.tar.gz",
)

Но репозиторий https://artifactory/thirdparty/ аутентифицирован.

Как я могу указать имя пользователя / пароль или ключ API, чтобы загрузка сторонних архивов работала хорошо?

Прошел через это do c https://docs.bazel.build/versions/master/repo/http.html#http_archive -auth_patterns

Но не смог получить его правильно.

Если есть какой-нибудь пример, который я могу получить?

Спасибо

-Gaurav

1 Ответ

0 голосов
/ 10 апреля 2020

Это зависит от того, как (можно) вы пытаетесь пройти аутентификацию в своем экземпляре артефакта. Если вы используете схему аутентификации HTTP basi c, использующую имя пользователя и пароль (или имя пользователя и ключ API; или имя пользователя и маркер доступа), вам необходимо добавить их к соответствующей записи компьютера в .netrc файл, например:

machine your.artifactory.host
        login YOUR_ARTIFACTORY_USERNAME
        password YOUR_PASSWORD_OR_KEY_OR_TOKEN

Вы можете добавить путь к файлу netrc в одноименном атрибуте http_* правил репозитория. Или bazel будет искать его как ${HOME}/.netrc для системы, отличной от Windows, а совсем недавно (в основной, но еще не в версии 3.0.0) как %USERPROFILE%/.netrc.

Используя только API (с * 1013). *) не поддерживается правилами http_*.

Вам необходимо использовать auth_patterns, только если вы не использовали схему аутентификации basi c. Т.е. вы хотели использовать токен доступа Artifactory в качестве токена на предъявителя. В этом случае вы добавите:

auth_patterns = {
    "your.artifactory.host": "Bearer <password>"
}

Затем вы добавите токен в netrc (см. Выше, нужно ли его явно добавлять в правило или нет):

machine your.artifactory.host
        password YOUR_TOKEN

Как это работает для данного хоста, он берет строку с соответствующим значением auth_patterns, заменяет <login> и <password> (если используется) на значения, полученные для данного хоста из netrc, и передает его как значение для Authorization заголовок. Т.е. в приведенном выше примере:

Authorization: Bearer YOUR_TOKEN
...