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


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

Azure DevOps Services | Azure DevOps Server 2022

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

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

  • Организация Azure DevOps и проект. Создайте организацию или проект , если вы еще не сделали этого.

  • Поток артефактов Azure. Создайте ленту новостей, если у вас еще нет.

Аутентификация через ленту данных

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

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

  3. Выберите "Подключиться к каналу" и выберите "Cargo " в левой области.

  4. Скопируйте предоставленный фрагмент из раздела установки проекта и добавьте его в файл config.toml в исходном репозитории. Файл должен выглядеть следующим образом:

    • Веб-канал с областью действия проекта:

      [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. Создайте личный маркер доступа с областями чтения и записи для>проверки подлинности в веб-канале.

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

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

  3. Выберите Изменить, а затем добавьте следующий фрагмент в конвейер YAML.

    - task: CargoAuthenticate@0
      displayName: 'Cargo Authenticate'
      inputs:
        configFile: '.cargo/config.toml'    ## Path to the config.toml file that specifies the registries you want to work with. Select the file, not the folder e.g. "/.cargo/config.toml"
    

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

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

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

  3. Выберите Изменить, а затем добавьте следующий фрагмент в конвейер YAML.

    - powershell: |
       cargo publish --registry <FEED_NAME>        ## Replace the placeholder with your feed name
      env:
        SYSTEM_ACCESSTOKEN: $(system.accesstoken)
    

Пример

В следующем примере показано, как установить 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

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

Снимок экрана: ящик hello-world-cargo, опубликованный в канале.