共用方式為


使用 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. 選取 [ 成品],然後選取您的摘要。

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

  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"
    

將 crate 發佈至 feed

  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 箱。