패키지 레지스트리의 NuGet 패키지

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

프로젝트의 패키지 레지스트리에 NuGet 패키지를 게시하세요. 그런 다음 필요할 때마다 종속성으로 사용할 패키지를 설치하세요.

패키지 레지스트리는 다음과 함께 작동합니다:

이 클라이언트들이 사용하는 특정 API 엔드포인트에 대한 문서는 NuGet API 문서를 참조하세요.

NuGet 설치 방법을 알아보세요.

NuGet 패키지를 위한 GitLab 엔드포인트 사용

NuGet 패키지를 위한 GitLab 엔드포인트를 사용하려면 옵션을 선택하세요:

  • Project-level: NuGet 패키지가 적고 동일한 GitLab 그룹에 있지 않을 때 사용합니다.
  • Group-level: 동일한 GitLab 그룹 내의 다양한 프로젝트에 여러 NuGet 패키지가 있을 때 사용합니다.

패키지를 게시하는 등의 일부 기능은 프로젝트 수준 엔드포인트에서만 사용할 수 있습니다.

주어진 NuGet 패키지 이름의 버전을 요청할 때, GitLab 패키지 레지스트리는 최대 300개의 가장 최근 버전을 반환합니다.

여기 문서화된 방법 외에는 다른 인증 방법을 사용하지 마세요. 문서화되지 않은 인증 방법은 나중에 제거될 수 있습니다.

caution
NuGet이 자격 증명을 처리하는 방식 때문에, 패키지 레지스트리는 그룹 수준 엔드포인트에서 익명 요청을 거부합니다.
이 제한을 우회하려면 인증을 설정하세요.

NuGet 패키지를 위한 소스으로 패키지 레지스트리 추가

패키지 레지스트리에 패키지를 게시하고 설치하려면, 패키지의 소스로 패키지 레지스트리를 추가해야 합니다.

사전 요구 사항:

  • GitLab 사용자 이름.
  • 개인 액세스 토큰 또는 배포 토큰. 저장소 인증을 위해:
    • 개인 액세스 토큰을 생성할 수 있습니다.
      • 저장소에서 패키지를 설치하려면, 토큰의 범위에 read_api 또는 api가 포함되어야 합니다.
      • 저장소에 패키지를 게시하려면, 토큰의 범위에 api가 포함되어야 합니다.
    • 배포 토큰을 생성할 수 있습니다.
      • 저장소에서 패키지를 설치하려면, 토큰의 범위에 read_package_registry가 포함되어야 합니다.
      • 저장소에 패키지를 게시하려면, 토큰의 범위에 write_package_registry가 포함되어야 합니다.
  • 소스를 위한 이름.
  • 사용하는 엔드포인트 수준에 따라:

이제 다음을 사용하여 NuGet에 새 소스를 추가할 수 있습니다:

NuGet CLI로 소스 추가하기

프로젝트 수준 엔드포인트

NuGet 패키지를 패키지 레지스트리에 게시하려면 프로젝트 수준 엔드포인트가 필요합니다.
프로젝트에서 NuGet 패키지를 설치하려면 프로젝트 수준 엔드포인트가 필요합니다.

프로젝트 수준 NuGet 엔드포인트를 사용하려면 nuget을 사용하여 패키지 레지스트리를 소스로 추가하세요:

nuget source Add -Name <source_name> -Source "https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/nuget/index.json" -UserName <gitlab_username or deploy_token_username> -Password <gitlab_personal_access_token or deploy_token>
  • <source_name>은 원하는 소스 이름입니다.

예시:

nuget source Add -Name "GitLab" -Source "https://gitlab.example.com/api/v4/projects/10/packages/nuget/index.json" -UserName carol -Password 12345678asdf

그룹 수준 엔드포인트

그룹에서 NuGet 패키지를 설치하려면 그룹 수준 엔드포인트를 사용하세요.

group-level NuGet 엔드포인트를 사용하려면 nuget을 사용하여 패키지 레지스트리를 소스로 추가하세요:

nuget source Add -Name <source_name> -Source "https://gitlab.example.com/api/v4/groups/<your_group_id>/-/packages/nuget/index.json" -UserName <gitlab_username or deploy_token_username> -Password <gitlab_personal_access_token or deploy_token>
  • <source_name>은 원하는 소스 이름입니다.

예시:

nuget source Add -Name "GitLab" -Source "https://gitlab.example.com/api/v4/groups/23/-/packages/nuget/index.json" -UserName carol -Password 12345678asdf

Visual Studio로 소스 추가하기

프로젝트 수준 엔드포인트

NuGet 패키지를 패키지 레지스트리에 게시하려면 프로젝트 수준 엔드포인트가 필요합니다.
프로젝트에서 NuGet 패키지를 설치하려면 프로젝트 수준 엔드포인트가 필요합니다.

프로젝트 수준 NuGet 엔드포인트를 사용하려면 Visual Studio를 사용하여 패키지 레지스트리를 소스로 추가하세요:

  1. Visual Studio를 엽니다.
  2. Windows에서는 도구 > 옵션을 선택합니다. macOS에서는 Visual Studio > 기본 설정을 선택합니다.
  3. NuGet 섹션에서 소스를 선택하여 모든 NuGet 소스 목록을 봅니다.
  4. 추가를 선택합니다.
  5. 다음 필드를 입력합니다:

    • 이름: 소스의 이름입니다.
    • 소스: https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/nuget/index.json,
      여기서 <your_project_id>는 프로젝트 ID이고, gitlab.example.com
      도메인 이름입니다.
  6. 저장을 선택합니다.
  7. 패키지에 접근할 때 사용자 이름비밀번호를 입력해야 합니다:

    • 사용자 이름: 귀하의 GitLab 사용자 이름 또는 배포 토큰 사용자 이름입니다.
    • 비밀번호: 귀하의 개인 액세스 토큰 또는 배포 토큰입니다.

소스가 목록에 표시됩니다.

경고 메시지가 표시되면 소스, 사용자 이름, 비밀번호가 올바른지 확인하세요.

그룹 수준 엔드포인트

그룹에서 패키지를 설치하려면 그룹 수준 엔드포인트를 사용하세요.

group-level NuGet 엔드포인트를 사용하려면 Visual Studio를 사용하여 패키지 레지스트리를 소스로 추가하세요:

  1. Visual Studio를 엽니다.
  2. Windows에서는 도구 > 옵션을 선택합니다. macOS에서는 Visual Studio > 기본 설정을 선택합니다.
  3. NuGet 섹션에서 소스를 선택하여 모든 NuGet 소스 목록을 봅니다.
  4. 추가를 선택합니다.
  5. 다음 필드를 입력합니다:

    • 이름: 소스의 이름입니다.
    • 소스: https://gitlab.example.com/api/v4/groups/<your_group_id>/-/packages/nuget/index.json,
      여기서 <your_group_id>는 그룹 ID이고, gitlab.example.com
      도메인 이름입니다.
  6. 저장을 선택합니다.
  7. 패키지에 접근할 때 사용자 이름비밀번호를 입력해야 합니다.

    • 사용자 이름: 귀하의 GitLab 사용자 이름 또는 배포 토큰 사용자 이름입니다.
    • 비밀번호: 귀하의 개인 액세스 토큰 또는 배포 토큰입니다.

소스가 목록에 표시됩니다.

경고 메시지가 표시되면 소스, 사용자 이름, 비밀번호가 올바른지 확인하세요.

.NET CLI로 소스 추가하기

프로젝트 수준 엔드포인트

프로젝트 수준 엔드포인트는 NuGet 패키지를 패키지 레지스트리에 퍼블리시하는 데 필요합니다.

프로젝트에서 NuGet 패키지를 설치하는 데도 프로젝트 수준 엔드포인트가 필요합니다.

프로젝트 수준 NuGet 엔드포인트를 사용하려면, nuget로 패키지 레지스트리를 소스로 추가하세요:

dotnet nuget add source "https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/nuget/index.json" --name <source_name> --username <gitlab_username or deploy_token_username> --password <gitlab_personal_access_token or deploy_token>
  • <source_name>은 원하는 소스 이름입니다.
  • --store-password-in-clear-text는 운영 체제에 따라 필요할 수 있습니다.

예를 들면:

dotnet nuget add source "https://gitlab.example.com/api/v4/projects/10/packages/nuget/index.json" --name gitlab --username carol --password 12345678asdf

그룹 수준 엔드포인트

그룹의 NuGet 패키지를 설치하려면 그룹 수준 엔드포인트를 사용하세요.

그룹 수준 NuGet 엔드포인트를 사용하려면, nuget로 패키지 레지스트리를 소스로 추가하세요:

dotnet nuget add source "https://gitlab.example.com/api/v4/groups/<your_group_id>/-/packages/nuget/index.json" --name <source_name> --username <gitlab_username or deploy_token_username> --password <gitlab_personal_access_token or deploy_token>
  • <source_name>은 원하는 소스 이름입니다.
  • --store-password-in-clear-text는 운영 체제에 따라 필요할 수 있습니다.

예를 들면:

dotnet nuget add source "https://gitlab.example.com/api/v4/groups/23/-/packages/nuget/index.json" --name gitlab --username carol --password 12345678asdf

구성 파일로 소스 추가하기

프로젝트 수준 엔드포인트

다음과 같은 작업을 수행하려면 프로젝트 수준 엔드포인트가 필요합니다:

  • NuGet 패키지를 패키지 레지스트리에 퍼블리시합니다.
  • 프로젝트에서 NuGet 패키지를 설치합니다.

프로젝트 수준 패키지 레지스트리를 .NET 소스로 사용하려면:

  1. 프로젝트의 루트에 nuget.config라는 파일을 만듭니다.

  2. 다음 내용을 추가합니다:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
     <packageSources>
         <clear />
         <add key="gitlab" value="https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/nuget/index.json" />
     </packageSources>
     <packageSourceCredentials>
         <gitlab>
             <add key="Username" value="%GITLAB_PACKAGE_REGISTRY_USERNAME%" />
             <add key="ClearTextPassword" value="%GITLAB_PACKAGE_REGISTRY_PASSWORD%" />
         </gitlab>
     </packageSourceCredentials>
    </configuration>
    
  3. 필요한 환경 변수를 구성합니다:

    export GITLAB_PACKAGE_REGISTRY_USERNAME=<gitlab_username or deploy_token_username>
    export GITLAB_PACKAGE_REGISTRY_PASSWORD=<gitlab_personal_access_token or deploy_token>
    

그룹 수준 엔드포인트

그룹으로부터 패키지를 설치하려면 그룹 수준 엔드포인트를 사용하세요.

그룹 수준 패키지 레지스트리를 .NET 소스로 사용하려면:

  1. 프로젝트의 루트에 nuget.config라는 파일을 만듭니다.

  2. 다음 내용을 추가합니다:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
     <packageSources>
         <clear />
         <add key="gitlab" value="https://gitlab.example.com/api/v4/groups/<your_group_id>/-/packages/nuget/index.json" />
     </packageSources>
     <packageSourceCredentials>
         <gitlab>
             <add key="Username" value="%GITLAB_PACKAGE_REGISTRY_USERNAME%" />
             <add key="ClearTextPassword" value="%GITLAB_PACKAGE_REGISTRY_PASSWORD%" />
         </gitlab>
     </packageSourceCredentials>
    </configuration>
    
  3. 필요한 환경 변수를 구성합니다:

    export GITLAB_PACKAGE_REGISTRY_USERNAME=<gitlab_username or deploy_token_username>
    export GITLAB_PACKAGE_REGISTRY_PASSWORD=<gitlab_personal_access_token or deploy_token>
    

Chocolatey CLI로 소스 추가하기

Chocolatey CLI를 사용하여 소스 피드를 추가할 수 있습니다. Chocolatey CLI v1.x를 사용하는 경우, NuGet v2 소스 피드만 추가할 수 있습니다.

프로젝트 수준의 엔드포인트 구성하기

NuGet 패키지를 패키지 레지스트리에 게시하기 위해 프로젝트 수준의 엔드포인트가 필요합니다.

Chocolatey의 소스로 프로젝트 수준 패키지 레지스트리를 사용하려면:

  • choco로 패키지 레지스트리를 소스로 추가하세요:

    choco source add -n=gitlab -s "'https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/nuget/v2'" -u=<gitlab_username or deploy_token_username> -p=<gitlab_personal_access_token or deploy_token>
    

NuGet 패키지 게시하기

전제 조건:

패키지를 게시할 때:

  • GitLab.com의 패키지 레지스트리는 최대 5GB의 콘텐츠를 저장할 수 있습니다.
    이 한계는 셀프 관리형 GitLab 인스턴스를 위해 구성 가능합니다.

  • 동일한 버전의 패키지를 여러 번 게시하면, 각 연속 업로드는 별도의 파일로 저장됩니다. 패키지를 설치할 때, GitLab은 최신 파일을 제공합니다.

  • GitLab에 패키지를 게시할 때, 이는 즉시 프로젝트의 패키지 사용자 인터페이스에 표시되지 않습니다. 패키지를 처리하는 데 최대 10분이 걸릴 수 있습니다.

NuGet CLI로 패키지 게시하기

전제 조건:

다음 명령을 실행하여 패키지를 게시합니다:

nuget push <package_file> -Source <source_name>
  • <package_file>.nupkg로 끝나는 패키지 파일 이름입니다.

  • <source_name>은 설정 중 사용된 소스 이름입니다.

.NET CLI로 패키지 게시하기

전제 조건:

다음 명령을 실행하여 패키지를 게시합니다:

dotnet nuget push <package_file> --source <source_name>
  • <package_file>.nupkg로 끝나는 패키지 파일 이름입니다.

  • <source_name>은 설정 중 사용된 소스 이름입니다.

예를 들어:

dotnet nuget push MyPackage.1.0.0.nupkg --source gitlab

usernamepassword 대신 --api-key 옵션을 사용하여 패키지를 게시할 수 있습니다:

dotnet nuget push <package_file> --source <source_url> --api-key <gitlab_personal_access_token, deploy_token or job token>
  • <package_file>.nupkg로 끝나는 패키지 파일 이름입니다.

  • <source_url>은 NuGet 패키지 레지스트리의 URL입니다.

예를 들어:

dotnet nuget push MyPackage.1.0.0.nupkg --source https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/nuget/index.json --api-key <gitlab_personal_access_token, deploy_token or job token>

CI/CD를 사용하여 NuGet 패키지 게시하기

GitLab CI/CD와 함께 NuGet을 사용하는 경우, CI 작업 토큰을 개인 액세스 토큰이나 배포 토큰 대신 사용할 수 있습니다. 이 토큰은 파이프라인을 생성한 사용자의 권한을 상속받습니다.

이 예제는 main 브랜치가 업데이트될 때마다 새로운 패키지를 생성하는 방법을 보여줍니다:

  1. .gitlab-ci.yml 파일에 deploy 작업을 추가합니다:

    image: mcr.microsoft.com/dotnet/core/sdk:3.1
    
    stages:
      - deploy
    
    deploy:
      stage: deploy
      script:
        - dotnet pack -c Release
        - dotnet nuget add source "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/nuget/index.json" --name gitlab --username gitlab-ci-token --password $CI_JOB_TOKEN --store-password-in-clear-text
        - dotnet nuget push "bin/Release/*.nupkg" --source gitlab
      only:
        - main
      environment: production
    
  2. 변경 사항을 커밋하고 GitLab 리포지토리에 푸시하여 새로운 CI/CD 빌드를 트리거합니다.

Chocolatey CLI를 사용하여 NuGet 패키지 게시하기

필수 조건:

  • 프로젝트 수준 패키지 레지스트리가 Chocolatey의 소스입니다.

Chocolatey CLI를 사용하여 패키지를 게시하려면:

choco push <package_file> --source <source_url> --api-key <gitlab_personal_access_token, deploy_token or job token>

이 명령에서:

  • <package_file>은 패키지 파일 이름이며 .nupkg로 끝납니다.
  • <source_url>은 NuGet v2 피드 패키지 레지스트리의 URL입니다.

예를 들어:

choco push MyPackage.1.0.0.nupkg --source "https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/nuget/v2" --api-key <gitlab_personal_access_token, deploy_token or job token>

동일한 이름 또는 버전으로 패키지 게시하기

기존 패키지와 동일한 이름이나 버전으로 패키지를 게시하면 기존 패키지가 덮어씌워집니다.

중복 NuGet 패키지를 허용하지 않기

  • GitLab 16.3에서 도입됨 nuget_duplicates_option이라는 플래그와 함께. 기본값은 비활성화됨.
  • GitLab 16.6에서 일반 제공. 기능 플래그 nuget_duplicates_option 제거됨.
  • 필요한 역할이 변경됨 GitLab 17.0에서 Maintainer에서 Owner로 변경.

사용자가 중복 NuGet 패키지를 게시하는 것을 방지하려면 GraphQl API 또는 UI를 사용할 수 있습니다.

UI에서:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 설정 > 패키지 및 레지스트리를 선택합니다.
  3. 중복 패키지 테이블의 NuGet 행에서 중복 허용 토글을 끕니다.
  4. 선택 사항. 예외 텍스트 상자에 허용할 패키지의 이름과 버전을 일치시키는 정규 표현식을 입력합니다.

변경 사항은 자동으로 저장됩니다.

경고: .nuspec 파일이 패키지의 루트에 위치하지 않으면 패키지가 중복으로 인식되지 않을 수 있습니다.

패키지 설치

동일한 이름과 버전을 가진 여러 패키지가 있을 경우, 패키지를 설치할 때 가장 최근에 게시된 패키지가 검색됩니다.

패키지 레지스트리에서 NuGet 패키지를 설치하려면 먼저 프로젝트 수준 또는 그룹 수준의 엔드포인트 추가를 해야 합니다.

NuGet CLI로 패키지 설치

경고:
기본적으로 nugetnuget.org의 공식 소스를 먼저 확인합니다. nuget.org에 있는 패키지와 동일한 이름을 가진 NuGet 패키지가 패키지 레지스트리에 있는 경우, 올바른 패키지를 설치하기 위해 소스 이름을 지정해야 합니다.

최신 버전의 패키지를 설치하려면 다음 명령어를 실행하세요:

nuget install <package_id> -OutputDirectory <output_directory> \
  -Version <package_version> \
  -Source <source_name>
  • <package_id>는 패키지 ID입니다.
  • <output_directory>는 패키지가 설치되는 출력 디렉토리입니다.
  • <package_version> 패키지 버전입니다. 선택 사항입니다.
  • <source_name> 소스 이름입니다. 선택 사항입니다.

.NET CLI로 패키지 설치

경고:
패키지 레지스트리에 있는 패키지가 다른 소스에 있는 패키지와 동일한 이름을 가진 경우, 설치 중에 dotnet이 소스를 확인하는 순서를 확인해야 합니다. 이는 nuget.config 파일에 정의되어 있습니다.

최신 버전의 패키지를 설치하려면 다음 명령어를 실행하세요:

dotnet add package <package_id> \
       -v <package_version>
  • <package_id>는 패키지 ID입니다.
  • <package_version>은 패키지 버전입니다. 선택 사항입니다.

NuGet v2 피드를 이용한 패키지 설치

사전 요건:

  • 프로젝트 수준 패키지 레지스트리는 Chocolatey의 v2 피드 소스입니다.
  • NuGet v2 피드를 사용하여 패키지를 설치하거나 업그레이드할 때 버전을 제공해야 합니다.

Chocolatey CLI로 패키지를 설치하려면:

choco install <package_id> -Source <source_url> -Version <package_version>

이 명령어에서:

  • <package_id>는 패키지 ID입니다.
  • <source_url>은 NuGet v2 피드 패키지 레지스트리의 URL 또는 이름입니다.
  • <package_version>은 패키지 버전입니다.

예를 들어:

choco install MyPackage -Source gitlab -Version 1.0.2

# 또는

choco install MyPackage -Source "https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/nuget/v2" -u <username> -p <gitlab_personal_access_token, deploy_token or job token> -Version 1.0.2

Chocolatey CLI로 패키지를 업그레이드하려면:

choco upgrade <package_id> -Source <source_url> -Version <package_version>

이 명령어에서:

  • <package_id>는 패키지 ID입니다.
  • <source_url>은 NuGet v2 피드 패키지 레지스트리의 URL 또는 이름입니다.
  • <package_version>은 패키지 버전입니다.

예를 들어:

choco upgrade MyPackage -Source gitlab -Version 1.0.3

패키지 삭제

경고:
패키지를 삭제하는 것은 되돌릴 수 없는 영구적인 작업입니다.

사전 요건:

  • 프로젝트에서 Maintainer 역할 이상이어야 합니다.
  • 패키지 이름과 버전을 모두 가지고 있어야 합니다.

NuGet CLI로 패키지를 삭제하려면:

nuget delete <package_id> <package_version> -Source <source_name> -ApiKey <gitlab_personal_access_token, deploy_token or job token>

이 명령어에서:

  • <package_id>는 패키지 ID입니다.
  • <package_version>은 패키지 버전입니다.
  • <source_name>은 소스 이름입니다.

예를 들어:

nuget delete MyPackage 1.0.0 -Source gitlab -ApiKey <gitlab_personal_access_token, deploy_token or job token>

심볼 패키지

.nupkg 파일을 푸시하면 .snupkg 형식의 심볼 패키지 파일이 자동으로 업로드됩니다.

수동으로 푸시할 수도 있습니다:

nuget push My.Package.snupkg -Source <source_name>

패키지 레지스트리를 심볼 서버로 사용하기

GitLab은 NuGet 패키지 레지스트리에서 심볼 파일을 사용할 수 있으므로, 패키지 레지스트리를 심볼 서버로 사용할 수 있습니다.

심볼 서버를 사용하려면:

  1. GraphQl API를 사용하여 nuget_symbol_server_enabled 네임스페이스 설정을 활성화합니다.

  2. 디버거를 심볼 서버를 사용하도록 구성합니다.

    예를 들어, Visual Studio를 구성하려면:

    1. 도구 > 옵션을 엽니다.
    2. 디버거 > 심볼 소스를 선택합니다.
    3. 추가를 선택합니다.
    4. 필요한 필드를 작성합니다. 심볼 서버의 URL은 다음과 같습니다:

      https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/nuget/symbolfiles
      -- 또는 --
      https://gitlab.example.com/api/v4/groups/<your_group_id>/-/packages/nuget/symbolfiles
      
    5. 소스 추가를 선택합니다.

디버거를 구성한 후에는 애플리케이션을 평소와 같이 디버깅할 수 있습니다.

디버거는 패키지 레지스트리에서 사용 가능한 한 심볼 PDB 파일을 자동으로 다운로드합니다.

심볼 패키지 사용하기

디버거가 심볼 패키지를 사용하도록 구성된 경우, 디버거는 다음과 같이 요청을 보냅니다:

  • Symbolchecksum 헤더: 심볼 파일의 SHA-256 체크섬입니다.
  • file_name 요청 매개변수: 심볼 파일의 이름입니다. 예: mypackage.pdb.
  • signature 요청 매개변수: PDB 파일의 GUID와 생성 연도입니다.

GitLab 서버는 이 정보를 심볼 파일과 일치시켜 반환합니다.

다음 사항에 유의하세요:

  • 오직 포터블 PDB 파일만 지원됩니다.
  • 디버거가 인증 토큰을 제공할 수 없기 때문에, 심볼 서버 엔드포인트는 일반적인 인증 방법을 지원하지 않습니다.

GitLab 서버는 올바른 심볼 파일을 반환하기 위해 signatureSymbolchecksum이 필요합니다.

지원되는 CLI 명령어

  • GitLab 16.5에 도입된 nuget deletedotnet nuget delete 명령어.

GitLab NuGet 저장소는 NuGet CLI(nuget)와 .NET CLI(dotnet)에 대해 다음 명령어를 지원합니다:

  • nuget push: 패키지를 레지스트리에 업로드합니다.
  • dotnet nuget push: 패키지를 레지스트리에 업로드합니다.
  • nuget install: 레지스트리에서 패키지를 설치합니다.
  • dotnet add: 레지스트리에서 패키지를 설치합니다.
  • nuget delete: 레지스트리에서 패키지를 삭제합니다.
  • dotnet nuget delete: 레지스트리에서 패키지를 삭제합니다.

예제 프로젝트

예제에 대한 내용은 Guided Exploration 프로젝트인 Utterly Automated Software and Artifact Versioning with GitVersion에서 확인하세요.

이 프로젝트는:

  • msbuild 방법으로 NuGet 패키지를 생성합니다.
  • nuget.exe 방법으로 NuGet 패키지를 생성합니다.
  • NuGet 패키징과 관련하여 GitLab 릴리즈 및 release-cli를 사용합니다.
  • 복잡한 리포지토리에서 NuGet 패키지의 버전을 자동으로 결정하고 증가시키기 위해 GitVersion이라는 도구를 사용합니다.

이 예제 프로젝트를 자신의 그룹이나 인스턴스로 복사하여 테스트할 수 있습니다.

어떤 다른 GitLab CI 패턴이 시연되는지에 대한 자세한 내용은 프로젝트 페이지를 참조하세요.

문제 해결

NuGet 캐시 지우기

성능 향상을 위해 NuGet은 패키지와 관련된 파일을 캐시합니다. 문제가 발생하면 아래의 명령어로 캐시를 지우세요:

nuget locals all -clear

Docker 기반 GitLab 설치에서 NuGet 패키지를 게시할 때 발생하는 오류

내부 웹 서비스의 악용을 방지하기 위해 로컬 네트워크 주소에 대한 웹훅 요청이 차단됩니다. NuGet 패키지를 게시할 때 Error publishing 또는 Invalid Package: Failed metadata extraction error 메시지가 표시되면, 네트워크 설정을 변경하여 웹훅 및 통합 요청이 로컬 네트워크에 허용되도록 설정하세요.