Gitlab CI - композитор устанавливается в частном репо - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь настроить Gitlab CI для проекта, над которым я работаю (PHP - Symfony 4 / MySQL).У меня есть файл .gitlab-ci.ym l, созданный с необходимыми шагами для подготовки образа Docker.Одним из шагов является запуск composer install - обычно следует установить связку кода, некоторые из которых поступают из частных репозиториев (также хранящихся в Gitlab).

Я пытаюсь отработать текущую лучшую практику, позволяющую исполнителю Gitlab CI клонировать этот код из своего частного репозитория.В других сообщениях переполнения стека я вижу ссылку на переменную ${CI_JOB_TOKEN}, но, похоже, отсутствует связующая информация, чтобы заставить ее работать - например, нужно ли мне модифицировать частные репозитории для доступа к этой переменной как токену развертыванияили это происходит автоматически, когда Gitlab клонирует код со своих серверов?

Есть ли у кого-нибудь полный пример файла .gitlab-ci.yml, который может клонировать код из частного репозитория с помощью composer?Если это уместно, есть 4 частных репозитория, которые мне нужно клонировать, и они должны иметь одинаковую настройку CI для многих проектов, использующих эти основанные библиотеки.

1 Ответ

1 голос
/ 28 июня 2019

Мне удалось решить эту проблему после прочтения этой страницы еще несколько раз - https://docs.gitlab.com/ee/user/project/new_ci_build_permissions_model.html

В нем упоминается, что пользователь, который нажимает код, является пользователем, который запускает задачу CI.Используя эти знания и автоматически доступную переменную CI_JOB_TOKEN, я добавил следующее к своему before_script:

git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/".insteadOf "git@gitlab.com:"

..., а затем в своем composer.json добавил список репозиториев Iхотел использовать (используя "repositories": [] ключи, поскольку это позволило мне заставить их использовать https для извлечения вместо ssh, который я использую локально.

Эта комбинация теперь позволяет мне запускать задачи CI и извлекать кодиз частных репозиториев без проблем с разрешениями - нет необходимости в ключах развертывания или токенах.

...