Friday, 22 August 2014

Using TFS Work Items – Part 1

This is a session conducted by me @ MSFT Sri Lanka.

Configure TFS Connection for VS 2013 Release Management

Another optional configuration for VS Release Management is TFS connections. TFS Connections are optional because Release Management is capable of using package/payload built by any other build system.
If TFS is used in an organization it can be integrated with VS Release Management to provide as end to end solution, which tracks TFS based Requirements to Production Deployments.
With VS Release Management TFS can be integrated at the project collection level. This allows integration of project collections from different TFS servers with a single VS Release Management Server. In other words VS Release Management Server is capable of managing releases, using builds done manually, any other build system or any number of TFS build Servers.
001
First step is to setup an account to integrate TFS and VS Release Management Server.
004
 005
In Administration tab of the VS Release Management Client go to Manage TFS and click on New button.
002
003
Select the TFS Integration account.
006
Provide the TFS Project Collection details.
007
Click on verify to check the connection to Project Collection.
008
Access denied. This is because the TFS integration account is not having required permissions in the Project Collection. Release management installation guide specifies the account requirement as below.
image
To enable the TFS integration account to be used to connect all the project collections with release management server, the TFS integration account should be added to “Team Foundation Service Accounts”.
009
This TFS group is not allowing to directly add remove users with TFS Console Admin. The option is to use the g+ command as shown below.
TFSSecurity /g+ groupIdentity memberIdentity [/collection:CollectionURL] [/server:ServerURL]
Example
tfssecurity /g+ "Team Foundation Service Accounts" n:ALM\rmtfsint ALLOW /server:http://tfs:8080/tfs
Above command should be executed in Developer Command prompt of VS. To find the Developer Command prompt for VS 2013 in Windows 8.1 right click on VS Shortcut and open file location.
011.
Open the VS Tools folder
012
Pin the Developer Command Prompt for VS2013 to Start Menu.
013
Using VS Developer command prompt execute g+ command
tfssecurity /g+ "Team Foundation Service Accounts" n:ALM\rmtfsint ALLOW /server:http://tfs:8080/tfs
014
This will add the TFS integration account to "Team Foundation Service Accounts"
015
016

In Release Management Client connection to TFS project collection can be successfully verified and saved.
017
Next step is to define the Release Management Stages.
018


Sunday, 17 August 2014

Configure SMTP for VS 2013 Release Management

After setting up Release Management Server, Client and Deployment Agent(s) configurations steps for VS Release Management should be done.
First step is setting up SMTP. This is a optional step, but necessary to configure for sending email notifications in release management workflows.
“Configure Apps” tab shows a guide for configurations, when VS Release Management Server is initially setup.
001
Click on “SMTP Server Settings” in “Configure Apps” tab or Click on Administration –> Settings to navigate to the settings tab.
002
Provide below (reference VS Release Management User Guide)
Server Name – Fully qualified address of the SMTP server to use.
Port – Optional. Port to be used when connecting to the SMTP server to send email notifications.
User Name – Optional. Name of the identity to be used to authenticate against the SMTP services.
User Password – Password of the identity to be used to authenticate against the SMTP services. Mandatory if User Name is specified. Otherwise, optional.
Sender Address – Email address as it will appear in the email client. No replies are expected to be sent to this address. Therefore, the email or text can be anything.
003
Once above configuration done Release Management Server is ready to send email notifications.
004

Tuesday, 5 August 2014

Custom Action to Run SQL Script With Parameters in VS 2013 Release Management Deployment Agent

How to pass parameters to SQL script running from VS 2013 Release Management? Let me show you step by step.

First we need a SQL Script to Run as a test. Here is a very simple SQL Script written in SQLCMD mode.
INSERT INTO [dbo].[Customer]
           ([Id]
           ,[Name])
     VALUES
           ($(Id)
           ,'$(Name)')
GO
This script is inserting a record to a table with two columns. The script cannot be directly executed in SQL Management Studio since the $(Id) and $(Name) variables are not set. If tried will get below error.
a2 
To test the script run the below command in command prompt.
sqlcmd -S "POC-DOLPHINQA" -d "TestDB" -i "C:\Temp\TestSQL.sql" -v Id=3 Name="Chandrasekara" –b
a3
This adds a row to the table successfully.
a4
To create a new Action in the VS 2013 Release Management –> Log on to Client and go to Inventory tab and select Actions –> Click New
Create an action as shown below.
 a1
Arguments should be
-S "__ServerName__" -d "__DatabaseName__" -i "__ScriptName__" -v __Params__ -b

This will add below parameters to the action

ServerName – SQL Server Instance Name
DatabaseName – Database Name the script should run
ScriptName – Script to execute with full path (In deployment machine. Copying script to deployment machine can be done using XCOPY Deployer)
Params – Parameters for the SQL Script

Now this action can be used in Release template.
a2
Let’s try a release.
a3
The new action execution succeeded.
a2
Table is added with new record.
a4
This custom action can be used even to execute script while dynamically changing target DB, tables, columns etc. using SQLCMD syntax.
For example
Use $(MyDatabaseName)
SELECT x.$(ColumnName)
FROM Person.Person x

Monday, 4 August 2014

Setup Deployment Agent

Deployment Agent is responsible for downloading the payload for deployment form the Release Management Server and perform release steps in the deployment machine. Release Management Agent (Deployment Agent) is licensed separately for each target server and for details refer here.
Let’s have look at how to setup a deployment agent for VS 2013 Release Management. I have explained in earlier posts on setting up a Release Management Server and a Release Management Client.
Launch Deployment Agent setup.
001

Installer will be very quick.
002
 
003

Launch to configure.
004
005
We need an account to set up agent. Let’s add a domain account.
006
 007

Make sure to add the rmagent account created above to the deployment machine local administrators group.
012
013 
It is really easy when configuring a Deployment Agent in the same domain as Release Management Server. Use the created domain account as the account for Deployment Agent and provide Release Management Server url to configure. The user running the configuration should have Release Manger role in the server.
008
Configuration succeeds.
009

Successful configuration can be verified in services.
010
rmagent account is added as a service account to Release Management Server
011
Now the Deployment Agent machine can be registered in the Release Management Server.
Adding a deployment agent is easy in the same domain. To add a machine outside of domain follow below steps.
1. Create account rmshadowagent as window user in Release Management Server.
2. Create same account with same password in deployment agent machine, and add the rmshadowagent account to local admin group the deployment agent machine.
3. Add rmshadowagentwith only user name to RM server and make him ReleaseManager and a service user
014
4. Log on to deployment agent machine with rmshadowagent user or in deployment agent run the deployment agent configuration as rmshadowagent user (run as different user).
015
016
5. In configuration screen provide shadow agent user name (only rmshadowagent ) and password, and Release Management Server url. Release Management Server url can be exposed as https, so that this can be used to configure agent (example – Production machine in client’s environment) fully outside of the Release Management Server network.
Note use of .\rmshadowagent or machine\rmshadowagent will give error "user is not a release manager and service"
017
6. After “Apply Settings” and configured successfully, removal of shadow user (rmshadowagent ) release manger role is possible. (if adding new agent with this user again, temporary make him release manager)
Successfully configured agent machine can now be registered in the Release Management Server.