Azure Pipelines で Cargo パッケージを発行する
Azure DevOps Services | Azure DevOps Server 2022
Azure Pipelinesは、開発者がCargo パッケージを Azure Artifacts フィードや Crates.io などのパブリック レジストリに発行します。 この記事では、YAML とクラシック パイプラインの両方を使ってCargo パッケージをAzure Artifactsフィードに公開する方法について説明します。
この記事では、次の方法を通してご案内します。
- Azure Artifacts フィードを作成。
- Azure Artifacts で認証する
- Cargo パッケージを発行する
前提条件
Azure DevOps 組織。 まだ組織を作成していない場合は、組織を作成します。
Azure DevOps プロジェクト。 まだない場合は、プロジェクトを作成します。
フィードの作成
Azure Artifacts では、crates.io からクレートを使用するための専用フィードと、内部クレートの発行専用の別のフィードを用意することをお勧めします。 フィードが既にある場合は、次のセクションに進むことができます。
Azure DevOps 組織にサインインしてから、プロジェクトに移動します。
[ Artifacts]\(成果物\) を選択し、フィードを作成します。
フィードの名前を指定し、その可視性を指定して、フィードのスコープを選択します。
終わったら [作成] を選択します。
Azure Artifacts で認証する
Azure DevOps 組織にサインインしてから、プロジェクトに移動します。
[ Artifacts]\(成果物\) を選択し、フィードを選択します。
[フィードに接続] を選択し、左側のウィンドウから [Cargo] を選択します。
指定したスニペットをソース リポジトリの 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>"
パッケージ化>読み取り書き込みスコープを使用して個人用アクセス トークンを作成し、フィードで認証します。
CargoAuthenticate タスクを使用して、パイプラインから認証します。
クレートをフィードに公開する
Azure DevOpsプロジェクトから、パイプラインを選択し、パイプライン定義を選択し、編集を選択します。
エージェント ジョブの行の [
+
] 記号を選んで、新しいタスクを追加します。 検索機能を使用して PowerShell タスクを検索し、[追加] を選択してパイプラインに追加します。タスクに名前 (発行など) を付け、種類として [インライン] を選択します。 プレースホルダーをフィード名に置き換えて、publish コマンドをインラインで貼り付けます。
cargo publish --registry <FEED_NAME>
例
この例では、エージェントに 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
パイプラインの実行が完了すると、次に示すように、フィードでクレートを使用できるようになります。