Gitlab CI не работает с частным образом в реестре Gitlab

#git #docker #gitlab #gitlab-ci

#git #docker #gitlab #gitlab-ci

Вопрос:

У меня есть изображение gitlab.com/arxeiss/deployer и проект gitlab.com/arxeiss/my-project с .gitlab-ci.yml файлом:

 deploy:
  image: registry.gitlab.com/arxeiss/deployer
  stage: build
  

Когда я нажимаю на источник, конвейер работает, и изображение успешно извлекается. Но когда кто-то другой нажимает, у кого нет доступа к deployer, выдается эта ошибка: Error response from daemon: pull access denied for registry.gitlab.com/arxeiss/deployer, repository does not exist or may require 'docker login'

Я нашел в документации, которая мне нужна, DOCKER_AUTH_CONFIG и способ ее настройки. Но это означает, что я должен поместить токен аутентификации из docker login и ~/.docker/config.json в переменные CI / CD.

Но это назначено моей учетной записи. Так что кто-то может им воспользоваться, и если я сброшу пароль и т.д. он перестает работать. Есть ли другой способ заставить это работать?

Ответ №1:

Если вы не хотите использовать свои обычные учетные данные, вы можете использовать токен личного доступа или вместо этого развернуть токен — смотрите здесь.

Таким образом, он все равно будет работать, если вы измените свой пароль, и, в качестве бонуса, вы можете отозвать его, не меняя свой обычный пароль.

Комментарии:

1. Итак, вместо моих учетных данных я помещаю токен развертывания в JSON, и это будет работать так же? Это потрясающе. Я попробую это, когда доберусь до ПК

2. Пока токен имеет правильные разрешения, да.

3. Отлично, это работает! Когда я создал токен развертывания с помощью read_registry , я получил имя пользователя и пароль токена. Их мне пришлось преобразовать в Basic Auth и поместить в JSON ( docs.gitlab.com/ee/ci/docker /… — Второй способ). И -n переключение после echo очень важно!