Difference between revisions of "Jenkins configuration"

From Agility
Jump to: navigation, search
Line 15: Line 15:
 
* Agility72Test_DailyBuild - standard Agility 7.2.xx system build every working day at 0-5AM with databases copied from Versus server
 
* Agility72Test_DailyBuild - standard Agility 7.2.xx system build every working day at 0-5AM with databases copied from Versus server
 
* Agility72Test_ManualBuild - Agility 7.2.xx system triggered manually on demand
 
* Agility72Test_ManualBuild - Agility 7.2.xx system triggered manually on demand
* Agility72Test_ManualBuildWithoutDB - Agility system triggered manually on demand without copying databases
+
* Agility72Test_ManualBuild_WithoutDB - Agility system triggered manually on demand without copying databases
 
* AgilityTrunkTest_DailyBuild - standard Agility Trunk system build every working day at 0-5AM with databases copied from Versus server
 
* AgilityTrunkTest_DailyBuild - standard Agility Trunk system build every working day at 0-5AM with databases copied from Versus server
 
* AgilityTrunkTest_ManualBuild - Agility Trunk system triggered manually on demand
 
* AgilityTrunkTest_ManualBuild - Agility Trunk system triggered manually on demand
* AgilityTrunkTest_ManualBuildWithoutDB - Agility Trunk system triggered manually on demand without copying databases
+
* AgilityTrunkTest_ManualBuild_WithoutDB - Agility Trunk system triggered manually on demand without copying databases
  
  
Line 49: Line 49:
  
  
Build environment
+
4. Build environment
  
 
Inject environment variables to the build process option should be checked
 
Inject environment variables to the build process option should be checked
Line 57: Line 57:
 
* for Agility72: ""C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\vsvars32.bat""
 
* for Agility72: ""C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\vsvars32.bat""
 
* for AgilityTrunk: "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat"
 
* for AgilityTrunk: "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat"
 +
 +
 +
5. Build
 +
 +
The build process cosists of several steps:
 +
 +
* Execute Windows batch command: 'c:\utils\nuget restore FastNET\FastNET_2.sln' (restores missing nuget packages)
 +
* Build a Visual Studio project or solution using MSBuild
 +
 +
MSBuild versions are configured in the Jenkins global configuration tools panel.
 +
For Agility72 systems MSBuild version should be set to 'MSBuild 11.0', for AgilityTrunk systems it should be 'MSBuild 14.0'.
 +
 +
MSBuild file should be set as: 'FastNet\FastNet_2.sln'
 +
 +
* Execute Windows batch command: sqlcmd -U Release -P fortknox -S TESTCENTER\SQLSERVER2012 -Q "DECLARE @DbFileName varchar(1000) SELECT @DbFileName = (SELECT 'C:\Backups\AgilityTrunkDemo_' + convert(varchar(500),GetDate(),112) + '.bak') BACKUP DATABASE [AgilityTrunkDemo] TO DISK = @DbFileName"
 +
 +
This command backups database from TestCenter and stores it in C:\Backups folder with the date in the name.
 +
 +
* Execute Windows batch command: sqlcmd -U Release -P fortknox -S TESTCENTER\SQLSERVER2012 -Q "DECLARE @DbFileName varchar(1000) SELECT @DbFileName = (SELECT 'C:\Backups\MasterAgilityFNTrunk_' + convert(varchar(500),GetDate(),112) + '.bak') BACKUP DATABASE [MasterAgilityFNTrunk] TO DISK = @DbFileName"
 +
 +
The same operation for fastNet database.
 +
 +
* Execute Windows batch command: sqlcmd -U Release -P fortknox -S VERSUS\SQL2008 -Q "EXEC xp_cmdshell 'net use Z: \\TESTCENTER\Backups fortknox /user:Release' BACKUP DATABASE [AgilityTrunkDemo] TO DISK = 'Z:AgilityTrunkDemo.bak' BACKUP DATABASE [MasterAgilityFNTrunk] TO DISK = 'Z:MasterAgilityFNTrunk.bak' EXEC xp_cmdshell 'net use Z: /delete'"
 +
 +
This command backups developer databases from Versus and stores them in TestCenter C:\Backups folder.
 +
 +
* Execute Windows batch command: sqlcmd -U Release -P fortknox -S TESTCENTER\SQLSERVER2012 -Q "ALTER DATABASE [AgilityTrunkDemo] SET offline WITH rollback immediate RESTORE DATABASE [AgilityTrunkDemo] FROM DISK = 'C:\Backups\AgilityTrunkDemo.bak' ALTER DATABASE [AgilityTrunkDemo] SET online"
 +
 +
This command restores target database on TestCenter server with previously backed up database from Versus server.
 +
 +
* Execute Windows batch command: sqlcmd -U Release -P fortknox -S TESTCENTER\SQLSERVER2012 -Q "ALTER DATABASE [MasterAgilityFNTrunk] SET offline WITH rollback immediate RESTORE DATABASE [MasterAgilityFNTrunk] FROM DISK = 'C:\Backups\MasterAgilityFNTrunk.bak' ALTER DATABASE [MasterAgilityFNTrunk] SET online"
 +
 +
This command restores target fastNet database on TestCenter server with previously backed up database from Versus server.
 +
 +
Tasks without database operations shouldn't execute 5 latter commands.
 +
 +
 +
6. Send build artifacts to a windows share
 +
 +
To enable this function the plugin 'Publish over CIFS' should be installed in Jenkins. Next in Jenkins System Configuration the CIFS share should be configured correctly:
 +
 +
* Name: 'testcenter'
 +
* Hostname: '192.168.1.87'
 +
* Username: 'Release'
 +
* Share: 'DailyBuild'
 +
 +
Back in the task definition:
 +
 +
CIFS Share Name: 'testcenter'
 +
Source files: 'FastNET/Web/**'
 +
Remove prefix: 'FastNET/Web'
 +
Remote directory: 'Agility8' (or 'Agility8Manual', 'Agility72', 'Agility72Manual')
 +
Exclude files: '**/web.config'

Revision as of 14:23, 10 April 2017

Agility on TestCenter tasks

On TestCenter there are currently four Agility instances built by Jenkins:

  • Agility72
  • Agility72Manual
  • Agility8
  • Agility8Manual


Jenkins configuration tool is located at: //rudy:8088


There are 6 defined tasks for TestCenter systems:

  • Agility72Test_DailyBuild - standard Agility 7.2.xx system build every working day at 0-5AM with databases copied from Versus server
  • Agility72Test_ManualBuild - Agility 7.2.xx system triggered manually on demand
  • Agility72Test_ManualBuild_WithoutDB - Agility system triggered manually on demand without copying databases
  • AgilityTrunkTest_DailyBuild - standard Agility Trunk system build every working day at 0-5AM with databases copied from Versus server
  • AgilityTrunkTest_ManualBuild - Agility Trunk system triggered manually on demand
  • AgilityTrunkTest_ManualBuild_WithoutDB - Agility Trunk system triggered manually on demand without copying databases


Task Configuration

Every task consists of:


1. General information

Here is defined task name and description


2. Code repository

  • Repository settings are as follows:
  • SCM Type: Subversion
  • Repository URL: 'http://cyrus/svn/main/trunk' (or 'http://cyrus/svn/main/branches/7.2' for Agility72 tasks)
  • Local module directory: '.'
  • Repository depth: 'infinity'
  • Ignore externals: checked
  • Check-out strategy: 'Use svn update as much as possible'
  • Repository browser: 'Automatic'


3. Task trigger

For automatic daily builds (Agility72Test_DailyBuild and AgilityTrunkTest_DailyBuild) Build periodically should be checked and time definition should be set to for example: 'H H(0-5) * * 2-6'


4. Build environment

Inject environment variables to the build process option should be checked

Script File Path should be set according to system version:

  • for Agility72: ""C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\vsvars32.bat""
  • for AgilityTrunk: "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat"


5. Build

The build process cosists of several steps:

  • Execute Windows batch command: 'c:\utils\nuget restore FastNET\FastNET_2.sln' (restores missing nuget packages)
  • Build a Visual Studio project or solution using MSBuild

MSBuild versions are configured in the Jenkins global configuration tools panel. For Agility72 systems MSBuild version should be set to 'MSBuild 11.0', for AgilityTrunk systems it should be 'MSBuild 14.0'.

MSBuild file should be set as: 'FastNet\FastNet_2.sln'

  • Execute Windows batch command: sqlcmd -U Release -P fortknox -S TESTCENTER\SQLSERVER2012 -Q "DECLARE @DbFileName varchar(1000) SELECT @DbFileName = (SELECT 'C:\Backups\AgilityTrunkDemo_' + convert(varchar(500),GetDate(),112) + '.bak') BACKUP DATABASE [AgilityTrunkDemo] TO DISK = @DbFileName"

This command backups database from TestCenter and stores it in C:\Backups folder with the date in the name.

  • Execute Windows batch command: sqlcmd -U Release -P fortknox -S TESTCENTER\SQLSERVER2012 -Q "DECLARE @DbFileName varchar(1000) SELECT @DbFileName = (SELECT 'C:\Backups\MasterAgilityFNTrunk_' + convert(varchar(500),GetDate(),112) + '.bak') BACKUP DATABASE [MasterAgilityFNTrunk] TO DISK = @DbFileName"

The same operation for fastNet database.

  • Execute Windows batch command: sqlcmd -U Release -P fortknox -S VERSUS\SQL2008 -Q "EXEC xp_cmdshell 'net use Z: \\TESTCENTER\Backups fortknox /user:Release' BACKUP DATABASE [AgilityTrunkDemo] TO DISK = 'Z:AgilityTrunkDemo.bak' BACKUP DATABASE [MasterAgilityFNTrunk] TO DISK = 'Z:MasterAgilityFNTrunk.bak' EXEC xp_cmdshell 'net use Z: /delete'"

This command backups developer databases from Versus and stores them in TestCenter C:\Backups folder.

  • Execute Windows batch command: sqlcmd -U Release -P fortknox -S TESTCENTER\SQLSERVER2012 -Q "ALTER DATABASE [AgilityTrunkDemo] SET offline WITH rollback immediate RESTORE DATABASE [AgilityTrunkDemo] FROM DISK = 'C:\Backups\AgilityTrunkDemo.bak' ALTER DATABASE [AgilityTrunkDemo] SET online"

This command restores target database on TestCenter server with previously backed up database from Versus server.

  • Execute Windows batch command: sqlcmd -U Release -P fortknox -S TESTCENTER\SQLSERVER2012 -Q "ALTER DATABASE [MasterAgilityFNTrunk] SET offline WITH rollback immediate RESTORE DATABASE [MasterAgilityFNTrunk] FROM DISK = 'C:\Backups\MasterAgilityFNTrunk.bak' ALTER DATABASE [MasterAgilityFNTrunk] SET online"

This command restores target fastNet database on TestCenter server with previously backed up database from Versus server.

Tasks without database operations shouldn't execute 5 latter commands.


6. Send build artifacts to a windows share

To enable this function the plugin 'Publish over CIFS' should be installed in Jenkins. Next in Jenkins System Configuration the CIFS share should be configured correctly:

  • Name: 'testcenter'
  • Hostname: '192.168.1.87'
  • Username: 'Release'
  • Share: 'DailyBuild'

Back in the task definition:

CIFS Share Name: 'testcenter' Source files: 'FastNET/Web/**' Remove prefix: 'FastNET/Web' Remote directory: 'Agility8' (or 'Agility8Manual', 'Agility72', 'Agility72Manual') Exclude files: '**/web.config'