1

We are running BizTalk 2013 (non R2) currently and perform all of our deployments using BTDF. Whilst we are looking to move to BizTalk 2016, there is a desire to move to Azure devops (and git) first and I have started looking into how we might perform these deployments using pipelines, but have found myself becoming a little lost so just looking for any advice/guidance anyone may have.

Current state of play is this:

  • CI build working using the latest visual studio version (2019) in devops
  • BTDF Deployment Framework for BizTalk installed in devops

I have begun creating a pipeline to carry out the deployment, but not exactly sure of the best way to go about it. I have read several articles and there seems to be two distinct approaches:

My thoughts on the two approaches are that approach 1 lacks things like msi removal and I'm unsure how you would differentiate between the 2 nodes of a cluster for deployment and as such, have been pursuing approach 2 as it seems to offer the full deployment required per environment. The issue I'm having at the moment are around getting the MSBuild to function. I'm pointing it at the btdf project, but it fails with BizTalkDeploymentFramework.targets was not found.. Looking at the settings for the MSBuild step you can specify the location of msbuild, but the issue is with the btdf targets file.

My MSBuild config

All in all I'm a bit stumped by the pipelines as there doesn't appear to be much config available to me, but maybe I'm just missing something. Any advice would be gratefully received.

Thanks.

Kevin
  • 13
  • 3
  • Just out of curiosity (and not related to your problem) - why don't you move to BizTalk 2020? – Filburt Apr 13 '21 at 11:15
  • A good question. We have been focused on 2016 due to the heavy reliance on BTDF, although given the time this has taken to get the go-ahead (3 years), perhaps we should reevaluate. – Kevin Apr 14 '21 at 13:45
  • Thanks for that nudge @Filburt, it's easy to get hung up on your original goal. Will be aiming to move to 2020 with BTDF now supporting it. Just need to look into the Visual Studio add in – Kevin Apr 14 '21 at 14:21
  • Unfortunately the VS add-in doesn't yet support VS 2019, but someone has posted a workaround [here](https://datapassion.de/index.php/dpnews/btdf-extentions-for-vs-2019-biztalk-deployment-framework-2020-visual-studio-2019-extentions) – Thomas F. Abraham Apr 14 '21 at 15:37

1 Answers1

1

This is a little tricky with Azure DevOps because it typically does agentless deployments. You can simplify the setup by installing Azure DevOps agents on your BizTalk servers, but sometimes that's not possible due to security or other restrictions. (Octopus Deploy is a much more flexible and simpler product to use for BizTalk -- I'd argue most -- deployments.)

You'll need a build process that first builds the BizTalk app solution and then builds the BTDF MSI. It sounds like you have that working. The build artifact should contain the BTDF MSI.

If you don't have agents on the BizTalk servers, you'll need to set up and use PowerShell Remoting. The script here is a great resource, but be sure to review the comments. If you do have agents on the BizTalk servers, you can look at using this Azure DevOps extension.

You do NOT need to install BTDF on the BizTalk servers unless you're using the BTDF ESB Toolkit resolver.

Your error seems to indicate that you're missing some MSBuild parameters or perhaps attempting to run MSBuild on a server other than the actual BizTalk servers with the BTDF MSI installed.

Be sure to review the "Deploying an Application via Script" topics in the BTDF docs.

Thomas F. Abraham
  • 2,082
  • 1
  • 19
  • 24
  • So the stumbling block it seems, is getting the BTDF build to work (which I'm struggling to fathom) I have added a screenshot of my pipeline MSBuild config to the original post and for info, I am running this on my BizTalk dev machine where the targets file is in the location it is saying it can't find (manually copied mind). Any thoughts on what I'm missing at all? – Kevin Apr 14 '21 at 12:06
  • So you have a DevOps agent installed on your dev machine? What user is the agent running under? Could be that it doesn't have access to those files. – Thomas F. Abraham Apr 14 '21 at 15:42
  • I have come back to this after being distracted away from it and thank you for the assistance thus far. I have made some progress, but the BTDF build is still proving troublesome. - Creating a local build agent got me a little further, but then had issues with the DeploymentFramework variables in the targets file from being recognised, but hardcoded them in the targets file as a temporary solution, which brings me to the current issue: "Error executing ICE action 'ICE01'. The most common cause of this kind of ICE failure is an incorrectly registered scripting engine" Suspect rights currently – Kevin Apr 20 '21 at 11:08
  • Full error: 2021-04-20T10:58:49.3906800Z light.exe : error LGHT0217: Error executing ICE action 'ICE01'. The most common cause of this kind of ICE failure is an incorrectly registered scripting engine. See http://wix.sourceforge.net/faq.html#Error217 for details and how to solve this problem. The following string format was not expected by the external UI message logger: "The Windows Installer Service could not be accessed. This can occur if the Windows Installer is not correctly installed. Contact your support personnel for assistance.". – Kevin Apr 20 '21 at 11:36
  • Success! Amending the pipeline to run under an account with improved rights resulted in a successful build. Would like to understand the how to run the process without hard coding the BTDF variable values, but the problem stated in this original thread is now resolved. Thanks again everyone. – Kevin Apr 20 '21 at 13:24
  • Great! It may be best to post a new question regarding the variable hardcoding as I'm not entirely clear about your scenario. The .btdfproj is a standard MSBuild file like a .csproj, so any properties passed to MSBuild will automatically be valid in a PropertyGroup. Also, all environment variables automatically become properties in MSBuild (the $(xyz) syntax). – Thomas F. Abraham Apr 23 '21 at 03:53