共用方式為


使用 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 進行驗證
  • 發佈貨物套件

必要條件

建立摘要

Azure Artifacts 建議有專用的摘要來取用 crates.io 的箱子,以及專門發佈內部箱的個別摘要。 如果您已經有摘要,您可以繼續進行下一節。

  1. 登入您的 Azure DevOps 組織,然後瀏覽至您的專案。

  2. 選取 [ 成品],然後選取 [ 建立摘要]。

  3. 提供摘要的名稱、指定其可見度,然後選擇摘要的範圍。

  4. 完成後,選取 [建立]

    顯示如何為內部包裹建立貨物飼料的螢幕快照。

使用 Azure Artifacts 進行驗證

  1. 登入您的 Azure DevOps 組織,然後瀏覽至您的專案。

  2. 選取 [ 成品],然後選取您的摘要。

  3. 選取 [ 連線至摘要],然後從左窗格中選取 [貨物 ]。

  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. 使用封裝>讀取和寫入範圍建立個人存取令牌,以向您的摘要進行驗證。

  6. 使用 CargoAuthenticate 工作從管線進行驗證:

    1. 登入您的 Azure DevOps 組織,然後瀏覽至您的專案。

    2. 選取 [管線]、選取您的管線定義,然後選取 [ 編輯]。

    3. +選取符號以新增工作。 搜尋 [貨物驗證] 工作,然後選取 [新增] 將其新增至您的管線。

    4. 選取省略號圖示以開啟顯示存放庫內容的新視窗,然後選擇您的 config.toml 檔案。

      顯示傳統管線中貨物驗證工作的螢幕快照。

將箱子發佈至您的摘要

  1. 從您的 Azure DevOps 專案中,選取 [管線]、選取您的管線定義,然後選取 [ 編輯]。

  2. +選取代理程式作業的登入,以新增工作。 透過搜尋函式尋找PowerShell工作,然後選取 [新增] 將它新增至您的管線。

  3. 為您的工作指定名稱,例如 [發佈],然後選取 [ 內嵌 ] 作為類型。 將發佈命令內嵌貼上,將佔位元取代為您的摘要名稱:

    cargo publish --registry <FEED_NAME>
    

螢幕快照,顯示如何使用傳統管線將箱子發佈至 和 Azure Artifacts 摘要。

範例

在此範例中,我們會在代理程式上安裝 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 箱。