#continuous-integration #gitlab-ci
#непрерывная интеграция #gitlab-ci
Вопрос:
У меня есть проект (A) с конвейером CI в GitLab. Этот конвейер зависит от пакета из другого проекта (B). Во время сборки проекта A я хочу загрузить пакет из реестра пакетов проекта B. Пакеты загружаются в виде (zip-файлов) общих пакетов. Все проекты являются частными, поэтому мне нужен какой-то токен доступа для аутентификации.
Я пытаюсь использовать токены развертывания, поскольку они, похоже, обеспечивают требуемую область доступа read_package_registry. Однако я не могу найти никакой документации, описывающей, как проходить аутентификацию с помощью токена развертывания при загрузке файлов общего пакета.
Я использую следующий запрос, описанный в предыдущей ссылке.
GET https://gitlab.com/api/v4/projects/<project_B_id>/packages/generic/<package_name>/<package_version>/<package_file>
Я пробовал
- добавление имени пользователя и пароля токена развертывания к URL-адресу, базовая / дайджест-аутентификация
- Добавление заголовка к запросу
PRIVATE-TOKEN: [deploy-token]
- Добавление заголовка к запросу
DEPLOY-TOKEN: [deploy-token]
- Добавление заголовка к запросу
Authorization: Bearer [deploy-token]
- Я также пробовал каждый из приведенных выше заголовков, но в
[deploy-token-username][deploy-token]
качестве значения
Я не могу найти документацию, в которой указано, что я не могу использовать токен развертывания.
У кого-нибудь есть рабочий пример того, как это сделать, или кто-нибудь знает, возможно ли это / невозможно?
Я могу переключиться на токен частного доступа, но я бы предпочел использовать правильный инструмент для этой работы, и, похоже, это токены развертывания.
Ответ №1:
Проблема была поднята в gitlab. Токены развертывания пока не работают. В настоящее время он отслеживается здесь:
https://gitlab.com/gitlab-org/gitlab/-/issues/284397
Обходным путем является использование личного токена доступа.
Ответ №2:
Это работает с Gitlab 13.0. Согласно документации, создайте токен развертывания и укажите имя пользователя и пароль в запросе. Это базовая аутентификация, и с помощью curl вы можете это сделать
curl --user "<deploy-token-username>:<deploy-token>"
"https://gitlab.example.com/api/v4/projects/24/packages/generic/my_package/0.0.1/file.txt"
Похоже, что токены развертывания не работают с PRIVATE-TOKEN
или Authorization
заголовками с токеном на предъявителя.
Ответ №3:
Я тоже искал этот ответ.
Документы (https://docs.gitlab.com/ee/user/packages/generic_packages/index.html#authenticate-to-the-package-registry ) сказать
Для аутентификации в реестре пакетов вам нужен либо личный токен доступа, либо токен задания CI.
Никаких упоминаний о токенах развертывания. Похоже, они ограничены docker, npm и т. Д.
Кроме того, токен задания, который у вас есть в проекте B, позволяет публиковать ваш артефакт. Но токен задания, который у вас есть в проекте A, похоже, не авторизован для его загрузки.
Я считаю, что ответ заключается в том, что вы не можете использовать токен развертывания, но я бы хотел, чтобы оказалось, что это не так.