次の方法で共有


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

Azure DevOps Services | Azure DevOps Server 2022

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

前提条件

  • Azure DevOps 組織とプロジェクト。 まだ作成していない場合は、組織 または プロジェクト を作成します。

  • Azure Artifacts フィード。 フィード がまだない場合は作成します。

フィードを使用して認証する

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

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

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

  4. Project セットアップ セクションから指定されたスニペットをコピーし、ソース リポジトリの 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>"
      
  5. パッケージ化>スコープを使用して個人用アクセス トークンを作成し、フィードで認証します。

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

  2. パイプラインを選択し、次にパイプライン定義を選択します。

  3. 編集を選択し、次のスニペットを YAML パイプラインに追加します。

    - task: CargoAuthenticate@0
      displayName: 'Cargo Authenticate'
      inputs:
        configFile: '.cargo/config.toml'    ## Path to the config.toml file that specifies the registries you want to work with. Select the file, not the folder e.g. "/.cargo/config.toml"
    

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

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

  2. パイプラインを選択し、その後、のパイプライン定義を選択します。

  3. 編集を選択し、次のスニペットを YAML パイプラインに追加します。

    - powershell: |
       cargo publish --registry <FEED_NAME>        ## Replace the placeholder with your feed name
      env:
        SYSTEM_ACCESSTOKEN: $(system.accesstoken)
    

次の例は、エージェントに 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

パイプライン実行が完了すると、以下に示すように、フィードでクレートが使用できるようになります。

フィードに発行された hello-world-cargo クレートを示すスクリーンショット。