我正在寻找一种在编译后自动部署 NuGet 包的方法。到目前为止,我已经成功地在 TravisCI 上设置了 CI/CD,但我只想从master
分支而不是从pull request
分支发布 NuGet 包。
这就是travis.yml
使用部署制作 CI/CD 的样子。
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"
希望这是可以理解的。