如何在Travis CI中部署nuget软件包?

cidthecoatrack

我有一个运行Travis CI的nuget软件包。这是我的yml:

language: csharp
solution: TreasureGen.sln
install:
  - nuget restore TreasureGen.sln
  - nuget install NUnit.Runners -OutputDirectory testrunner
script:
  - xbuild TreasureGen.sln /p:TargetFrameworkVersion="v4.5" /p:Configuration=Stress
  - mono ./testrunner/NUnit.ConsoleRunner.*/tools/nunit3-console.exe ./TreasureGen.Tests.Unit/bin/Stress/TreasureGen.Tests.Unit.dll
  - mono ./testrunner/NUnit.ConsoleRunner.*/tools/nunit3-console.exe ./TreasureGen.Tests.Integration.IoC/bin/Stress/TreasureGen.Tests.Integration.IoC.dll
  - mono ./testrunner/NUnit.ConsoleRunner.*/tools/nunit3-console.exe ./TreasureGen.Tests.Integration.Tables/bin/Stress/TreasureGen.Tests.Integration.Tables.dll
  - mono ./testrunner/NUnit.ConsoleRunner.*/tools/nunit3-console.exe ./TreasureGen.Tests.Integration.Stress/bin/Stress/TreasureGen.Tests.Integration.Stress.dll

理想情况下,当它在master分支上运行时,如果成功,则将根据需要部署nuget软件包。解决方案中已经有Nuget项目,其中包含每个程序包的Package.nuspecNuGet.config文件。我曾尝试让它自己部署,但并没有取得太大的成功-通常我会遇到身份验证问题,但不是排他性的。我想知道这里是否有人在Travis中部署了像这样的nuget包,以及他们是如何做到的。

cidthecoatrack

经过多番摆弄和试验,我终于找到了解决方案。

.travis.yml

language: csharp
solution: TreasureGen.sln
install:
  - nuget restore TreasureGen.sln
  - nuget install NUnit.Runners -OutputDirectory testrunner
script:
  - xbuild TreasureGen.sln /p:TargetFrameworkVersion="v4.5" /p:Configuration=Stress
  - mono ./testrunner/NUnit.ConsoleRunner.*/tools/nunit3-console.exe ./TreasureGen.Tests.Unit/bin/Stress/TreasureGen.Tests.Unit.dll
  - mono ./testrunner/NUnit.ConsoleRunner.*/tools/nunit3-console.exe ./TreasureGen.Tests.Integration.IoC/bin/Stress/TreasureGen.Tests.Integration.IoC.dll
  - mono ./testrunner/NUnit.ConsoleRunner.*/tools/nunit3-console.exe ./TreasureGen.Tests.Integration.Tables/bin/Stress/TreasureGen.Tests.Integration.Tables.dll
  - mono ./testrunner/NUnit.ConsoleRunner.*/tools/nunit3-console.exe ./TreasureGen.Tests.Integration.Stress/bin/Stress/TreasureGen.Tests.Integration.Stress.dll
deploy:
  skip_cleanup: true
  provider: script
  script: chmod +x ./deploy/deploy.sh && ./deploy/deploy.sh $NUGET_API_KEY $NUGET_SOURCE
  on:
    branch: master

deploy.sh

ApiKey=$1
Source=$2

nuget pack ./TreasureGen/TreasureGen.nuspec -Verbosity detailed
nuget pack ./TreasureGen.Domain/TreasureGen.Domain.nuspec -Verbosity detailed

nuget push ./DnDGen.TreasureGen.*.nupkg -Verbosity detailed -ApiKey $ApiKey -Source $Source
nuget push ./DnDGen.TreasureGen.Domain.*.nupkg -Verbosity detailed -ApiKey $ApiKey -Source $Source

以下是一些要记住的关键事项:

  1. 不要忘记skip_cleanup: true-这使您可以将先前的构建命令结果重新用于nuget包
  2. chmod +x ./deploy/deploy.sh允许脚本可执行
  3. 将您的API密钥和源放置为Travis环境变量。特别是对于API密钥,请确保将其标记为不显示在输出中
  4. 您的构建可能会有所不同(不使用nunit进行测试,仅使用一个包进行发布,等等),但是部署过程应该相似。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Travis CI for R软件包:找不到部署密钥

如何在Travis CI上缓存全局NPM软件包?

如何部署Bower安装的软件包?

通过Nuke.Common / NuGet.CommandLine部署NuGet软件包时如何通过Azure Auth

如何在PowerShell脚本中使用NuGet软件包?

如何在Mono中安装NuGet软件包

如何在PowerShell中获取NuGet软件包作者?

文档中的Travis CI R软件包错误

如何缓存Travis CI中通过apt-get安装的软件包?

如何使用不同的R版本通过Travis-CI测试软件包?

如何在CakePHP 2 Travis集成中自动加载Composer软件包

如何在Travis CI上部署Agda库?

如何在travis_ci中配置GCS部署超时

如何在travis-ci上预安装软件?

如何在本地运行travis-ci

NuGet软件包浏览:如何查看按下载数量排序的软件包(降序排列)

如何通过NuGet软件包控制台卸载软件包?

我如何查看是否已为给定的Nuget软件包发布了符号软件包?

如何禁用NuGet软件包还原并在本地引入软件包?

如何在nuget中创建像Microsoft.AspNetCore.All之类的元软件包(所有软件包的软件包)?

如何以编程方式安装NuGet软件包?

如何卸载NuGet软件包的特定版本?

NuGet pack命令如何生成软件包版本?

如何包含从Nuget安装的JavaScript软件包?

如何获得可用于KRuntime的NuGet软件包的列表?

如何为此PCL库制作NuGet软件包

上传NuGet软件包,如何设置许可证?

如何卸载不可用的nuget软件包?

您如何知道Nuget软件包是否已签名