Поделиться через


Публикация пакетов Cargo с помощью Azure Pipelines

Azure Pipelines позволяет разработчикам публиковать свои пакеты Cargo в веб-каналах Azure Artifacts и общедоступных реестрах, таких как Crates.io. В этой статье вы узнаете, как опубликовать пакеты Cargo в веб-канале Артефактов Azure с помощью yamL и классических конвейеров.

В этой статье описано, как:

  • Создание веб-канала артефактов Azure
  • Проверка подлинности с помощью артефактов Azure
  • Публикация пакетов Cargo

Необходимые компоненты

Создание веб-канала

Azure Artifacts рекомендует использовать выделенный веб-канал для использования контейнеров из crates.io и отдельного канала исключительно для публикации внутренних ящиков. Если у вас уже есть веб-канал, перейдите к следующему разделу.

  1. Войдите в организацию Azure DevOps и перейдите к проекту.

  2. Выберите артефакты и нажмите кнопку "Создать веб-канал".

  3. Укажите имя веб-канала, укажите его видимость, а затем выберите область для веб-канала.

  4. После завершения работы выберите Создать.

    A screenshot showing how to create a cargo feed for internal packages.

Проверка подлинности с помощью артефактов Azure

  1. Войдите в организацию Azure DevOps и перейдите к проекту.

  2. Выберите артефакты и выберите веб-канал.

  3. Выберите Подключение для канала, а затем выберите Cargo в левой области.

  4. Следуйте инструкциям в разделе "Настройка проекта", добавив предоставленный фрагмент кода в файл config.toml в исходном репозитории:

    • Веб-канал Project-область d:

      [registries]
      <FEED_NAME> = { index = "sparse+https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/Cargo/index/" }
      
      [source.crates-io]
      replace-with = "<FEED_NAME>"
      
    • Веб-канал область организации:

      [registries]
      <FEED_NAME> = { index = "sparse+https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/Cargo/index/" }
      
      [source.crates-io]
      replace-with = "<FEED_NAME>"
      
  5. Создайте личный маркер доступа с помощью область упаковки>и записи, чтобы пройти проверку подлинности с помощью веб-канала.

  6. Используйте задачу CargoAuthenticate для проверки подлинности из конвейера:

    1. Войдите в организацию Azure DevOps и перейдите к проекту.

    2. Выберите конвейеры, выберите определение конвейера и нажмите кнопку "Изменить".

    3. + Выберите знак, чтобы добавить новую задачу. Найдите задачу "Проверка подлинности грузов" и нажмите кнопку "Добавить", чтобы добавить ее в конвейер.

    4. Щелкните значок многоточия, чтобы открыть новое окно, отображающее содержимое репозитория, а затем выберите файл config.toml .

      A screenshot showing the Cargo authenticate task in a classic pipeline.

Публикация контейнеров в веб-канале

  1. В проекте Azure DevOps выберите Pipelines, выберите определение конвейера и нажмите кнопку "Изменить".

  2. + Выберите вход в задание агента, чтобы добавить новую задачу. Найдите задачу PowerShell с помощью функции поиска и нажмите кнопку "Добавить", чтобы добавить ее в конвейер.

  3. Присвойте задаче имя, например опубликовать, а затем выберите Inline в качестве типа. Вставьте встроенную команду публикации, заменив заполнитель именем веб-канала:

    cargo publish --registry <FEED_NAME>
    

A screenshot showing how to publish crates to and Azure Artifacts feed using a classic pipeline.

Пример

В этом примере мы установим rustup на агенте, настроим переменную среды PATH, создадим проект, проверим проверку подлинности с помощью CargoAuthenticate и, наконец, опубликуем наш ящик в канале Артефактов Azure:

trigger:
- main

pool:
  vmImage: windows-latest

steps:
- powershell: |
   Invoke-WebRequest -Uri https://sh.rustup.rs -OutFile rustup-init.sh
   bash .\rustup-init.sh -y
   echo "##vso[task.prependpath]$env:USERPROFILE\.cargo\bin"
  displayName: Install

- task: CargoAuthenticate@0
  displayName: 'cargo Authenticate'
  inputs:
    configFile: '.cargo/config.toml'

- script: |
   cargo build --all
  displayName: Build

- powershell: |
   cargo publish --registry CargoInternalFeed
  displayName: Publish

После завершения выполнения конвейера в веб-канале должен быть доступен ваш ящик, как показано ниже:

A screenshot showing the hello-world-cargo crate published to the feed.