Руководство. Упаковка частной зависимости Azure DevOps

В этом руководстве описано, как создать порт наложения для библиотеки, размещенной в частном репозитории Azure DevOps, охватывая настройку проверки подлинности и упаковку в наложение.

Необходимые условия:

  • Базовое понимание Git и vcpkg.
  • Доступ к Azure DevOps с разрешениями на создание проектов и управление ключами SSH.
  • vcpkg установлен в системе.
  • Git, установленный в вашей системе.

1. Создание частного проекта

  1. Войдите в учетную запись Azure DevOps
  2. Создайте частный проект. Если у вас нет организации, вам будет предложено создать ее во время процесса создания проекта.
    • Присвойте проекту имя: выберите понятное имя, которое отражает вашу библиотеку или ее назначение.

    • Видимость. Убедитесь, что для управления доступом для проекта задано значение Private.

      New Project

2. Настройка проверки подлинности в Azure DevOps

Безопасный доступ к репозиторию с помощью ключей SSH.

  1. Создание пары ключей SSH

    • Откройте терминал или командную строку.

    • Выполните следующую команду:

      ssh-keygen -t rsa -b 4096 -C "ADO-RSA" -f /path/to/.ssh/id_rsa_ado
      
      • -t rsa: указывает тип ключа для создания, в данном случае RSA.
      • -b 4096: задает количество битов в ключе, в данном случае 4096, которое считается сильным и безопасным.
      • -C "ADO-RSA": добавляет метку в ключ для идентификации, что может быть особенно полезно при наличии нескольких ключей.
      • -f /path/to/.ssh/id_rsa_ado: указывает имя файла для нового ключа. Эта команда сохраняет закрытый ключ в id_rsa_ado и открытый ключ id_rsa_ado.pub.

      Вам будет предложено ввести парольную фразу для дополнительной безопасности. Можно ввести парольную фразу или нажать клавишу ВВОД, чтобы продолжить без нее. Парольная фраза добавляет дополнительный уровень безопасности, требуя ввода парольной фразы всякий раз, когда используется ключ.

    • После создания ключа убедитесь, что новый ключ создается, включив содержимое /.ssh/ каталога еще раз:

      ls /path/to/.ssh
      
  2. Добавление ключа SSH в Azure DevOps

    • id_rsa_ado.pub Откройте файл с текстовым редактором, чтобы просмотреть открытый ключ.

    • Скопируйте все содержимое файла.

    • Перейдите к открытому ключу SSH Параметры > пользователя.

      User Settings > SSH Public Keys

    • Добавьте новый ключ, вставив скопированное содержимое и назовите ключ для будущей ссылки.

      Add the Key

  3. Загрузите ключ SSH в агент SSH.

    Убедитесь, что ключ SSH доступен для проверки подлинности:

    ssh-add /path/to/.ssh/id_rsa_ado
    
  4. Проверка подключения SSH

    Проверьте подключение к Azure DevOps:

    ssh -T git@ssh.dev.azure.com
    

    Ожидается сообщение, указывающее на успешную проверку подлинности, но отмечая, что доступ к оболочке не поддерживается.

    ssh -T git@ssh.dev.azure.com
    remote: Shell access is not supported.
    shell request failed on channel 0
    

3. Отправка библиотеки в репозиторий Azure DevOps

  1. Инициализация локального репозитория Git

    Перейдите в каталог исходного кода библиотеки и инициализируйте репозиторий Git:

    git init
    
  2. Зафиксируйте и зафиксируйте исходный код библиотеки:

    git add .
    git commit -m "Initial commit of the sample library"
    
  3. Ссылка на репозиторий Azure DevOps

    Получите URL-адрес SSH репозитория из Azure DevOps и добавьте его как удаленный:

    SSH URL

    git remote add origin <Your-Repo-SSH-URL>
    
  4. Отправка библиотеки

    Отправьте библиотеку в репозиторий Azure DevOps:

    git push -u origin master:main
    

4. Упаковка библиотеки в порт наложения

Порты наложения позволяют использовать локальные порты с vcpkg.

  1. Создание каталога портов наложения

    mkdir vcpkg-overlay-ports
    cd vcpkg-overlay-ports
    
  2. Настройка файлов портов

  • vcpkg.json: этот файл манифеста определяет метаданные и зависимости библиотеки.

    Отказ. В следующих примерах используются заполнители. Замените их фактическими данными.

    {
        "name": "your-library-name",
        "version": "1.0.0",
        "description": "Description of your library.",
        "dependencies": []
    }
    

    Файл vcpkg.json служит манифестом, определяющим метаданные и зависимости библиотеки C++, предоставляя vcpkg необходимые сведения для сборки, установки и управления пакетом.

    • name: указывает имя библиотеки. Это используется в качестве идентификатора пакета.
    • version: указывает номер версии библиотеки.
    • description: краткий текст, описывающий то, что делает библиотека. Это предназначено для документации и пользователей.
    • dependencies: массив, содержащий список зависимостей, необходимых библиотеке.

    Дополнительные сведения о настройке проверка vcpkg.jsonнашей справочной документации.

  • portfile.cmake : этот скрипт сообщает vcpkg, как создать библиотеку.

    vcpkg_from_git(
        OUT_SOURCE_PATH SOURCE_PATH
        URL "git@ssh.dev.azure.com:v3/YourOrg/YourProject/YourRepo"
        REF "<commit-sha>"
    )
    
    vcpkg_cmake_configure(SOURCE_PATH "${SOURCE_PATH}")
    vcpkg_cmake_install()
    vcpkg_cmake_config_fixup(PACKAGE_NAME your-library-name)
    file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/your-library-name")
    

    Этот портфайл определяет, как скачать, построить, установить и упаковать определенную библиотеку C++ из GitHub с помощью vcpkg.

    • vcpkg_from_git: запускает функцию для скачивания исходного кода из репозитория Git.
    • OUT_SOURCE_PATH SOURCE_PATH: задает каталог, в котором будет извлечен исходный код.
    • URL git@ssh.dev.azure.com:v3/YourOrg/YourProject/YourRepo: URL-адрес SSH для репозитория, содержащего исходный код.
    • REF <commit-sha>: фиксация SHA кода библиотеки в Azure DevOps.
    • vcpkg_cmake_configure: настраивает проект с помощью CMake, настраивая сборку.
      • SOURCE_PATH "${SOURCE_PATH}": путь к исходному коду, скачанный ранее.
    • vcpkg_cmake_install(): создает и устанавливает пакет с помощью CMake.
    • vcpkg_cmake_config_fixup(PACKAGE_NAME your-library-name): исправляет файлы конфигурации пакета CMake, совместимые с Vcpkg.
    • file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION ...): устанавливает файл LICENSE в общий каталог пакета и переименовывает его в авторские права.

    Чтобы получить фиксацию SHA, выполните следующие действия:

    mkdir temp && cd temp
    git init
    git fetch <Your-Repo-SSH-URL> main --depth 1 -n
    git rev-parse FETCH_HEAD
    

    Дополнительные сведения о настройке проверка portfile.cmakeследующих статей:

  1. Установка порта

    Вернитесь в основной каталог vcpkg, установите библиотеку, указав каталог портов наложения:

    vcpkg install your-library-name --overlay-ports=/path/to/vcpkg-overlay-ports
    

Next Steps

Вы успешно упаковали частный репозиторий Azure DevOps в качестве порта vcpkg. Это руководство предназначено в качестве руководства; Адаптируйте инструкции в соответствии с конкретной библиотекой и средой разработки.