У нас есть версия GitLab Community.
У нас есть куча проектов в группе. Все они развертываются одинаково, поэтому я хочу использовать определение общего конвейера. Я могу добиться этого, поместив определение конвейера в другой проект в той же группе и используя include:project
для ссылки на него из файлов .gitlab-ci.yml. Все идет нормально.
Теперь моему конвейеру необходимо запустить несколько сценариев PowerShell на этапах развертывания. Я поместил их в тот же проект, что и определение конвейера. Как я могу получить к ним доступ? Я пытаюсь использовать git clone с переменной CI_JOB_TOKEN
. Кажется, он использует этот токен, но возвращает:
Cloning into 'my-deployment'...
remote: You are not allowed to download code from this project.
fatal: unable to access 'https://myserver/mygroup/my-deployment.git/': The requested URL returned error: 403
Что происходит? Я могу включить файлы конвейера .yml в тот же проект, но не могу получить доступ к другим файлам?
Я подозреваю, что это проблема с правами доступа к репозиторию, который вы пытаетесь клонировать. Несколько дней назад я столкнулся с аналогичной проблемой, и оказалось, что для проекта, который пытались клонировать, было включено «Ограничить доступ к этому проекту», а проект, пытающийся клонировать репозиторий, не был в белом списке. Это дало ту же ошибку, что и вы. Вы можете найти этот параметр в «Настройки -> CI/CD -> Токен доступа» для проекта.
Эта ссылка на документацию GitLab также может вам помочь. https://docs.gitlab.com/ee/ci/jobs/ci_job_token.html#add-a-group-or-project-to-the-job-token-allowlist
На самом деле мы сделали следующее:
read_repository
на нужный репозиторий.https://gitlab-ci-token:$MYTOKENVAR@path/to/myrepo.git
Ответ @Alfie, вероятно, является ключом к объяснению, но я думаю, что смысл в том, что мне придется просмотреть каждый проект в группе, устанавливая разрешения, и не забывать делать это каждый раз, когда в группу добавляется новый проект. группу, тогда как переменная может распространяться на всю группу и автоматически наследоваться каждым проектом.
Обновление смотрите в моем комментарии под ответом @Alfie: CI_JOB_TOKEN ограничивался одним проектом.
Да, хорошо. Это Настройки -> CICD -> Доступ к токену (а не «Токен доступа»). Но там я смог отключить «Ограничить доступ к этому проекту», и тогда все заработало как хотелось.