참고: 사이트 관리자가 지원되는 각 패키지 유형을 사용하거나 사용하지 않도록 설정할 수 있으므로 이 패키지 유형을 인스턴스에 사용할 수 없습니다. 자세한 내용은 "엔터프라이즈에 대한 패키지 에코시스템 지원 구성"을(를) 참조하세요.
GitHub Packages 인증
프라이빗, 내부, 퍼블릭 패키지를 게시, 설치, 삭제하려면 액세스 토큰이 필요합니다.
GitHub Packages 또는 GitHub Enterprise Server API에 인증하는 데 personal access token을 사용할 수 있습니다. personal access token을(를) 만들 때 필요에 따라 토큰의 범위를 다르게 할당할 수 있습니다. personal access token의 패키지 관련 범위에 대한 자세한 내용은 "GitHub 패키지에 대한 사용 권한 정보"을 참조하세요.
GitHub Actions 워크플로 내에서 GitHub Packages 레지스트리에 인증하려면 다음을 사용할 수 있습니다.
- 워크플로 리포지토리와 연결된 패키지를 게시하려면
GITHUB_TOKEN
을 사용합니다. - 다른 프라이빗 리포지토리(
GITHUB_TOKEN
는 액세스할 수 없음)와 연결된 패키지를 설치하기 위해 최소read:packages
범위의 personal access token.
GitHub Actions 워크플로에서 인증
다음 명령을 사용하여 리포지토리의 nuget.config 파일에서 personal access token을(를) 하드코딩하는 대신 GitHub Actions에서 GITHUB_TOKEN
을 사용하여 GitHub Packages에 인증합니다.
dotnet nuget add source --username USERNAME --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.HOSTNAME/NAMESPACE/index.json"
NAMESPACE
를 패키지가 호스트되는 리포지토를 소유한 조직의 개인 계정 이름으로 바꿉니다.
GitHub Actions 워크플로에서 사용되는 GITHUB_TOKEN
에 대한 자세한 내용은 “자동 토큰 인증”을 참조하세요.
personal access token을(를) 사용하여 인증
프라이빗, 내부, 퍼블릭 패키지를 게시, 설치, 삭제하려면 액세스 토큰이 필요합니다.
GitHub Packages 또는 GitHub Enterprise Server API에 인증하는 데 personal access token을 사용할 수 있습니다. personal access token을(를) 만들 때 필요에 따라 토큰의 범위를 다르게 할당할 수 있습니다. personal access token의 패키지 관련 범위에 대한 자세한 내용은 "GitHub 패키지에 대한 사용 권한 정보"을 참조하세요.
GitHub Actions 워크플로 내에서 GitHub Packages 레지스트리에 인증하려면 다음을 사용할 수 있습니다.
- 워크플로 리포지토리와 연결된 패키지를 게시하려면
GITHUB_TOKEN
을 사용합니다. - 다른 프라이빗 리포지토리(
GITHUB_TOKEN
는 액세스할 수 없음)와 연결된 패키지를 설치하기 위해 최소read:packages
범위의 personal access token.
적절한 범위의personal access token으로 GitHub Packages에서 패키지를 게시하고 설치해야 합니다. 자세한 내용은 "GitHub 패키지 소개"을(를) 참조하세요.
dotnet
명령줄 인터페이스(CLI)로 GitHub Packages에 인증하려면 dotnet
CLI 클라이언트에 대한 packageSources
에서GitHub Packages를 소스로 지정하여 프로젝트 디렉터리 파일에서 nuget.config 파일을 만듭니다.
아래와 같이 바꿔야 합니다.
USERNAME
을 GitHub에 있는 개인 계정의 이름으로 바꿉니다.TOKEN
을 personal access token(으)로 바꿉니다.NAMESPACE
를 패키지가 호스트되는 리포지토리를 소유한 개인 계정 또는 조직의 이름으로 바꿉니다.HOSTNAME
을 의 호스트 이름으로 바꿉니다.
인스턴스에 하위 도메인 격리를 사용 설정한 경우:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="github" value="https://nuget.HOSTNAME/NAMESPACE/index.json" />
</packageSources>
<packageSourceCredentials>
<github>
<add key="Username" value="USERNAME" />
<add key="ClearTextPassword" value="TOKEN" />
</github>
</packageSourceCredentials>
</configuration>
인스턴스에 하위 도메인 격리가 사용되지 않은 경우:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="github" value="https://HOSTNAME/_registry/nuget/NAMESPACE/index.json" />
</packageSources>
<packageSourceCredentials>
<github>
<add key="Username" value="USERNAME" />
<add key="ClearTextPassword" value="TOKEN" />
</github>
</packageSourceCredentials>
</configuration>
패키지 게시
nuget.config 파일로 인증하거나 GitHub personal access token(으)로 --api-key
명령줄 옵션을 사용하여 GitHub Packages에 패키지를 게시할 수 있습니다.
GitHub personal access token을(를) 사용하여 패키지를 API 키로 게시
GitHub Enterprise Server 인스턴스에서 계정에 사용할 personal access token이(가) 아직 없는 경우, "개인용 액세스 토큰 관리"을(를) 참조하세요.
-
새 프로젝트를 만듭니다.
PROJECT_NAME
을(를) 프로젝트에 사용할 이름으로 바꿉니다.dotnet new console --name PROJECT_NAME
-
프로젝트를 패키지합니다.
dotnet pack --configuration Release
-
personal access token을(를) API 키로 사용하여 패키지를 게시합니다.
PROJECT_NAME
을 프로젝트 이름으로,1.0.0
을 패키지의 버전 번호로YOUR_GITHUB_PAT
를 personal access token(으)로 각각 바꿉니다.dotnet nuget push "bin/Release/PROJECT_NAME.1.0.0.nupkg" --api-key YOUR_GITHUB_PAT --source "github"
패키지를 게시한 후 GitHub에서 패키지를 볼 수 있습니다. 자세한 내용은 "패키지 보기"을(를) 참조하세요.
nuget.config 파일을 사용하여 패키지 게시
게시할 때 .csproj 파일에 지정된 리포지토리의 OWNER
가 nuget.config 인증 파일에 사용하는 NAMESPACE
와 일치해야 합니다. .csproj 파일에 버전 번호를 지정하거나 증분한 다음 dotnet pack
명령을 사용하여 해당 버전에 맞는 .nuspec 파일을 만듭니다. 패키지를 만드는 방법에 대한 자세한 내용은 Microsoft 설명서의 “패키지 만들기 및 게시”를 참조하세요.
-
GitHub Packages에 인증합니다. 자세한 내용은 “GitHub Packages에 인증”을 참조하세요.
-
새 프로젝트를 만듭니다.
PROJECT_NAME
을 프로젝트에 사용할 이름으로 바꿉니다.dotnet new console --name PROJECT_NAME
-
프로젝트의 특정 정보를 프로젝트의 파일에 추가합니다. 이 파일은 _.csproj_로 끝납니다. 다음과 같이 바꿔야 합니다.
1.0.0
을 패키지의 버전 번호로 바꿉니다.OWNER
를 패키지를 게시할 리포지토리를 소유한 개인 계정 또는 조직의 이름으로 바꿉니다.REPOSITORY
를 패키지를 연결할 리포지토리의 이름으로 바꿉니다.HOSTNAME
을 의 호스트 이름으로 바꿉니다.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <PackageId>PROJECT_NAME</PackageId> <Version>1.0.0</Version> <Authors>AUTHORS</Authors> <Company>COMPANY_NAME</Company> <PackageDescription>PACKAGE_DESCRIPTION</PackageDescription> <RepositoryUrl>https://HOSTNAME/OWNER/REPOSITORY</RepositoryUrl> </PropertyGroup> </Project>
-
프로젝트를 패키지합니다.
dotnet pack --configuration Release
-
key
를 사용해 nuget.config 파일에 지정한 패키지를 게시합니다.PROJECT_NAME
을 프로젝트 이름으로 바꾸고1.0.0
을 패키지의 버전 번호로 바꿉니다.dotnet nuget push "bin/Release/PROJECT_NAME.1.0.0.nupkg" --source "github"
패키지를 게시한 후 GitHub에서 패키지를 볼 수 있습니다. 자세한 내용은 "패키지 보기"을(를) 참조하세요.
동일한 리포지토리에 여러 패키지 게시
여러 패키지를 동일한 리포지토리에 연결하려면 모든 .csproj 프로젝트 파일의 RepositoryURL
필드에 동일한 GitHub 리포지토리 URL을 사용합니다. GitHub은 해당 필드를 기반으로 리포지토리와 일치시킵니다.
다음 예제에서는 MY_APP 및 MY_OTHER_APP 프로젝트를 동일한 리포지토리에 게시합니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<PackageId>MY_APP</PackageId>
<Version>1.0.0</Version>
<Authors>Octocat</Authors>
<Company>GitHub</Company>
<PackageDescription>This package adds a singing Octocat!</PackageDescription>
<RepositoryUrl>https://HOSTNAME/my-org/my-repo</RepositoryUrl>
</PropertyGroup>
</Project>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<PackageId>MY_OTHER_APP</PackageId>
<Version>1.0.0</Version>
<Authors>Octocat</Authors>
<Company>GitHub</Company>
<PackageDescription>This package adds a dancing Octocat!</PackageDescription>
<RepositoryUrl>https://HOSTNAME/my-org/my-repo</RepositoryUrl>
</PropertyGroup>
</Project>
패키지 설치
프로젝트에서 GitHub의 패키지를 사용하는 것은 nuget.org 패키지를 사용하는 것과 비슷합니다. .csproj 파일에 패키지 종속성을 추가하여 패키지 이름과 버전을 지정합니다. 프로젝트에서 .csproj 파일을 사용하는 방법에 한 자세한 내용은 Microsoft 설명서의 “NuGet 패키지 작업”을 참조하세요.
-
GitHub Packages에 인증합니다. 자세한 내용은 “GitHub Packages에 인증”을 참조하세요.
-
패키지를 사용하려면
ItemGroup
을 추가하고 .csproj 프로젝트 파일에서PackageReference
필드를 구성합니다.Include="PACKAGE_NAME"
의PACKAGE_NAME
값을 패키지 종속성으로 바꾸고Version="X.X.X"
의X.X.X
값을 사용하려는 패키지의 버전으로 바꿉니다.<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <PackageId>My-app</PackageId> <Version>1.0.0</Version> <Authors>Octocat</Authors> <Company>GitHub</Company> <PackageDescription>This package adds an Octocat!</PackageDescription> <RepositoryUrl>https://HOSTNAME/OWNER/REPOSITORY</RepositoryUrl> </PropertyGroup> <ItemGroup> <PackageReference Include="PACKAGE_NAME" Version="X.X.X" /> </ItemGroup> </Project>
-
restore
명령으로 패키지를 설치합니다.dotnet restore
문제 해결
_.csproj_의 RepositoryUrl
이 예상된 리포지토리로 설정되지 않은 경우 NuGet 패키지가 푸시되지 않을 수 있습니다.
nuspec 파일을 사용하는 경우 필수 type
및 url
특성이 있는 repository
요소가 있는지 확인합니다.
GITHUB_TOKEN
을 이용해 GitHub Actions 워크플로에서 GitHub Packages 레지스트리를 인증한다면, 토큰은 워크플로를 실행하는 리포지토리가 아닌 다른 리포지토리에 있는 프라이빗 리포지토리 기반 패키지에는 액세스할 수 없습니다. 다른 리포지토리에 연결된 패키지에 액세스하려면 대신 read:packages
범위의 personal access token을(를) 생성하고 이 토큰을 비밀로서 전달해야 합니다.