Azure Pipelines で Cargo パッケージを発行する

Azure Pipelinesは、開発者がCargo パッケージを Azure Artifacts フィードや Crates.io などのパブリック レジストリに発行します。 この記事では、YAML とクラシック パイプラインの両方を使ってCargo パッケージをAzure Artifactsフィードに公開する方法について説明します。

この記事では、次の方法を通してご案内します。

  • Azure Artifacts フィードを作成。
  • Azure Artifacts で認証する
  • Cargo パッケージを発行する

前提条件

フィードの作成

Azure Artifacts では、crates.io からクレートを使用するための専用フィードと、内部クレートの発行専用の別のフィードを用意することをお勧めします。 フィードが既にある場合は、次のセクションに進むことができます。

  1. Azure DevOps 組織にサインインしてから、プロジェクトに移動します。

  2. [ Artifacts]\(成果物\) を選択し、フィードを作成します。

  3. フィードの名前を指定し、その可視性を指定して、フィードのスコープを選択します。

  4. 終わったら [作成] を選択します。

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

Azure Artifacts で認証する

  1. Azure DevOps 組織にサインインしてから、プロジェクトに移動します。

  2. [ Artifacts]\(成果物\) を選択し、フィードを選択します。

  3. [フィードに接続] を選択し、左側のウィンドウから [Cargo] を選択します。

  4. 指定したスニペットをソース リポジトリの config.toml ファイルに追加して、[Project セットアップ] セクションの手順に従います。

    • プロジェクト スコープのフィード

      [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. [Pipelines] を選択し、パイプライン定義を選んで、[編集] を選択してください。

    3. + 記号を選び、新しいタスクを追加します。 Cargo 認証タスクを検索し、[追加] を選択してパイプラインに追加します。

    4. 省略記号アイコンを選択して、リポジトリの内容を表示する新しいウィンドウを開き、config.toml ファイルを選択します。

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

クレートをフィードに公開する

  1. Azure DevOpsプロジェクトから、パイプラインを選択し、パイプライン定義を選択し、編集を選択します。

  2. エージェント ジョブの行の [+] 記号を選んで、新しいタスクを追加します。 検索機能を使用して PowerShell タスクを検索し、[追加] を選択してパイプラインに追加します。

  3. タスクに名前 (発行など) を付け、種類として [インライン] を選択します。 プレースホルダーをフィード名に置き換えて、publish コマンドをインラインで貼り付けます。

    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 Artifacts フィードに発行します。

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.