Skip to main content

Поддержка этой версии GitHub Enterprise была прекращена 2023-01-18. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, укрепления безопасности и новых функций установите последнюю версию GitHub Enterprise. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

Работа с реестром NuGet

В интерфейсе командной строки (CLI) dotnet можно настроить публикацию пакетов NuGet в GitHub Packages и использование пакетов, хранящихся в GitHub Packages, в качестве зависимостей в проекте .NET.

GitHub Packages доступно с GitHub Free, GitHub Pro, GitHub Free для организаций, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server версии 3.0 или более новой и GitHub AE. Дополнительную информацию об обновлении экземпляра GitHub Enterprise Server см. в разделе Сведения об обновлении до новых выпусков, а также просмотрите Upgrade assistant, чтобы найти путь обновления с вашей текущей версии выпуска.

Примечание. Этот тип пакета может быть недоступен для вашего экземпляра, так как администраторы сайта могут включать или отключать каждый поддерживаемый тип пакета. Дополнительные сведения см. в разделе Настройка поддержки пакетов для предприятия.

Проверка подлинности в GitHub Packages

Для публикации, установки и удаления частных, внутренних и общедоступных пакетов требуется маркер доступа.

Вы можете использовать personal access token для проверки подлинности в GitHub Packages или GitHub Enterprise Server. При создании personal access token маркер можно назначить различным областям в зависимости от ваших потребностей. Дополнительные сведения о связанных с пакетами областях для personal access token см. в разделе Сведения о разрешениях для пакетов GitHub.

Для проверки подлинности в реестре GitHub Packages в рабочем процессе GitHub Actions можно использовать следующее:

  • GITHUB_TOKEN для публикации пакетов, связанных с репозиторием рабочих процессов.
  • personal access token с по крайней мере read:packages областью установки пакетов, связанных с другими частными репозиториями (которые GITHUB_TOKEN не могут получить доступ).

Проверка подлинности в рабочем процессе GitHub Actions

Используйте следующую команду для проверки подлинности в GitHub Packages в рабочем процессе GitHub Actions, используя GITHUB_TOKEN вместо жесткого кода personal access token в файле nuget.config в репозитории:

dotnet nuget add source --username USERNAME --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.HOSTNAME/OWNER/index.json"

Дополнительные сведения об GITHUB_TOKEN, используемом в рабочих процессах GitHub Actions, см. в разделе Проверка подлинности в рабочем процессе.

Проверка подлинности с помощью personal access token

Для публикации, установки и удаления частных, внутренних и общедоступных пакетов требуется маркер доступа.

Вы можете использовать personal access token для проверки подлинности в GitHub Packages или GitHub Enterprise Server. При создании personal access token маркер можно назначить различным областям в зависимости от ваших потребностей. Дополнительные сведения о связанных с пакетами областях для personal access token см. в разделе Сведения о разрешениях для пакетов GitHub.

Для проверки подлинности в реестре GitHub Packages в рабочем процессе GitHub Actions можно использовать следующее:

  • GITHUB_TOKEN для публикации пакетов, связанных с репозиторием рабочих процессов.
  • personal access token с по крайней мере read:packages областью установки пакетов, связанных с другими частными репозиториями (которые GITHUB_TOKEN не могут получить доступ).

Для публикации и установки пакетов в GitHub Packages необходимо использовать personal access token с соответствующими областями. Дополнительные сведения см. в статье "Сведения о GitHub Packages".

Для проверки подлинности в GitHub Packages с помощью интерфейса командной строки (CLI) dotnet создайте файл nuget.config в каталоге проекта, указав GitHub Packages в качестве источника в разделе packageSources для клиента CLI dotnet.

Необходимо заменить:

  • USERNAME на имя вашей личной учетной записи в GitHub
  • TOKEN с personal access token.
  • OWNER на имя учетной записи пользователя или организации, которой принадлежит репозиторий, содержащий проект.
  • HOSTNAME с именем узла для your GitHub Enterprise Server instance.

Если в вашем экземпляре включена изоляция поддоменов:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <clear />
        <add key="github" value="https://nuget.HOSTNAME/OWNER/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/OWNER/index.json" />
    </packageSources>
    <packageSourceCredentials>
        <github>
            <add key="Username" value="USERNAME" />
            <add key="ClearTextPassword" value="TOKEN" />
        </github>
    </packageSourceCredentials>
</configuration>

Публикация пакета

Вы можете опубликовать пакет в GitHub Packages, выполнив проверку подлинности с помощью файлаnuget.config или используя --api-key параметр командной строки с GitHub personal access token.

Публикация пакета с помощью personal access token GitHub в качестве ключа API

Если у вас еще нет маркера доступа к учетной записи в your GitHub Enterprise Server instance, см. раздел Создание personal access token.

  1. Создайте новый проект.

    dotnet new console --name OctocatApp
  2. Упакуйте проект.

    dotnet pack --configuration Release
  3. Опубликуйте пакет, используя personal access token в качестве ключа API.

    dotnet nuget push "bin/Release/OctocatApp.1.0.0.nupkg"  --api-key YOUR_GITHUB_PAT --source "github"

После публикации пакет можно просмотреть здесь: GitHub. Дополнительные сведения см. в статье "Просмотр пакетов".

Публикация пакета с помощью файла nuget.config

При публикации необходимо использовать в CSPROJ-файле то же значение OWNER, что и в файле проверки подлинности nuget.config. Укажите или увеличьте номер версии в CSPROJ-файле, а затем используйте команду dotnet pack, чтобы создать NUSPEC-файл для этой версии. Дополнительные сведения о создании пакета см. в разделе Создание и публикация пакета в документации Майкрософт.

  1. Пройдите проверку подлинности в GitHub Packages. Дополнительные сведения см. в разделе Проверка подлинности в GitHub Packages.

  2. Создайте новый проект.

    dotnet new console --name OctocatApp
  3. Добавьте сведения о вашем проекте в файл проекта, который имеет расширение CSPROJ. Необходимо заменить:

    • OWNER с именем учетной записи пользователя или организации, которой принадлежит репозиторий, к которому вы хотите подключить пакет.
    • REPOSITORY имя репозитория, к которому требуется подключить пакет.
    • 1.0.0 на номер версии пакета
    • HOSTNAME с именем узла для your GitHub Enterprise Server instance.
    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.0</TargetFramework>
        <PackageId>OctocatApp</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>
    
    </Project>
    
  4. Упакуйте проект.

    dotnet pack --configuration Release
  5. Опубликуйте пакет, используя key, указанный в файле nuget.config.

    dotnet nuget push "bin/Release/OctocatApp.1.0.0.nupkg" --source "github"

После публикации пакет можно просмотреть здесь: GitHub. Дополнительные сведения см. в статье "Просмотр пакетов".

Публикация нескольких пакетов в одном репозитории

Чтобы подключить несколько пакетов к одному репозиторию, можно включить один и тот же URL-адрес репозитория GitHub в RepositoryURL поля во всех csproj-файлах проекта. GitHub сопоставляет репозиторий на основе этого поля.

Например, проекты OctodogApp и OctocatApp будут опубликованы в одном репозитории:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <PackageId>OctodogApp</PackageId>
    <Version>1.0.0</Version>
    <Authors>Octodog</Authors>
    <Company>GitHub</Company>
    <PackageDescription>This package adds an Octodog!</PackageDescription>
    <RepositoryUrl>https://HOSTNAME/octo-org/octo-cats-and-dogs</RepositoryUrl>
  </PropertyGroup>

</Project>
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <PackageId>OctocatApp</PackageId>
    <Version>1.0.0</Version>
    <Authors>Octocat</Authors>
    <Company>GitHub</Company>
    <PackageDescription>This package adds an Octocat!</PackageDescription>
    <RepositoryUrl>https://HOSTNAME/octo-org/octo-cats-and-dogs</RepositoryUrl>
  </PropertyGroup>

</Project>

Установка пакета

Использование в вашем проекте пакетов из GitHub аналогично использованию пакетов из nuget.org. Добавьте зависимости пакета в CSPROJ-файл, указав имя пакета и версию. Дополнительные сведения об использовании CSPROJ-файла в проекте см. в разделе Работа с пакетами NuGet в документации Майкрософт.

  1. Пройдите проверку подлинности в GitHub Packages. Дополнительные сведения см. в разделе Проверка подлинности в GitHub Packages.

  2. Чтобы использовать пакет, добавьте ItemGroup и настройте поле PackageReference в файле проекта .csproj. Замените значение OctokittenApp в Include="OctokittenApp" на свою зависимость пакета, а также замените значение 12.0.2 в Version="12.0.2" на необходимую версию:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.0</TargetFramework>
        <PackageId>OctocatApp</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="OctokittenApp" Version="12.0.2" />
      </ItemGroup>
    
    </Project>
    
  3. Установите пакеты с помощью команды restore.

    dotnet restore

Устранение неполадок

Отправка пакета NuGet может завершиться неудачно, если в RepositoryUrl в CSPROJ-файле не задан ожидаемый репозиторий.

Если вы используете NUSPEC-файл, убедитесь, что в нем присутствует элемент repository с обязательными атрибутами type и url.

Если вы используете GITHUB_TOKEN для аутентификации в реестре GitHub Packages в рабочем процессе GitHub Actions, токен не сможет получить доступ к пакетам на основе частного репозитория в другом репозитории, отличном от того, где выполняется рабочий процесс. Чтобы получить доступ к пакетам, связанным с другими репозиториями, создайте personal access token с областью read:packages и передайте этот маркер в виде секрета.

Дополнительные материалы