Docker 및 .NET SDK를 사용하여 Azure DevOps 파이프라인 내에서 비공개 GitHub 호스팅 NuGet 패키지를 인증하고 사용하는 효과적인 방법을 알아보세요. --- 이 영상은 'David Keaveny' 사용자( https://stackoverflow.com/u/319980/ )가 질문한 https://stackoverflow.com/q/79116113/ 과 'Kevin Lu-MSFT' 사용자가 제공한 https://stackoverflow.com/a/79116300/ 답변을 바탕으로 제작되었습니다( https://stackoverflow.com/u/13464420/ ) 'Stack Overflow' 웹사이트에서. 훌륭한 사용자와 Stackexchange 커뮤니티의 기여에 감사드립니다. 원본 콘텐츠와 대체 솔루션, 주제에 대한 최신 업데이트/개발, 의견, 개정 내역 등과 같은 추가 세부 정보를 보려면 이 링크를 방문하세요. 예를 들어 질문의 원래 제목은 다음과 같습니다. Azure Devops 파이프라인에서 GitHub에 호스팅된 비공개 NuGet 피드 사용 또한 CC BY-SA https://meta.stackexchange.com/help/licensing에 따라 라이선스가 부여된 콘텐츠(음악 제외) 원본 질문 게시물은 'CC BY-SA 4.0'에 따라 라이선스가 부여됩니다( https://creativecommons.org/licenses/by-sa/4.0/ ) 라이선스이며 원본 답변 게시물은 'CC BY-SA 4.0'( https://creativecommons.org/licenses/by-sa/4.0/ ) 라이선스에 따라 라이선스가 부여됩니다. 마음에 들지 않는 부분이 있으면 언제든지 이 동영상 아래에 댓글을 남겨주세요. --- 소개 Azure DevOps 파이프라인에서 GitHub에 호스팅된 비공개 NuGet 패키지를 사용하는 것은 인증 복잡성으로 인해 어려울 수 있습니다. GitHub Actions 워크플로는 이를 원활하게 처리하지만 Azure DevOps는 특히 Docker 기반 빌드에서 복원 작업 중에 적절한 자격 증명을 전달하기 위해 특별한 처리가 필요합니다. Azure DevOps에서 NuGet 서비스 연결 및 NuGetAuthenticate@ 1 작업을 사용하는 문제는 간단해 보이지만 이 작업에 의한 인증 토큰 출력은 dotnet 복원을 위한 Docker 빌드 내에서 GitHub PAT(Personal Access Token)로 직접 사용할 수 없습니다. 이로 인해 비공개 GitHub 피드에서 패키지를 복원할 때 401 Unauthorized 오류가 발생합니다. 솔루션 두 가지 신뢰할 수 있는 접근 방식으로 이 문제를 해결합니다. 방법 1: NuGetAuthenticate 없이 수동 PAT 주입 GitHub 피드로 nuget.config를 유지 관리하는 경우: Azure DevOps 파이프라인에서 NuGetAuthenticate@ 1을 사용하지 마세요. GitHub PAT를 비밀 파이프라인 변수(예: GithubPAT)로 안전하게 저장하세요. 이 PAT를 Docker 빌드 인수로 전달합니다. Dockerfile 내에서 빌드 중에 명시적 PAT로 NuGet 소스를 업데이트합니다. Azure DevOps YAML 조각: [[이 텍스트 또는 코드 조각을 표시하려면 비디오 참조]] Dockerfile 발췌: [[이 텍스트 또는 코드 조각을 표시하려면 비디오 참조]] 방법 2: VSS_NUGET_EXTERNAL_FEED_ENDPOINTS와 함께 NuGetAuthenticate 사용 NuGetAuthenticate@ 1 작업을 유지하려는 경우: nuget.config에서 GitHub 소스를 제거합니다. Dockerfile에서: dotnet nuget update source 명령을 제거합니다. Azure Artifacts 자격 증명 공급자를 설치합니다. GitHub 피드에 대한 자격 증명을 사용하여 VSS_NUGET_EXTERNAL_FEED_ENDPOINTS 환경 변수를 설정합니다. Dockerfile 예: [[이 텍스트 또는 코드 조각을 공개하려면 비디오 참조]] Azure DevOps YAML 조각: [[이 텍스트 또는 코드 조각을 공개하려면 비디오 참조]] 요약 GitHub 피드용 Docker 내부에서 NuGetAuthenticate@ 1 토큰을 직접 사용하는 것은 있는 그대로 작동하지 않습니다. Docker 내부의 dotnet nuget 업데이트를 위해 실제 GitHub PAT를 수동으로 전달합니다(방법 1). 또는 NuGetAuthenticate@ 1(방법 2)을 사용할 때 Docker의 자격 증명 공급자로 VSS_NUGET_EXTERNAL_FEED_ENDPOINTS를 구성합니다. 이렇게 하면 Azure DevOps 파이프라인이 컨테이너화된 빌드 내에서 GitHub에 호스팅된 프라이빗 NuGet 패키지를 안전하게 복원할 수 있습니다.