NuGet.exe 사용하여 명령줄에서 NuGet 패키지 게시

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

이 문서에서는 두 가지 인증 흐름인 Azure Artifacts 자격 증명 공급자와 다른 조직에서 호스트되는 피드에 대한 PAT(개인 액세스 토큰)를 사용하여 피드에 연결하고 패키지를 게시하는 방법을 안내합니다.

필수 구성 요소

  • Azure DevOps 조직입니다.
  • Azure DevOps 프로젝트입니다.
  • Azure Artifacts 피드입니다.
  • nuget.exe 버전 4.8.0.5385 이상. Azure Artifacts 최상의 호환성 및 안정성을 위해 NuGet 5.5.x 이상을 권장합니다.
  • 패키지를 게시하려면 Feed Publisher (Contributor) 이상이어야 합니다.

Azure Artifacts 자격 증명 공급자 설정

Azure Artifacts 자격 증명 공급자를 사용하면 Azure Artifacts 피드에 대한 보안 인증이 가능합니다. nuget.exe사용하려면 먼저 NuGet의 플러그 인 검색 경로에 추가해야 합니다. 자세한 내용은 플러그 인 설치 및 검색을 참조하세요. 플러그 인이 추가되면 운영 체제에 대한 설치 단계를 따릅니다.

다음 방법 중 하나를 사용하여 Azure Artifacts 자격 증명 공급자를 설치합니다.

수동 설치

  1. 최신 Microsoft.NetFx48.NuGet.CredentialProvider.zip 릴리스를 다운로드합니다.

  2. zip 파일을 추출합니다.

  3. 압축 해제된 파일에서 netfx 폴더를 %UserProfile%/.nuget/plugins/에 복사합니다. netfx 폴더는 nuget.exe 호환성을 위해 필요합니다.

도우미 스크립트를 사용하여 설치

또는 자동화된 도우미 스크립트를 사용하여 간소화된 설치를 수행할 수 있습니다. PowerShell 5.1 이상이 있는지 확인하고 다음을 실행합니다.

iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) } -AddNetfx"

자세한 내용은 Azure Artifacts 자격 증명 공급자 리포지토리를 참조하세요.

피드에 연결

패키지를 게시하기 전에 다음과 같이 프로젝트를 설정하고 피드에 연결합니다.

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

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

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

  4. 프로젝트에 nuget.config 파일을 추가하세요. 이 파일은 .csproj 또는 .sln 파일과 같은 폴더에 있어야 합니다. 제공된 XML 코드 조각을 파일에 붙여넣습니다. 코드 조각은 다음과 같습니다.

    • 조직 범위 피드:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
    • 프로젝트 범위 피드:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
  1. Azure DevOps 서버에 로그인한 다음 프로젝트로 이동합니다.

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

  3. "피드에 연결한 다음, 왼쪽 탐색 창에서 NuGet.exe를 선택합니다."

  4. nuget.config 프로젝트나 파일과 동일한 폴더 .csproj.sln 에 파일을 추가한 다음 제공된 XML 코드 조각을 파일에 붙여넣습니다.

동일한 조직의 피드에 게시

Azure Artifacts 자격 증명 공급자를 사용하여 구성 nuget.config 하고 인증한 후 다음 명령을 실행하여 피드에 패키지를 게시합니다. 자리 표시자를 적절한 값으로 바꿉다.

nuget push <PACKAGE_PATH> -Source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -ApiKey <ANY_STRING>

Example:

nuget push MyPackage.5.0.2.nupkg -Source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json -ApiKey AZ

메모

Azure Artifacts 자격 증명 공급자는 푸시에 대한 실제 인증을 처리하지만 NuGet은 명령을 수락하는 데 여전히 값이 필요합니다-ApiKey. Azure Artifacts 제공한 값을 무시하므로 아무 것도 없는 문자열이 작동합니다.

다른 조직의 피드에 게시

대상 피드가 다른 Azure DevOps 조직에 있는 경우 해당 조직에서 PAT를 만들고 피드를 파일의 원본으로 추가합니다nuget.config.

  1. 패키징>읽기 및 쓰기 범위를 사용하여 대상 조직에서 PAT(개인용 액세스 토큰)를 만듭니다.

  2. 다음 명령을 실행하여 피드를 원본으로 추가합니다. 이 명령은 사용자의 PAT를 nuget.config에 추가하므로 파일을 안전하게 보관하고 소스 제어에 체크인하지 마세요.

    nuget sources Add -Name <SOURCE_NAME> -Source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -UserName <USER_NAME> -Password <PERSONAL_ACCESS_TOKEN> -config <PATH_TO_NUGET_CONFIG_FILE>
    
  3. 방금 추가한 원본 이름을 사용하여 패키지를 게시합니다.

    nuget push <PACKAGE_PATH> -Source <SOURCE_NAME> -ApiKey <ANY_STRING>
    

Example:

nuget sources Add -Name "MySource" -Source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json -UserName MyUserName -Password YourPersonalAccessToken -config ./nuget.config
nuget push nupkgs/mypackage.1.1.8.nupkg -Source MySource -ApiKey AZ

메모

조직에서 방화벽 또는 프록시 서버를 사용하는 경우 Azure Artifacts 도메인 URL 및 IP 주소를 허용합니다.

Troubleshooting

인증 프롬프트가 표시되지 않음

Azure Artifacts 자격 증명 공급자가 설치되어 있고 NuGet 버전 4.8.0.5385 이상을 사용하고 있는지 확인합니다. 설정 단계는 NuGet.exe사용하여 Azure Artifacts 피드에 연결을 참조하세요.

버전이 이미 있으므로 게시가 실패합니다.

Azure Artifacts 패키지 버전은 변경할 수 없습니다. 버전을 게시한 후에는 패키지를 삭제하더라도 덮어쓰거나 동일한 버전 번호를 다시 사용할 수 없습니다. 패키지 버전을 업데이트하고 패키지를 다시 빌드한 다음 다시 게시합니다.

방화벽 또는 프록시 뒤에 게시 실패

Azure Artifacts 도메인 URL 및 IP 주소를 허용한 다음 게시 작업을 다시 시도합니다.

403 오류로 게시 실패

이 오류는 일반적으로 계정에 피드에 대한 게시 권한이 없다는 것을 의미합니다. 패키지를 푸시하려면 최소 Feed Publisher(Contributor) 역할이 필요합니다. 피드 소유자에게 역할을 업데이트하도록 요청한 다음 다시 시도하세요.