Gemakkelijkste manier om nachtelijke implementatie van de ASP.NET MVC 3-website te doen?

Ik heb een ASP.NET MVC 3-website in C# met

  • ASP.NET MVC 3 internetproject
  • Domeinproject (klassenbibliotheek)
  • Eenheidstestproject
  • SQL Server 2008 R2-database
  • Bronbeheer op Mercurial

Wat is de eenvoudigste manier om om 12:00 AM de nachtelijke bouw en implementatie van de site te doen, zodat ik elke dag naar dev.mycompany.com kan gaan en een live bijgewerkte versie van mijn Dev-versie te zien zou krijgen?

Ik zat te denken om Jenkins te gebruiken om het hele gebouw te maken.

6

1 antwoord

Ik help een systeem zo te onderhouden - in Jenkins. Uiteraard zullen de details variëren op basis van je projectstructuur, maar hier is ongeveer wat onze Jenkins-taak doet:

  • Pull code (we use Git but there's a Mercurial plugin for Jenkins as well)
  • Execute any SQL schema changes against our testing DBs from an idempotent script (we use an Ant script which pre-dates our use of Hudson/Jenkins)
  • Run msbuild (another Jenkins plugin)
    • Build file is our .sln (or you can use a web .csproj -- the arguments are slightly different)
    • Command line arguments:
      • /p:Configuration=Dev /p:Platform="Any CPU" /p:DeployOnBuild=true /p:DeployTarget=Package /p:DeployIisAppPath="dev.mycompany.com/" /v:m
    • This builds a .zip file, a .cmd file, and some .xml files, which contain everything you need to deploy updates to your site
  • Kick off two other "msdeploy" Jenkins jobs, one on each .NET web server
    • Each .NET web server is also a Jenkins slave
    • We have two servers in testing, balanced via NLB
    • Each "msdeploy" job copies the .zip/.cmd/.xml files from the build server to a temporary location on the web server and then runs the .cmd file
    • The .cmd file executes msdeploy, which pushes everything you need out to your dev web server

We hebben een andere taak die onze NUnit-tests uitvoert, maar je kunt net zo gemakkelijk je tests opnemen in je hoofdtaak. Een van de redenen waarom we de hele .sln in plaats van het web .csproj bouwen, is zodat we onze unit-testen kunnen uitvoeren vanuit dezelfde ingebouwde code.

Als u dit nog niet hebt gedaan, moet u ASP.NET MVC3, .NET 4 en msdeploy op de build-server installeren en ik denk dat u ook de meeste van dezelfde bestanden op uw webservers nodig zult hebben.

Voor planning kunt u "build periodically" of "poll SCM" als uw build-trigger kiezen en vervolgens cron-achtige syntaxis (0 0 * * *) gebruiken om dagelijks om middernacht te worden uitgevoerd.

12
toegevoegd