Configuration file transformations for specific machines

Automated deployment for web applications and databases

Moderators: Mike Upton, justin.caldicott, Sean.newham, csmith, chirayu, DavidSimner, david.conlin

Configuration file transformations for specific machines

Postby swinghouse » Thu Jan 03, 2013 9:22 am

Configuration file transforms work beautifully with environments in Deployment Management, but is there any support for machine specific transforms?

The scenario I'm thinking of is this:

    Machine1 and Machine2 both belong to Environment1. One or more settings need to be unique for each machine, for instance the database connection string.


What I've been trying to do is to define the connection string transform in Web.Machine1.config and Web.Machine2.config, respectively. Alas, DM doesn't seem to pick up these. (The same transform rules in environment specific config files do get processed by DM.)
swinghouse
 
Posts: 99
Joined: Mon Sep 12, 2011 10:51 am

Postby justin.caldicott » Tue Jan 08, 2013 4:23 pm

Is it the same project that you want to configure differently between machines?

The web config transforms work only for Environments. You could try specifying the connection strings in a Deployment Manager variable, and using a powershell deployment script to apply a further transformation of the web.config. The variable could then be customised per machine as you need.

Actually, it seems nicer to work this way, as then the package does not need to know what environments you want to deploy it to, meaning you can add/change environments and configuration without needing to build a new package.

This requires a powershell script to modify the web.config as appropriate. I found an example of doing that on StackOverflow: http://stackoverflow.com/questions/1172 ... t-escaping

I expect later we will have more flexibility in terms of deployment steps, and that Web Config Transform step might be more configurable.

Thanks,

Justin
Justin Caldicott
Product Manager - Deployment Manager
Red Gate
justin.caldicott
 
Posts: 55
Joined: Wed Apr 20, 2011 5:42 pm

Postby swinghouse » Wed Jan 09, 2013 3:03 pm

Hi Justin,

Yes, you assumed correctly - same project, different machines.

I'll look closer into your suggested solution in a while. It certainly looks doable!

Thanks for the help!

/Mattias
swinghouse
 
Posts: 99
Joined: Mon Sep 12, 2011 10:51 am

Postby Mike Upton » Wed Jan 16, 2013 12:03 pm

Deployment Manager can already update certain parts of app.config and web.config files based on variable definitions. It will look for appSettings and connectionSettings whose names match deployment variable names, and replace the values with the appropriate deployment variable value, without you needing to write a Powershell script.

For example, if your web.config had the following connection string definition (example from MSDN):
Code: Select all
<connectionStrings>
  <add name="NorthwindConnectionString"
    connectionString="Data Source=serverName;Initial Catalog=Northwind;Persist Security Info=True;User ID=userName;Password=password"
    providerName="System.Data.SqlClient"  />
</connectionStrings>

And you defined a Deployment Manager variable with the name "NorthwindConnectionString" and the value "Data Source=.;Initial Catalog=Northwind;Persist Security Info=True;User ID=sa;Password=my_very_secure_password", the connection string in the web.config would be replaced. Because this uses a normal deployment variable, you can define different values for different Environments, Machines, or even Steps within a project.

This also works for appSettings in the app.config:
Code: Select all
<appSettings>
  <add key="SettingName" value="TestValue" />
</appSettings>

You can replace the value on deployment by adding a deployment variable named "SettingName" with the new value.

(some documentation for this feature can be found here)
Mike Upton

Software Engineer
Red Gate Software Ltd.
Mike Upton
 
Posts: 157
Joined: Wed May 11, 2011 8:04 am
Location: Red Gate

Postby swinghouse » Tue Jan 22, 2013 5:52 pm

Hi Mike,

Even though my question was specifically about the integration with .config transforms, it was good to read your succinct overview of the other options available in Deployment Manager.

Thanks!

/Mattias
swinghouse
 
Posts: 99
Joined: Mon Sep 12, 2011 10:51 am

Postby swinghouse » Tue Jan 22, 2013 6:13 pm

Regarding variables, I've added a feature request at http://redgate.uservoice.com/forums/176 ... in-config-
swinghouse
 
Posts: 99
Joined: Mon Sep 12, 2011 10:51 am


Return to Deployment Manager

Who is online

Users browsing this forum: agr@ida.dk and 1 guest