1

我正在寻找一种在编译后自动部署 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"

如您所见,该过程非常简单

  1. 恢复解决方案
  2. 构建解决方案
  3. 测试解决方案
  4. 生成 NuGet 包
  5. 将包推送到源

我想要什么

我希望这仅在完成后发生在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"

希望这是可以理解的。

4

0 回答 0