Cargo パッケージの発行と復元

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

Azure Artifactsを使用すると、独自のフィードや crates.io などのパブリック レジストリから Cargo パッケージを発行および復元できます。 Azure Artifactsを使用して、内部クレートのホスト、アップストリーム レジストリへの接続、1 つのフィードからのパッケージ アクセスの管理を行います。 このクイック スタートでは、フィードの作成、Cargo プロジェクトの構成、Azure Artifactsを使用した Cargo パッケージの発行と使用について説明します。

前提条件

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

フィードの作成

既にAzure Artifacts フィードがある場合は、次のセクションに進みます。 それ以外の場合は、次の手順に従ってフィードを作成します。 Azure Artifactsでは、crates.io などのパブリック レジストリからクレートを使用するために 1 つのフィードを使用し、内部クレートを発行するための別のフィードを使用することをお勧めします。

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

  2. Artifacts を選択し、次に フィードを作成 を選択します。

  3. フィードの 名前 を入力し、 その可視性を選択して、スコープを選択 します。 パブリック レジストリのパッケージを含めるには、[ アップストリーム ソース ] チェック ボックスをオンにします。

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

フィードに接続する

フィードからパッケージを発行または復元するには、まず、フィードを認証して接続するようにプロジェクトを構成する必要があります。

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

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

  3. 最初に 接続 を選択してにフィードし、それから左側のナビゲーションペインで Cargo を選択します。

  4. Projectセットアップ セクションの手順に従って、config.toml ファイルを構成します。

  5. 同じページで、 資格情報プロバイダーの構成レジストリへのログイン に関するセクションの手順に従って、資格情報プロバイダーを設定し、フィードに接続します。 詳細な手順については、「 Cargo - プロジェクトのセットアップ」を参照してください。

重要

Azure Artifactsでの貨物のサポートには Rust 1.74 以降が必要です。これには、registry-auth機能のサポートが含まれています。 Rust のバージョンを更新するには、rustup update を実行します。

重要

Cargo は現在プレビュー版であり、registry-auth不安定な機能が有効化されたナイトリー版ツールチェーンが必要になる場合があります。 registry-authを有効にするには、次の設定を .cargo/config.toml に追加します。

[unstable]
registry-auth = true

夜間ツールチェーンを使用するには、次のコマンドを実行します。

rustup default nightly

パッケージの公開

Cargo パッケージを発行する前に、「フィードに接続する」の手順を完了していることを確認して、Azure Artifacts フィードで認証できるようにします。

Cargo.toml ファイルを含むディレクトリから、次のコマンドを実行してパッケージを発行します。

cargo publish

GLib-GObject-CRITICAL - libsecret-CRITICALエラーが発生した場合は、次の手順に従ってください。

  1. libsecret がインストールされていることを確認します。

    sudo apt update && sudo apt install libsecret-1-0
    
  2. gnome-keyring が実行されていることを確認します。

    gnome-keyring-daemon --start --components=secrets
    
  3. Rust を最新の安定バージョンに更新し、既定のツールチェーンとして stable を設定します。

    rustup update  
    rustup default stable  
    
  4. 問題が解決しない場合は、詳細ログを使用して cargo publish を再実行して、詳細を収集します。

    RUST_LOG=debug cargo publish --registry <REGISTRY_NAME>
    

パッケージの復元

依存関係を復元する前に、「フィードに接続する」の手順を完了して、Azure Artifacts フィードで認証できるようにします。

  1. [dependencies] ファイルのCargo.toml セクションに依存関係が表示されていることを確認します。

  2. プライベート Azure Artifacts フィードからクレートを直接使用する場合は、次のようにレジストリを明示的に指定します。

    [dependencies]
    CRATE_NAME = { version = "VERSION_NUMBER", registry = "FEED_NAME" }
    
  3. 構成を使用してアップストリーム フィードを介して replace-with からクレートを参照する場合は、次のように指定します。

    [dependencies]
    CRATE_NAME = "VERSION_NUMBER"
    
  4. プロジェクト ディレクトリで次のコマンドを実行してプロジェクトをビルドし、フィードから依存関係を復元します。

    cargo build
    

ダウンロードしたクレートは ~/.cargo/registry/cache/<registry-hash>/にローカルにキャッシュされます。ここで、 registry-hash はフィード URL に基づく一意の識別子です。