Crates.io のパッケージを使用する
Azure DevOps Services | Azure DevOps Server 2022
Azure Artifacts アップストリーム ソースを使用すると、開発者は Crates.io や nuget.org などのパブリック レジストリからパッケージを使用できます。この記事では、プロジェクトを設定し、コマンド ラインを使用して Crates.io からクレートを使用する方法について説明します。
この記事では、次の方法を通してご案内します。
- Azure Artifacts フィードを作成。
- フィードに接続する
- アップストリームからクレートを使用する
前提条件
Azure DevOps 組織。 まだ組織を作成していない場合は、組織を作成します。
Azure DevOps プロジェクト。 プロジェクトがない場合は プロジェクトを作成します。
rustupをダウンロードしてインストールします。
フィードの作成
Azure Artifacts では、crates.io からクレートを使用するための専用フィードと、内部クレートの発行専用の別のフィードを用意することをお勧めします。
Azure DevOps 組織にサインインしてから、プロジェクトに移動します。
[ Artifacts]\(成果物\) を選択し、フィードを作成します。
フィードの Name を入力し、その Visibilityを定義して、 Scopeを選択します。 パブリック レジストリのパッケージを含めるには、必ず Upstream ソース チェック ボックスをオンにします。
終わったら [作成] を選択します。
フィードに接続する
Azure DevOps 組織にサインインしてから、プロジェクトに移動します。
[ 成果物] を選択し、ドロップダウン メニューからフィードを選択します。
[フィードする接続 を選択し左側のナビゲーション ウィンドウから Cargo を選択します。
Azure Artifacts で Cargo を初めて使用する場合は、 rustupがインストールされていることを確認してください。
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>"
Azure DevOps コレクションにサインインし、プロジェクトに移動します。
[ 成果物] を選択し、ドロップダウン メニューからフィードを選択します。
[フィードする接続 を選択し左側のナビゲーション ウィンドウから Cargo を選択します。
Azure Artifacts で Cargo を初めて使用する場合は、 rustupがインストールされていることを確認してください。
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"]
レジストリにログインする
パッケージ化>読み取り書き込みスコープを使用して個人用アクセス トークンを作成し、フィードで認証します。
次のコマンドを実行して、レジストリにログインします。 プレースホルダーをフィードの名前に置き換え、メッセージが表示されたら前の手順で作成した個人用アクセス トークンを貼り付けます。
"Basic " + [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("PAT:" + (Read-Host -MaskInput "Enter PAT"))) | cargo login --registry <FEED_NAME>
Crates.io からパッケージを保存する
Note
アップストリームからパッケージを保存するには、 Feed およびアップストリーム 閲覧者 (コラボレーター) ロール以上が必要です。 詳細については、「 管理のアクセス許可 を参照してください。
プロジェクトを設定し、資格情報プロバイダーを構成し、フィードにログインしたので、アップストリームからパッケージの使用を開始できます。 Azure Artifacts では、アップストリームからフィードにインストールしたパッケージのコピーが保存されます。
この例では、シリアル化/逆シリアル化フレームワークである serde
クレートを使用します。
プロジェクト ディレクトリで次のコマンドを実行して、 cargo.tomlにクレートを追加します。
cargo add serde
次のコマンドを実行してプロジェクトをビルドし、クレートを使用します。
cargo build
パッケージがインストールされると、コピーがフィードに保存されます。 フィードに移動して、その存在を確認します。 次に示すように、パッケージはフィードで使用できる必要があります。