Как я могу использовать источники GPR и nuget.org в моем проекте dotnet через GitHub Actions?

Я пытаюсь создать свой проект библиотеки классов dotnet с помощью GitHub Actions. В моем проекте используется частный пакет NuGet, хранящийся в GPR, в дополнение к некоторым стандартным пакетам nuget.org. Мне не удалось получить успешную сборку, как на моем локальном компьютере.

Я использую setup-dotnet (и пробовал warrenbuckley/Setup-Nuget, но безуспешно):

jobs:
  build:
    runs-on: windows-latest # I started with ubuntu-latest, but the dotnet nuget is missing functionality.
    steps:
      - uses: actions/checkout@master
      - uses: actions/setup-dotnet@v1
        with:
          dotnet-version: '3.1.100'
          source-url: https://nuget.pkg.github.com/owner/index.json
        env:
          NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
      - run: dotnet restore --source # fails here
      - run: dotnet build -c Release --no-restore

Я знаю, что он находит правильный GPR, потому что здесь он успешно устанавливает мои частные пакеты, но не может найти ни один из пакетов nuget.org.
Другой вариант, который я пробовал:

      - run: dotnet nuget add source https://nuget.pkg.github.com/myorg/index.json -n "My Source"
      - run: dotnet build -c Release --no-restore # fails here

Здесь он не может найти мои личные пакеты.
Недавно я попробовал nuget cli:

      - uses: warrenbuckley/Setup-Nuget@v1
      - run: nuget sources Add -Source https://nuget.pkg.github.com/myorg/index.json -Name "My Org" -username myorguser -password ${{secrets.GITHUB_TOKEN}} -StorePasswordInClearText
      - run: nuget restore # Fails here
      - run: dotnet build -c Release --no-restore

Это дает больше всего информации, но все равно не может найти мои пакеты GPR, хотя (в отличие от предыдущих примеров) он находит все источники, которые я ожидал (local , nuget.org и мою частную организацию). Вот несколько интересных журналов:

32 NotFound https://nuget.pkg.github.com/myorg/download/mypackage/index.json
...
65 NotFound https://api.nuget.org/v3-flatcontainer/efinitycore/index.json
...
930     NU1101: Unable to find package MyPackage. No packages exist with this id in source(s): My Org, Microsoft Visual Studio Offline Packages, nuget.org
931 Errors in D:\a\WorkflowLibrary\WorkflowLibrary\WorkflowLibrary.Tests\WorkflowLibrary.Tests.csproj
932     NU1101: Unable to find package MyPackage. No packages exist with this id in source(s): My Org, Microsoft Visual Studio Offline Packages, nuget.org
...
935 NuGet Config files used:
    C:\Users\runneradmin\AppData\Roaming\NuGet\NuGet.Config
    C:\Program Files (x86)\NuGet\Config\Microsoft.VisualStudio.Offline.config
    C:\Program Files (x86)\NuGet\Config\Xamarin.Offline.config

942 Feeds used:
    C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\
    https://api.nuget.org/v3/index.json
    https://nuget.pkg.github.com/myorg/index.json

person Connor Low    schedule 11.05.2020    source источник


Ответы (3)


Это сработало для меня

вакансии: построить:

runs-on: windows-latest

steps:
- uses: actions/checkout@v2
- name: Setup Nuget.exe
  uses: nuget/[email protected]
- name: Add GPR Source using nuget.exe
  run: nuget sources add -name "GPR" -Source https://api.nuget.org/v3/index.json -Source https://nuget.pkg.github.com/{myorg}/index.json -Username {login} -Password ${{ token }}
- name: Setup .NET Core
  uses: actions/setup-dotnet@v1
  with:
    dotnet-version: 3.1.101
person braindeadclown    schedule 20.06.2020

steps:
      - uses: actions/checkout@master
      - uses: actions/setup-dotnet@v1
        with:
          dotnet-version: '3.1.100'
          source-url: https://nuget.pkg.github.com/owner/index.json
        env:
          NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}

На предыдущем шаге измените NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} на NUGET_AUTH_TOKEN: ${{secrets.YOUR_PAT}}. Я столкнулся с той же проблемой, и я смог получить доступ к своему приватному каналу георадара с помощью PAT.

person Pradeep    schedule 31.01.2021
comment
Спасибо, но это не моя проблема. Он не находит источник моего пакета и источник NuGet одновременно (404), но при этом проверка подлинности работает нормально. - person Connor Low; 01.02.2021

Просто потратил полдня на проблему, аналогичную описанной OP. Следует обратить внимание на сценарий кросс-репозитория, когда пакеты создаются / создаются в одном репозитории, а затем их пытаются восстановить с помощью GH Actions в другом репозитории. В этом сценарии GITHUB_TOKEN, сгенерированный Actions, привязан к текущему репо и не имеет разрешений на просмотр пакетов из других частных репозиториев в GH org. Это приводит к тому, что Nuget показывает коды ответа NotFound при попытке проверить пакеты в GPR и, в конечном итоге, код ошибки NU1101.

Подробнее об основной проблеме здесь: https://github.community/t/github-token-cannot-access-private-packages/16621/14

К сожалению, обходной путь - переключиться на использование токенов личного доступа.

person V. Orekhov    schedule 09.02.2021