GitLab не будет клонировать из репозитория в той же группе проектов

У нас есть версия 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 в тот же проект, но не могу получить доступ к другим файлам?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
112
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я подозреваю, что это проблема с правами доступа к репозиторию, который вы пытаетесь клонировать. Несколько дней назад я столкнулся с аналогичной проблемой, и оказалось, что для проекта, который пытались клонировать, было включено «Ограничить доступ к этому проекту», а проект, пытающийся клонировать репозиторий, не был в белом списке. Это дало ту же ошибку, что и вы. Вы можете найти этот параметр в «Настройки -> CI/CD -> Токен доступа» для проекта.

Эта ссылка на документацию GitLab также может вам помочь. https://docs.gitlab.com/ee/ci/jobs/ci_job_token.html#add-a-group-or-project-to-the-job-token-allowlist

Да, хорошо. Это Настройки -> CICD -> Доступ к токену (а не «Токен доступа»). Но там я смог отключить «Ограничить доступ к этому проекту», и тогда все заработало как хотелось.

EdH 03.07.2024 06:41

На самом деле мы сделали следующее:

  1. Создайте новый токен доступа с правами read_repository на нужный репозиторий.
  2. Сохраните значение токена доступа в переменной, доступной для конвейера, который должен выполнить клонирование. Замаскируйте его значение, чтобы оно не отображалось в журналах.
  3. Укажите значение предопределенной переменной gitlab-ci-token.. Например: https://gitlab-ci-token:$MYTOKENVAR@path/to/myrepo.git

Ответ @Alfie, вероятно, является ключом к объяснению, но я думаю, что смысл в том, что мне придется просмотреть каждый проект в группе, устанавливая разрешения, и не забывать делать это каждый раз, когда в группу добавляется новый проект. группу, тогда как переменная может распространяться на всю группу и автоматически наследоваться каждым проектом.

Обновление смотрите в моем комментарии под ответом @Alfie: CI_JOB_TOKEN ограничивался одним проектом.

Другие вопросы по теме