Настройте TravisCI на публикацию пакета только тогда, когда push выполняется на главном сервере
Я ищу способ сделать автоматическое развертывание пакетов NuGet после компиляции. Пока что я успешно настроил CI/CD на TravisCI, но я хочу опубликовать пакет NuGet только изmaster
филиал, а не из pull request
ветвь.
Это то, что travis.yml
должно выглядеть так, чтобы сделать CI/CD с deploy.
language:
csharp
sudo: required
mono: none
dotnet: 3.0
os:
- linux
global:
- DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
- DOTNET_CLI_TELEMETRY_OPTOUT=true
before_script:
- dotnet restore solution.csproj
- dotnet restore solutionTest.csproj
script:
- dotnet build solution.csproj --configuration Release
- dotnet test solutionTest.csproj --configuration Release
after_script:
- dotnet pack solution.csproj --configuration Release
- dotnet nuget push bin\Release\*.nupkg -s "some-source"
Как видите, процесс довольно простой
- Восстановить решение
- Создайте решение
- Проверить решение
- Создайте пакет NuGet
- Отправьте пакет в источник
Чего я хочу
Я хочу, чтобы это происходило только в master
ветвь после pull request
завершено.
Что происходит сейчас
Когда я делаю PR для основной ветки, чтобы ее можно было объединить, ее нужно построить, поэтому TravisCI создает все, что создает, тестирует, упаковывает решение, а также включает публикацию пакета, это то, что я не делаю. не хочу.
Замечания
Можно ли настроить запуск скриптов только в определенной ветке? Примерно так:
[ommited code travis.yml]
branch:
master:
after_script:
- dotnet pack solution.csproj --configuration Release
- dotnet nuget push bin\Release\*.nupkg -s "some-source"
Надеюсь, это понятно.