다음을 통해 공유


Crates.io 화물 패키지 사용

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

Azure Artifacts 업스트림 원본을 사용하면 개발자가 Crates.io 및 nuget.org 같은 공용 레지스트리의 패키지를 사용할 수 있습니다. 이 문서에서는 프로젝트를 설정하고 명령줄을 사용하여 Crates.io 크레이트를 사용하는 방법을 안내합니다.

필수 조건

제품 요구 사항
Azure DevOps - 하나의 Azure DevOps 조직.
- Azure DevOps 프로젝트.
- rustup 다운로드하고 설치합니다. Cargo 버전 1.74.0 이상이 필요합니다.

피드 만들기

Azure Artifacts는 crates.io에서 크레이트를 가져오기 위한 전용 피드와 내부 크레이트를 게시하기 위한 별도의 피드를 사용하는 것이 좋습니다. Azure Artifacts 피드가 이미 있는 경우 다음 섹션으로 건너뜁니다. 그렇지 않으면 다음과 같이 새 새로 만듭니다.

  1. Azure DevOps 조직에 로그인한 다음, 프로젝트로 이동합니다.

  2. 아티팩트를 선택한 다음, 피드 만들기를 선택합니다.

  3. 피드의 이름을 제공하고, 표시 유형을 선택하여 패키지를 볼 수 있는 사용자를 정의하고, 피드 범위를 선택합니다. 피드에서 업스트림 원본을 사용하도록 설정하려면 공용 공용 원본의 패키지 포함 확인란을 선택합니다.

  4. 완료되면 만들기를 선택합니다.

    Crates.io 업스트림에서 상자를 사용하는 피드를 만드는 방법을 표시하는 스크린샷.

피드에 연결

이제 피드가 있으므로 config.toml 파일을 설정하고 자격 증명 공급자를 구성한 다음 레지스트리에 로그인하여 피드로 인증해야 합니다.

프로젝트 설정

  1. Azure DevOps 조직에 로그인한 다음, 프로젝트로 이동합니다.

  2. 아티팩트를 선택한 후 드롭다운 메뉴에서 피드를 선택합니다.

  3. 피드에 연결을 선택한 다음 왼쪽 탐색 창에서 Cargo를 선택합니다.

  4. 프로젝트 설정 섹션에서 코드 조각을 복사하여 원본 리포지토리의 .cargo/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>"
      
  1. Azure DevOps 컬렉션에 로그인한 다음, 프로젝트로 이동합니다.

  2. 아티팩트를 선택한 후 드롭다운 메뉴에서 피드를 선택합니다.

  3. 피드에 연결을 선택한 다음 왼쪽 탐색 창에서 Cargo를 선택합니다.

  4. 프로젝트 설정 섹션에서 코드 조각을 복사하여 원본 리포지토리의 .cargo/config.toml 파일에 붙여넣습니다. 다음과 유사하게 표시됩니다.

    • 프로젝트별 피드:

      [registries]
      <FEED_NAME> = { index = "sparse+https://pkgs.dev.azure.com/<COLLECTION_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/<COLLECTION_NAME>/_packaging/<FEED_NAME>/Cargo/index/" }
      
      [source.crates-io]
      replace-with = "<FEED_NAME>"
      

자격 증명 공급자 구성

Azure Artifacts에서 Cargo를 사용하려면 자격 증명 공급자를 설정해야 합니다. 다음 설정은 사용자의 기본 자격 증명 도우미를 설정합니다.

다음 코드 조각을 %USERPROFILE%.cargo\config.toml에 붙여넣습니다.

[registry]
global-credential-providers = ["cargo:token", "cargo:wincred"]

레지스트리에 로그인

  1. 패키징개인 액세스 토큰을 만들어 피드로 인증합니다.

  2. 다음 명령을 실행하여 레지스트리에 로그인합니다. <FEED_NAME> 피드 이름으로 바꾸고 승격되면 이전에 만든 개인용 액세스 토큰을 붙여넣습니다.

    "Basic " + [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("PAT:" + (Read-Host -MaskInput "Enter PAT"))) | cargo login --registry <FEED_NAME>
    

Crates.io 패키지 저장

프로젝트가 설정되고 자격 증명 공급자가 구성되고 피드로 인증되었으므로 업스트림 원본에서 패키지 사용을 시작할 수 있습니다. Azure Artifacts는 업스트림에서 피드에 설치한 패키지의 복사본을 자동으로 저장합니다.

다음 예제에서는 HTTP 요청을 만드는 데 사용되는 HTTP 클라이언트 라이브러리인 reqwest 크레이트를 이용하는 방법을 보여 줍니다.

  1. 프로젝트 디렉터리에서 다음 명령을 실행하여 Cargo.toml 에 상자를 추가합니다.

    cargo add reqwest
    
  2. 다음 명령을 실행하여 프로젝트를 빌드하고 크레이트를 소비합니다.

    cargo build
    

패키지가 설치되면 복사본이 피드에 저장됩니다. Azure DevOps에서 피드로 이동하여 이를 확인할 수 있습니다. 아래와 같이 피드에서 패키지를 사용할 수 있어야 합니다.

Crates.io에서 저장한 후 Azure Artifacts 피드에 나열된 reqwest 크레이트를 보여주는 스크린샷

참고사항

업스트림에서 패키지를 저장하려면 피드 및 업스트림 판독기(협력자) 역할 이상이 있어야 합니다. 자세한 내용은 피드 역할 및 사용 권한을 참조하세요.