After much debate and experimentation, I finally found a solution.
.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
Here are some of the important things to keep in mind:
- Don't forget
skip_cleanup: true - this allows you to reuse your previous build commands for your nuget package. chmod +x ./deploy/deploy.sh allows chmod +x ./deploy/deploy.sh to execute a script- Place the API key and source as Travis environment variables. Especially for the API key, make sure they are marked so that they do not appear on the output
- Your build may be different (not using nunit for tests, only 1 package for publishing, etc.), but the deployment process should be similar.
source share