Я пытаюсь настроить свой репозиторий Github, чтобы автоматически создавать пакет NuGet и отправлять его как на nuget.org, так и на github.com. Итак, я хочу, чтобы каждый раз, когда в главной ветке делается фиксация, или когда другая ветка объединяется с главной, github публикует новый пакет Nuget главы мастера как для Nuget, так и для Github.
NuGet
- В моей учетной записи организации nuget я сгенерировал токен доступа (имя пользователя - ключи API - Создать)
- На Github (выберите свою организацию - Просмотр организации - вкладка Настройки - Секреты) я добавил секрет с именем PUBLISH_TO_NUGET_ORG и мой токен доступа nuget
Github
- В личном кабинете я сгенерировал токен доступа (Учетная запись - Настройки - Настройки разработчика - Личные токены доступа - сгенерировать)
- На Github я добавил секрет с именем PUBLISH_TO_GITHUB_COM и мой токен доступа github
Это области действия моего токена доступа Github:
Настраивать
В моем репозитории на github я настроил действие для восстановления, сборки, тестирования, упаковки и публикации:
name: .NET Core
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.301
- name: Install dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release --no-restore
- name: Test
run: dotnet test --no-restore --verbosity normal
# - name: Publish
# uses: brandedoutcast/[email protected]
# with:
# PROJECT_FILE_PATH: MintPlayer.SeasonChecker/MintPlayer.SeasonChecker.csproj
# NUGET_KEY: ${{secrets.PUBLISH_TO_NUGET_ORG}}
# INCLUDE_SYMBOLS: true
- name: Pack
run: dotnet pack --no-build --configuration Release MintPlayer.SeasonChecker/MintPlayer.SeasonChecker.csproj --output .
- name: PushNuget
run: dotnet nuget push *.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{secrets.PUBLISH_TO_NUGET_ORG}} --skip-duplicate
- name: AddGithubSource
run: dotnet nuget add source --username PieterjanDeClippel --password ${{secrets.PUBLISH_TO_GITHUB_COM}} --name github https://nuget.pkg.github.com/MintPlayer/index.json
- name: PushGithub
run: dotnet nuget push *.nupkg --source github --skip-duplicate
Отправка на nuget.org работает нормально, но отправка на мой канал GitHub завершается неудачно из-за несанкционированной ошибки.
Я ознакомился с некоторыми плагинами, вроде этого, и я хочу встроить это в свое действие, чтобы не создавать свой проект несколько раз.
Первый дубль:
dotnet nuget push *.nupkg --source https://nuget.pkg.github.com/MintPlayer/index.json --api-key ${{secrets.PUBLISH_TO_GITHUB_COM}} --skip-duplicate
warn : Your request could not be authenticated by the GitHub Packages service. Please ensure your access token is valid and has the appropriate scopes configured.
Второй дубль с несколькими командами:
dotnet nuget add source --username PieterjanDeClippel --password ${{secrets.PUBLISH_TO_GITHUB_COM}} --name github https://nuget.pkg.github.com/MintPlayer/index.json
dotnet nuget push *.nupkg --source github --skip-duplicate
Это не удается со следующим (очевидным) сообщением:
error: Password encryption is not supported on .NET Core for this platform. The following feed try to use an encrypted password: 'github'. You can use a clear text password as a workaround.
error: Encryption is not supported on non-Windows platforms.
Есть ли у кого-нибудь опыт автоматической публикации пакетов Nuget в Github?
Ссылка на файл конфигурации действия
Редактировать
Я попытался отправить запрос POST:
- URL: https://api.github.com/user
- Авторизация: базовая аутентификация
- Имя пользователя:
- Пароль:
<my-api-key>
И я получаю информацию о своем пользователе, так что мой токен доступа определенно работает.
Редактировать
Я также попытался запустить команду на своем компьютере, заменив токен своим собственным, и это тоже работает.