Публикация и восстановление пакетов Cargo

Сервисы Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

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

Предварительные условия

Продукт Requirements
Azure DevOps Организация Azure DevOps.
— Azure DevOps project.
— Скачайте и установите rustup. Вам нужен Cargo 1.74.0 или более поздней версии.

Создать ленту

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

  1. Войдите в Azure DevOps, а затем перейдите в проект.

  2. Выберите артефакты, затем нажмите Создать канал.

  3. Введите имя веб-канала, выберите его видимость и выберите область. Установите флажок "Вышестоящий источник" , чтобы включить пакеты из общедоступных реестров.

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

Подключение к веб-каналу

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

  1. Войдите в Azure DevOps, а затем перейдите в проект.

  2. Выберите Артефакты, а затем выберите свой канал в раскрывающемся меню.

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

  4. Выполните действия, описанные в разделе настройки Project, чтобы настроить config.toml файл.

  5. На той же странице следуйте инструкциям в разделах Настройка поставщика учетных данных и Вход в реестр, чтобы настроить поставщика учетных данных и подключиться к своему каналу. Подробные инструкции см. в разделе "Cargo - настройка проекта".

Внимание

Для поддержки грузов в Azure Artifacts требуется Rust 1.74 или более поздней версии, которая включает поддержку registry-auth функции. Чтобы обновить версию Rust, выполните команду rustup update

Внимание

В настоящее время Cargo находится на стадии предварительной версии, и для него может потребоваться nightly-цепочка инструментов с включённой функцией registry-authunstable feature. Чтобы включить registry-auth, добавьте следующий параметр в .cargo/config.toml.

[unstable]
registry-auth = true

Чтобы использовать ночной тулчейн, выполните следующую команду:

rustup default nightly

Публикация пакетов

Перед публикацией пакета Cargo убедитесь, что вы выполнили действия, описанные в разделе "Подключение к веб-каналу" для проверки подлинности с помощью веб-канала Azure Artifacts.

В каталоге, содержающем файл Cargo.toml , выполните следующую команду, чтобы опубликовать пакет:

cargo publish

Если возникла GLib-GObject-CRITICAL - libsecret-CRITICAL ошибка, выполните следующие действия.

  1. Убедитесь, что libsecret установлен:

    sudo apt update && sudo apt install libsecret-1-0
    
  2. Убедитесь, что gnome-keyring запущен:

    gnome-keyring-daemon --start --components=secrets
    
  3. Обновите Rust до последней стабильной версии и установите стабильную цепочку инструментов по умолчанию:

    rustup update  
    rustup default stable  
    
  4. Если проблема сохраняется, запустите cargo publish повторно с подробным журналированием, чтобы собрать дополнительные сведения:

    RUST_LOG=debug cargo publish --registry <REGISTRY_NAME>
    

Восстановление пакетов

Перед восстановлением зависимостей убедитесь, что вы выполнили действия, описанные в разделе "Подключение к веб-каналу" для проверки подлинности с помощью веб-канала Azure Artifacts.

  1. Убедитесь, что зависимости перечислены в [dependencies] разделе Cargo.toml файла.

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

    [dependencies]
    CRATE_NAME = { version = "VERSION_NUMBER", registry = "FEED_NAME" }
    
  3. Если вы обращаетесь к crate из crates.io через вышестоящий канал с помощью конфигурации replace-with, укажите их следующим образом:

    [dependencies]
    CRATE_NAME = "VERSION_NUMBER"
    
  4. Выполните следующую команду в каталоге вашего проекта, чтобы собрать проект и восстановить ваши зависимости из источника:

    cargo build
    

Скачанные crates кэшируются локально в ~/.cargo/registry/cache/<registry-hash>/, где registry-hash — это уникальный идентификатор, основанный на URL-адресе вашего канала.