We can still combine a batch with the brand TFS2010 and Silverlight:
Note: Introduced in SQL 2005, you could use the command sqlcmd insead of osql used below (osql is older).
@ECHO OFF
CLS
rem Check if the parameter %1 allows the access to the proper folder
DIR \\myTFSBuildServer\TFSDropBuild\GC-in\%1\_PublishedWebsites\myProject.Server.Web\*.*
CLS
IF %ERRORLEVEL% == 1 GOTO GatedCheckInVersionNotSpecified
rem -------------------------------------------------------
rem RUNS ALL SILVERLIGHT UNIT TESTS
rem -------------------------------------------------------
-- ECHO Running the Silverlight Unit Tests on your machine before the deployment
CD ..\Tests\UnitTests
-- ECHO SILVERLIGHT UNIT TEST NUMBER 1
CD ..\..\..\Projects\Tests\UnitTests\myProject.Client.Tests
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\msbuild /t:test
CD ..\..\Deployment
rem -------------------------------------------------------
rem CHECK IF ALL SILVERLIGHT UNIT TESTS PASSED
rem -------------------------------------------------------
CHOICE /C:YN Did all the Silverlight UnitTests passed
IF ERRORLEVEL==2 GOTO SilverlightUTfailed rem n (no)
IF ERRORLEVEL==1 GOTO SilverlightUTpassed rem y (yes)
:SilverlightUTpassed rem We can deploy
CLS
ECHO -----------------------------------------------------------
ECHO START : DEPLOYMENT of the Database and the C# code
ECHO -----------------------------------------------------------
ECHO 1. Drops ALL TABLES of myProject for the SQL instance of the TFS integration serveur
rem On détruit toutes les tables de myProject sur l'instance SQL pour le serveur d'intégration TFS
osql -U myUserLogin -P myPassword -S MY_SQL_SERVER\MY_SQL_INSTANCE -i ..\SQL\Drop_ALL_Tables_of_myProject.sql
CLS
osql -U myUserLogin -P myPassword -S MY_SQL_SERVER\MY_SQL_INSTANCE -i ..\SQL\Drop_ALL_Tables_of_myProject.sql
PAUSE
ECHO 2. CREATION OF THE EMPTY STRUCTURE
osql -U myUserLogin -P myPassword -S MY_SQL_SERVER\MY_SQL_INSTANCE -i ..\..\Projects\Sql\myEntityFrameworkThing.edmx.sql
rem -Q "ALTER DATABASE myProject SET ANSI_NULL_DEFAULT ON"
CLS
ECHO DONE : CREATION OF THE EMPTY STRUCTURE
PAUSE
ECHO 3. CREATION OF THE DATABASE STRUCTURE AND THE DATA
rem ~ ~ ~ ~ ~ ~ ~ ~ W A R N I N G A T T E N T I O N ~ ~ ~ ~ ~ ~ ~ ~
rem ~ in order not to have the accent's bug, you have to "save as" the script below in Notepad
rem ~ and change the encoding to "unicode"
osql -U myUserLogin -P myPassword -S MY_SQL_SERVER\MY_SQL_INSTANCE -Q "USE [myProject]"
osql -U myUserLogin -P myPassword -S MY_SQL_SERVER\MY_SQL_INSTANCE -i ..\SQL\ProductManager.Populate.Parcours.sql -o LogPopulate.txt
osql -U myUserLogin -P myPassword -S MY_SQL_SERVER\MY_SQL_INSTANCE -i ..\SQL\Insert_Blocs_Labels.sql -o LogPopulateBlocsLabels.txt
rem 4. (Hack - Waiting for myProject Product Designer) Temporarily remove the Name of ALL SCREENS so that they becomes a template
rem because a template has no name
osql -U myUserLogin -P myPassword -S MY_SQL_SERVER\MY_SQL_INSTANCE -Q "UPDATE Screens SET Name=NULL"
rem 5. If required, call a SCRIPT to ATTACH extra BEHAVIORS on the screen
ECHO 6. DEPLOY the code and the binaries, and create a log file containing the name of the deployed version
CLS
ECHO BACKUP of the previous version
set T=%time:~0,5%
SET backupDir=\\myTFSBuildServer\myFolder\Backups\%1.%T::=-%
ECHO The backup folder is "%backupDir%".
MD %backupDir%
PAUSE
XCOPY \\myTFSBuildServer\myFolder\Web\*.* %backupDir% /E
PAUSE
ECHO 6. DEPLOY the code and the binaries, and create a log file containing the name of the deployed version
ECHO (except the list of files in FilesToIgnore.txt such as web.Config)
XCOPY \\myTFSBuildServer\TFSDropBuild\GC-in\%1\_PublishedWebsites\myProject.Server.Web\*.* \\myTFSBuildServer\myFolder\Web /E /W /Y /EXCLUDE:FilesToIgnore.txt
rem Gets the Zip file so that it can be extracted below
COPY \\myTFSBuildServer\TFSDropBuild\GC-in\%1\_PublishedWebsites\myProject.Server.Web\ClientBin\myProject.xap myProject_Log.zip
rem COPY the TRACE file and unzip the ServiceReferences.ClientConfig file from myProject.xap
COPY \\myTFSBuildServer\TFSDropBuild\GC-in\%1\_PublishedWebsites\myProject.Server.Services.WebProbe\Trace\WebProbe.aspx \\myTFSBuildServer\myFolder\Web\Trace\
PKUNZIP myProject_Log.zip ServiceReferences.ClientConfig
rem Due to the fact that PkZip is old, we have to rename the extracted file
REN SERVICER.CLI ServiceReferences.ClientConfig
COPY ServiceReferences.ClientConfig \\myTFSBuildServer\myFolder\Web\Trace
ECHO This file is auto-generated by the deployed gated checkin.> DeployedVersion_%1.log
COPY DeployedVersion_%1.log \\myTFSBuildServer\myFolder\Web\Trace
rem Clean up the mess
DEL myProject_Log.zip
DEL ServiceReferences.ClientConfig
PAUSE
rem END of the deployment, we can quit
ECHO -----------------------------------------------------------
ECHO END : DEPLOYMENT of the Database and the C# code
ECHO READY to use
ECHO http://myServer/myFolder/Web/StaticDemo_Accueil.aspx
ECHO -----------------------------------------------------------
GOTO END
:SilverlightUTfailed rem AN ERROR occured and at least one Silverlight Unit Test FAILED
CLS
ECHO -----------------------------------------------------------
ECHO Silverlight Unit Test FAILED :
ECHO You are NOT allowed to deploy on the myFolder server
ECHO Please correct the error, check-in and try again.
ECHO -----------------------------------------------------------
GOTO END
:GatedCheckInVersionNotSpecified
CLS
ECHO -----------------------------------------------------------
ECHO Please specify the name of the gated check-in to deploy
ECHO for example :
ECHO Only_for_the_CSharpTeam_DeployInto_myFolder.bat GC-in_20000429.12
ECHO OR the folder
ECHO \\myTFSBuildServer\TFSDropBuild\GC-in\%1\_PublishedWebsites\myProject.Server.Web\
ECHO does not exists
ECHO -----------------------------------------------------------
GOTO END
:END
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.