Как опубликовать пакеты NuGet в реестре пакетов GitHub с помощью dotnet на Mac?

Документация не полная, и в настоящее время я не могу использовать или публиковать пакет для GPR с помощью dotnet на Mac. Любая помощь будет полезна

3 ответа

Далеко от идеала, и я еще не тестировал на Mac, но он работал на Linux

Публиковать

  • Включите функцию GPR в настройках GitBHub
  • Зайдите в github и добавьте ТОКЕН с доступом на чтение / запись GPR
  • Добавить источник локально

    nuget source Add -Name "GitHub" \
      -Source "https://nuget.pkg.github.com/MY_ACCOUNT/index.json"
    
  • Установить ключ API

    nuget setApiKey $TOKEN \
        -Source "https://nuget.pkg.github.com/MY_ACCOUNT/index.json"
    

Пакет push

    nuget push "my.lib.nupkg" -Source "GitHub"

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

    nuget install my.lib -pre # '-pre' because of alpha, if alpha
Примечание:  
'nuget install' загружает пакет nuget  
Он не добавляет его в проект.  
'dotnet' не может его найти  
Все равно сделайте это, чтобы он был кэширован в `~/.nuget/packages`
Относительный загруженный пакет `./ Project` можно удалить  

Ссылка вручную:

Добавьте "новый источник" в nuget.config.

<add key="GitHub" value="https://nuget.pkg.github.com/MY_ACCOUNT/index.json" />

конфигурация nuget может быть

  • './nuget.config'
  • '~ /.nuget / NuGet / nuget.config'

Добавить в проект:

    dotnet add package my.lib \            
        -v 1.0.0-alpha \
        -n # don't download, it can't handle authentication

В качестве альтернативы:
отредактируйте ссылку на пакет проекта.

<PackageReference Include="my.lib" Version="1.0.0-alpha" />

В заключение:

dotnet restore 

Вам нужно будет сделать HTTP-вызов самостоятельно (другие шаги для краткости опущены):

jobs:
  continuous-integration:
    runs-on: ubuntu-latest
    steps:
    - name: push
      run: |
        for f in ./packages/*.nupkg
        do
          curl -vX PUT -u "<YOUR USER NAME>:${{ secrets.GITHUB_TOKEN }}" -F package=@$f https://nuget.pkg.github.com/<YOUR USER NAME>/
        done
      if: github.event_name == 'push'

Как вы можете видеть по этой ссылке на вопрос сообщества github, dotnet nuget в настоящее время не поддерживается GPR, и вам, скорее, придется использовать nuget с Mono или публиковать из Windows.

Я надеюсь, что они исправят это в ближайшее время сами, это полностью мешает мне воспользоваться георадаром.

Другие вопросы по тегам