Udostępnij za pośrednictwem


Publikowanie pakietów ładunków za pomocą usługi Azure Pipelines

Usługa Azure Pipelines umożliwia deweloperom publikowanie pakietów Cargo w źródłach danych usługi Azure Artifacts i publicznych rejestrach, takich jak Crates.io. W tym artykule dowiesz się, jak publikować pakiety cargo w kanale informacyjnym usługi Azure Artifacts przy użyciu potoków YAML i klasycznych.

Ten artykuł przeprowadzi Cię przez proces wykonywania następujących instrukcji:

  • Tworzenie źródła danych usługi Azure Artifacts
  • Uwierzytelnianie za pomocą usługi Azure Artifacts
  • Publikowanie pakietów towarowych

Wymagania wstępne

Tworzenie kanału informacyjnego

Usługa Azure Artifacts zaleca posiadanie dedykowanego kanału informacyjnego do używania skrzynek z crates.io i oddzielnego kanału informacyjnego wyłącznie do publikowania wewnętrznych skrzynek. Jeśli masz już kanał informacyjny, możesz przejść do następnej sekcji.

  1. Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.

  2. Wybierz pozycję Artefakty, a następnie wybierz pozycję Utwórz kanał informacyjny.

  3. Podaj nazwę kanału informacyjnego, określ jego widoczność, a następnie wybierz zakres kanału informacyjnego.

  4. Po zakończeniu wybierz pozycję Utwórz .

    A screenshot showing how to create a cargo feed for internal packages.

Uwierzytelnianie za pomocą usługi Azure Artifacts

  1. Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.

  2. Wybierz pozycję Artefakty, a następnie wybierz źródło danych.

  3. Wybierz Połączenie do kanału informacyjnego, a następnie wybierz pozycję Ładunek w okienku po lewej stronie.

  4. Postępuj zgodnie z instrukcjami w sekcji Konfiguracja projektu, dodając podany fragment kodu do pliku config.toml w repozytorium źródłowym:

    • Źródło danych o zakresie projektu:

      [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>"
      
    • Kanał informacyjny o zakresie organizacji:

      [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. Utwórz osobisty token dostępu z zakresami odczytu i zapisu pakietów>w celu uwierzytelnienia w kanale informacyjnym.

  6. Użyj zadania CargoAuthenticate, aby uwierzytelnić się z potoku:

    1. Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.

    2. Wybierz pozycję Potoki, wybierz definicję potoku, a następnie wybierz pozycję Edytuj.

    3. Wybierz znak, + aby dodać nowe zadanie. Wyszukaj zadanie Uwierzytelnianie ładunku, a następnie wybierz pozycję Dodaj, aby dodać go do potoku.

    4. Wybierz ikonę wielokropka, aby otworzyć nowe okno z zawartością repozytorium, a następnie wybierz plik config.toml .

      A screenshot showing the Cargo authenticate task in a classic pipeline.

Publikowanie skrzynek do kanału informacyjnego

  1. W projekcie usługi Azure DevOps wybierz pozycję Potoki, wybierz definicję potoku, a następnie wybierz pozycję Edytuj.

  2. + Wybierz zadanie logowania agenta, aby dodać nowe zadanie. Znajdź zadanie programu PowerShell za pomocą funkcji wyszukiwania, a następnie wybierz pozycję Dodaj, aby dodać je do potoku.

  3. Nadaj swojemu zadaniu nazwę, np. Opublikuj, a następnie wybierz pozycję Wbudowany jako typ. Wklej polecenie publikowania w tekście, zastępując symbol zastępczy nazwą źródła danych:

    cargo publish --registry <FEED_NAME>
    

A screenshot showing how to publish crates to and Azure Artifacts feed using a classic pipeline.

Przykład

W tym przykładzie zainstalujemy rustup na agencie, skonfigurujemy zmienną środowiskową PATH, skompilujemy nasz projekt, uwierzytelnimy się przy użyciu usługi CargoAuthenticate, a na koniec opublikujemy naszą skrzynię w naszym kanale informacyjnym usługi 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

Po zakończeniu uruchamiania potoku skrzynia powinna być dostępna w kanale informacyjnym, jak pokazano poniżej:

A screenshot showing the hello-world-cargo crate published to the feed.