Сценарий: необходимо установить требование, которое доступно только в частном хранилище, с моего трубопровода 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”