Archive of ‘Deployment’ category

What branch is on which environment?

There is an easy way to keep tabs about what code is on each environment. There is a good MSBuild project which provides a set of useful additional MSBuild tasks:

https://github.com/loresoft/msbuildtasks

To reference the extra tasks, you will need to make sure you have referenced the MSBuild Community Tasks Project DLL. The tasks of interest are GitVersion and GitBranch which will provide details of the SHA and branch that is being deployed. The following target is what you need to get started:

This will generate a file to App_Config/__DeployInfo which will look something like:

Similar functionality could be added for Mercurial but isn’t included in this project, the following could be useful: https://msbuildhg.codeplex.com/documentation

Simple steps to set up MSDeploy 3.5 on server

These steps were used to get MSDeploy 3.5 set up on Windows Server 2008 R2:

  1. Hit Start and search for ‘Turn Windows features on or off’
  2. Select Roles -> Web Server (IIS) in the left menu and then right click and select ‘Add Role services’
  3. Then in popup check the ‘Management Service’ box under Management Tools
  4. Go to Management Service in IIS after clicking on the computer name node in the left column
  5. Enable it and assign a self signed cert. I selected Windows or IIS manager credentials and left the default port
  6. Install Web Platform Installer
  7. Optional: Install web deployment tool 2.1
  8. Install Web Deploy 3.5
  9. Create a user called msdeploy (or whatever you set in your config) and make it an admin.
  10. Try going to https://SERVERIP:8172/msdeploy.axd in your browser. E.g. https://94.229.173.52:8172/msdeploy.axd
  11. You may need to open up that port in the firewall.
  12. Login using user above and you should be directed to blank page if the login works – still a 404. Otherwise you will get a 401 if you cancel out of login box
  13. You will need to give the msdeploy user file system access rights to the folder that you want to deploy to. This can be done by following the steps under ‘Configuring a deployment user’ heading on this post: http://blog.richardszalay.com/2013/02/02/building-a-deployment-pipeline-with-msdeploy-part-4-server-configuration/
  14. You could need to make sure that the WMSvc has the privileges to use the runCommand provider. The correct way to do this give the msdeploy user “replace a process level token” rights using secpol.msc (local policies -> User Rights Management) – http://forums.iis.net/t/1182636.aspx
  15. If that doesn’t work then we should override the privileges for WMSvc (Web Management Service) service to execute runCommand successfully. (See the ‘Troublehunting’ heading on this page http://tech-fellow.net/2012/12/07/deploy-windows-service-remote-machine-msdeploy/)
  16. Make sure that the “Web Management Service” and “Web Deployment Agent Service” are set to automatic start up

One useful thing to do if you are troubleshooting is running this in the console (vs a batch file) and you’ll get a stack trace.

Useful blog posts that I used as reference: