次の方法で共有


Crates.io から Cargo パッケージを使用する

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022

Azure Artifacts アップストリーム ソースを使用すると、開発者は Crates.io や nuget.org などのパブリック レジストリからパッケージを使用できます。この記事では、プロジェクトを設定し、コマンド ラインを使用して Crates.io からクレートを使用する方法について説明します。

前提条件

製品 必要条件
Azure DevOps - Azure DevOps 組織
- Azure DevOps プロジェクト
- rustup をダウンロードしてインストールします。 Cargo バージョン 1.74.0 以降が必要です。

フィードの作成

Azure Artifacts では、crates.io からクレートを使用するための専用フィードと、内部クレートの発行専用の別のフィードを用意することをお勧めします。 Azure Artifacts フィードが既にある場合は、次のセクションに進んでください。 それ以外の場合は、次のように新しいものを作成します。

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

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

  3. フィードの 名前 を指定し、[ 表示] を選択してパッケージを表示できるユーザーを定義し、フィードスコープを選択 します。 フィードのアップストリーム ソースを有効にするには、[ 一般的なパブリック ソースからのパッケージを含める ] チェックボックスをオンにします。

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

    Crates.io のアップストリームからクレートを消費するフィードを作成する方法を示すスクリーンショット。

フィードに接続する

フィードが用意されたので、 config.toml ファイルを設定し、資格情報プロバイダーを構成してから、フィードで認証するためにレジストリにログインする必要があります。

プロジェクトの設定

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

  2. [ 成果物] を選択し、ドロップダウン メニューからフィードを選択します。

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

  4. [Project setup]\(プロジェクトのセットアップ\) セクションからスニペットをコピーし、ソース リポジトリの .cargo/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>"
      
  1. Azure DevOps コレクションにサインインし、プロジェクトに移動します。

  2. [ 成果物] を選択し、ドロップダウン メニューからフィードを選択します。

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

  4. [Project setup]\(プロジェクトのセットアップ\) セクションからスニペットをコピーし、ソース リポジトリの .cargo/config.toml ファイルに貼り付けます。 次のようになります。

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

      [registries]
      <FEED_NAME> = { index = "sparse+https://pkgs.dev.azure.com/<COLLECTION_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/<COLLECTION_NAME>/_packaging/<FEED_NAME>/Cargo/index/" }
      
      [source.crates-io]
      replace-with = "<FEED_NAME>"
      

資格情報プロバイダーを構成する

Azure Artifacts で Cargo を使用するには、 資格情報プロバイダーを設定する必要があります。 次の設定では、ユーザーの既定の資格情報ヘルパーが設定されます。

%USERPROFILE%.cargo\config.toml に次のスニペットを貼り付けます。

[registry]
global-credential-providers = ["cargo:token", "cargo:wincred"]

レジストリにログインする

  1. パッケージ化>スコープを使用して個人用アクセス トークンを作成し、フィードで認証します。

  2. 次のコマンドを実行して、レジストリにログインします。 <FEED_NAME>をフィード名に置き換え、昇格したら、前に作成した個人用アクセス トークンを貼り付けます。

    "Basic " + [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("PAT:" + (Read-Host -MaskInput "Enter PAT"))) | cargo login --registry <FEED_NAME>
    

Crates.io からパッケージを保存する

プロジェクトが設定され、資格情報プロバイダーが構成され、フィードで認証されたので、アップストリーム ソースからのパッケージの使用を開始できます。 Azure Artifacts では、アップストリームからフィードにインストールしたパッケージのコピーが自動的に保存されます。

次の例では、HTTP 要求の作成に使用される HTTP クライアント ライブラリである reqwest クレートを使用する方法を示します。

  1. プロジェクト ディレクトリで次のコマンドを実行して、 Cargo.toml に クレートを追加します。

    cargo add reqwest
    
  2. 次のコマンドを実行してプロジェクトをビルドし、クレートを使用します。

    cargo build
    

パッケージがインストールされると、コピーがフィードに保存されます。 これを確認するには、Azure DevOps でフィードに移動します。 次に示すように、パッケージはフィードで使用できる必要があります。

Crates.io から保存された後、Azure Artifacts フィードに一覧表示されている最も新しいクレートを示すスクリーンショット。

Note

アップストリームからパッケージを保存するには、 Feed およびアップストリーム 閲覧者 (コラボレーター) ロール以上が必要です。 詳細については、 フィードのロールとアクセス許可 に関するページを参照してください。