Рубрики
Без рубрики

Развертывание клавиш Gitlab и развертывание токенов для CI / CD

Сценарий: Необходимо установить требование, которое доступно только на частном хранилище, от моего CI … Теги с Gitlab, CI, Python, поэзии.

Сценарий: необходимо установить требование, которое доступно только в частном хранилище, с моего трубопровода CI.

Есть два способа (я нашел), чтобы сделать это, и тот, который вы используете, зависит от того, что вам нужно сделать:

  1. У меня есть простая библиотека без зависимостей или только с общественными зависимостями
  2. У меня есть зависимость, которая зависит от других частных репозиториев

Для контекста и иллюстрации я использовал Gitlab, Python и Poetry.

Простые зависимости: используйте токен развертывания

А Развернуть токен Позволяет получить доступ к репозитории без вашего имени пользователя и пароля или SSH-ключей, и он настроен на репозиторий или группу.

Как:

  1. Добавьте зависимость в файл ваших требований, как обычно
  2. Настройка Развернуть токен на частном репозитории вы хотите получить доступ
  3. Храните пользователя и токен на CI Переменные на репозитории вы получите доступ к частной репозитории из
  4. На сценарии 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 и может быть предоставлен доступ к любому из проектов в этом случае администрацией.

Как:

  1. Добавьте зависимость в файл ваших требований, как обычно
  2. Генерировать ключ SSH
  3. Разверните сгенерированный открытый ключ на любом репо тебе нужно
  4. Настройте 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, у меня есть два варианта:

  1. Развернуть токен : Настройки по проекту или группе я могу добавить информацию токена в переменной CI и манипулировать моим файлом требований для вставки токена.
  2. Развертывание клавиш : Это клавиши SSH, которые могут быть добавлены к любому нужному проекту, либо в любой группе. Мне нужно настроить SSH-Agent на сценарии CI/CD, открытый ключ попадает в настройках репозитория, закрытый ключ попадает в переменную или хранилище CI и использует URL-адрес SSH при необходимости, требуя зависимости.

Посмотрите на полный образец здесь: Используйте развертывающий токен Используйте клавишу развертывания

Оригинал: “https://dev.to/gdledsan/access-a-private-repository-from-gitlab-ci-42mh”