Cargo 패키지 게시 및 복원

Azure DevOps 서비스 | Azure DevOps Server | Azure DevOps Server 2022

Azure Artifacts 사용하여 사용자 고유의 피드 및 공용 레지스트리(예: crates.io)에서 Cargo 패키지를 게시하고 복원할 수 있습니다. Azure Artifacts 사용하여 내부 상자를 호스트하고, 업스트림 레지스트리에 연결하고, 단일 피드에서 패키지 액세스를 관리합니다. 이 빠른 시작에서는 피드를 만들고, Cargo 프로젝트를 구성하고, Azure Artifacts 사용하여 Cargo 패키지를 게시하고 사용하는 방법을 안내합니다.

필수 조건

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

피드 만들기

Azure Artifacts 피드가 이미 있는 경우 다음 섹션으로 이동합니다. 그렇지 않으면 다음 단계에 따라 피드를 만듭니다. Azure Artifacts는 crates.io와 같은 공용 레지스트리의 crate를 사용하는 데는 하나의 피드를, 내부 crate를 게시하는 데는 별도의 피드를 사용할 것을 권장합니다.

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

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

  3. 피드의 이름을 입력하고 표시 유형을 선택한 다음 범위를 선택합니다. 공용 레지스트리의 패키지를 포함하도록 업스트림 원본 확인란을 선택해야 합니다.

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

피드에 연결

피드에서 패키지를 게시하거나 복원하려면 먼저 피드를 인증하고 연결하도록 프로젝트를 구성해야 합니다.

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

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

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

  4. Project 설정 섹션의 단계에 따라 파일을 구성합니다config.toml.

  5. 동일한 페이지에서 자격 증명 공급자 구성 의 지침에 따라 레지스트리 섹션에 로그인하여 자격 증명 공급자를 설정하고 피드에 연결합니다. 자세한 단계는 Cargo - 프로젝트 설정을 참조하세요.

중요

Azure Artifacts의 Cargo 지원을 사용하려면 registry-auth 기능 지원이 포함된 Rust 1.74 이상이 필요합니다. 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를 안정적인 최신 버전으로 업데이트하고 안정을 기본 도구 체인으로 설정합니다.

    rustup update  
    rustup default stable  
    
  4. 문제가 계속되면 추가 세부 정보를 수집할 수 있도록 cargo publish를 상세 로깅과 함께 다시 실행하세요.

    RUST_LOG=debug cargo publish --registry <REGISTRY_NAME>
    

패키지 복원

종속성을 복원하기 전에 Azure Artifacts 피드를 사용하여 인증할 수 있도록 피드에 연결의 단계를 완료했는지 확인합니다.

  1. 종속성이 Cargo.toml 파일의 [dependencies] 섹션에 나열되어 있는지 확인하세요.

  2. 프라이빗 Azure Artifacts 피드에서 크레이트를 직접 사용하는 경우 다음과 같이 레지스트리를 명시적으로 지정하세요.

    [dependencies]
    CRATE_NAME = { version = "VERSION_NUMBER", registry = "FEED_NAME" }
    
  3. replace-with 구성을 사용해 업스트림 피드를 통해 crates.io의 크레이트를 참조하는 경우 다음과 같이 지정하세요.

    [dependencies]
    CRATE_NAME = "VERSION_NUMBER"
    
  4. 프로젝트 디렉터리에서 다음 명령을 실행하여 프로젝트를 빌드하고 피드에서 종속성을 복원합니다.

    cargo build
    

다운로드한 상자는 로컬로 ~/.cargo/registry/cache/<registry-hash>/캐시됩니다. 여기서 registry-hash 는 피드 URL을 기반으로 하는 고유 식별자입니다.