Сценарий: необходимо установить требование, которое доступно только в частном хранилище, с моего трубопровода CI.
Есть два способа (я нашел), чтобы сделать это, и тот, который вы используете, зависит от того, что вам нужно сделать:
- У меня есть простая библиотека без зависимостей или только с общественными зависимостями
- У меня есть зависимость, которая зависит от других частных репозиториев
Для контекста и иллюстрации я использовал Gitlab, Python и Poetry.
Простые зависимости: используйте токен развертывания
А Развернуть токен Позволяет получить доступ к репозитории без вашего имени пользователя и пароля или SSH-ключей, и он настроен на репозиторий или группу.
Как:
- Добавьте зависимость в файл ваших требований, как обычно
- Настройка Развернуть токен на частном репозитории вы хотите получить доступ
- Храните пользователя и токен на CI Переменные на репозитории вы получите доступ к частной репозитории из
- На сценарии CI заполните токен развертывания, используя переменные CI.
Пример:
Зависимость от pyproject.toml.
[tool.poetry.dependencies] python = "^3.9" private-project = {git = "ssh://git@gitlab.com/mundo03/sample-private-repo.git", rev = "main"}
Обратите внимание, что URL SSH хранится, чтобы вы не должны использовать Личный доступ Токен Каждый раз, когда вы устанавливаете ваши зависимости локально.
Gitlab-Ci.yml.
image: python:3.9-buster poetry_token: script: # Install Poetry - pip install poetry # setup string replacement - export SSH_URL=ssh:\\/\\/git@gitlab.com\\/mundo03 - export TOKEN_URL=https:\\/\\/$deploy_user:$deploy_token@gitlab.com\\/mundo03 - sed -i "s/$SSH_URL/$TOKEN_URL/g" pyproject.toml # Install repo - poetry install # Use Clonned Repo - poetry run print_something "LOOK AT ME!!"
Обратите внимание Sed
Используется для замены URL-адреса SSH с помощью HTTP URL, который имеет развертывание токена в нем.
Комплексные зависимости: используйте клавишу развертывания
Развертывание клавиш Также предоставьте вам доступ к репозитории с помощью вашего имени пользователя и пароля или SSH клавиши, это ключ SSH, который вы генерируете, и его необходимо использовать на нескольких репозиториях, на нескольких группах.
Есть также Общественные развертывающие ключи Настройка на уровне экземпляра Gitlab и может быть предоставлен доступ к любому из проектов в этом случае администрацией.
Как:
- Добавьте зависимость в файл ваших требований, как обычно
- Генерировать ключ SSH
- Разверните сгенерированный открытый ключ на любом репо тебе нужно
- Настройте SSH-Agent на скрипте CI
Пример
Зависимость от pyproject.toml.
[tool.poetry.dependencies] python = "^3.9" private-project = {git = "ssh://git@gitlab.com/mundo03/sample-private-repo.git", rev = "main"}
Gitlab-Ci.yml.
image: python:3.9-buster poetry_key: script: # Install OS dependencies - apt-get update -y -qq && apt-get install -y -qq make openssh-client python3-pip # Start ssh-agent - eval $(ssh-agent -s) # Add Private key to SSH Agent - ssh-add <(echo "$SSH_PK") # Add gitlab as known host - mkdir -p ~/.ssh - chmod 700 ~/.ssh - ssh-keyscan gitlab.com >> ~/.ssh/known_hosts # Install Poetry - pip install poetry # Install repo - poetry install # Use Clonned Repo - poetry run print_something "LOOK AT ME!!"
Введите хранилище
Переменные CI – не лучший способ хранить секрет, для этого Gitlab есть Секреты , который предназначен для хранения таких вещей, как SSH-ключи, пароли и т. Д.
Читайте: Секреты Спойлеры: Вам нужен аккаунт Hashicorp
TL; доктор
У меня есть зависимость в моем проекте, которое размещено на частном репозитории, мне нужно установить его во время моего CI/CD, у меня есть два варианта:
- Развернуть токен : Настройки по проекту или группе я могу добавить информацию токена в переменной CI и манипулировать моим файлом требований для вставки токена.
- Развертывание клавиш : Это клавиши SSH, которые могут быть добавлены к любому нужному проекту, либо в любой группе. Мне нужно настроить SSH-Agent на сценарии CI/CD, открытый ключ попадает в настройках репозитория, закрытый ключ попадает в переменную или хранилище CI и использует URL-адрес SSH при необходимости, требуя зависимости.
Посмотрите на полный образец здесь: Используйте развертывающий токен Используйте клавишу развертывания
Оригинал: “https://dev.to/gdledsan/access-a-private-repository-from-gitlab-ci-42mh”