Views: 1
Number of votes: 8
Average rating:

Configuring VSTS Releases From a single package to work with New Relic on the DXC

As part of my first expereince fully working with the DXC on a project here at https://www.redweb.com/ we chose to use the Visual Studio Team Services code, build, test and deploy process so that we could manage everything in VSTS and have links through to work items for build and releases. In our project our site was both a commerce and cms website so we needed to deploy to 2 defferent Azure web apps.

This process involved

  1. Create a triggered build process that would build the CMS and Commerce solution
  2. Create a single zip artifact package file that would contain packages for both the CMS and Commerce builds.
  3. Create a triggered release process that could deploy each package in the artifcact to each Azure web app (using the Azure App Service Deploy step). This is important so left over files are not on the web app and any old DLLs are not left in the bin folder (which could cause runtime issues).

This was all pretty simple to set up (with a bit of playing) although one problem I have discovered when configuring the release process is around the New Relic files which are in a main top level folder by the name of newrelic. These files are added by Episerver and should not be modified.

The issue I have been getting when deploying is one of two results

  • Deploy failing due to the locked new relic files in the newrelic folder
  • Deploy working but deleting the new relic files and the reporting in New Relic breaking (Requires a ticket with Episerver to fix).

The documentation here https://world.episerver.com/digital-experience-cloud-service/deploying/deploying-code-changes/ lists how to configure this for using publishing within the publish/project config which is great if you are directly publishing a site but this wouldn't work using our method of creating a shared artifact of the code and then pushing out to each Azure app.

The magic key to all of this was configuring the additonal argument to have -skip:skipAction=Delete,objectname='dirPath',absolutepath='.\\newrelic' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.\\newrelic\\Extensions' so that the folder is skipped as part of the deploy process as shown below.

Once this is configured the newrelic files are skipped and only the files we control are remove.

Hopefully this will help people with similar issues. At some point I'll do another blog around the full experience of setting up a DXC VSTS project.

Dec 13, 2017

Henrik Fransas
(By Henrik Fransas, 12/14/2017 10:11:18 AM)

Great! Will forward this to the documentation team so this will be the recommended way, not the ugly do not delete file way.

Mark Price
(By Mark Price, 12/14/2017 10:48:00 AM)

That's a very useful blog article, Scott. I will add a slide to our Developing for DXC Service training course to explain this best way to handle NewRelic when using VSTS, and since the course's exercise uses VSTS, I can add it as a step in the exercise instructions too. I'm eagerly awaiting your follow-up post around your full experience of setting up a DXC-S VSTS project. :-)

Scott Reed
(By Scott Reed, 12/14/2017 11:05:27 AM)

Hi Mark and Henrik, please hold off. Typically I tested a build last night and it seemed to work but for some reason it worked and now it isn't with a fresh checkin. I think there's a few more arguments I need so I'll try to get it working and properly tested then will update again.

Scott Reed
(By Scott Reed, 12/14/2017 12:16:49 PM)

Hi again guys, I've got this working now although editing and saving my blog post doesn't seem to work. 

The additonal arguments is slightly differennt but it's now working consistently, args are as following

-skip:skipAction=Delete,objectname='dirPath',absolutepath='.\\newrelic' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.\\newrelic\\Extensions'

Henrik Fransas
(By Henrik Fransas, 12/14/2017 2:47:47 PM)

Thanks for the update!

Scott Reed
(By Scott Reed, 12/15/2017 12:19:03 PM)

The main blog post is updated now to reflect my changes. Thanks everyone :-)

Emil W
(By Emil W, 12/19/2017 11:00:08 AM)

Nice post! This can also be achieved with Octopus deploy by setting the NewRelic path as a variable in your deploy project.

Just add 'Octopus.Action.Azure.PreservePaths = \\\\newrelic.*(\\.*|$)' in your Octopus deploy projects variables and you will get the same result as above.

Reference: https://help.octopusdeploy.com/discussions/questions/6256-exclude-paths-with-azure-web-app

Happy deploying!

//Emil @episerver

Gregoire Bodson
(By Gregoire Bodson, 11/21/2018 10:50:48 PM)

Hi Scott,

Can you clarify how you managed authentification while setting up  Azure App Service Deploy

It cannot be automatic as I get the following error forom azure portal:

Do you know how to configure the advance settings and what to request from Epi DXC team?

Gregoire Bodson
(By Gregoire Bodson, 11/21/2018 11:00:34 PM)

Hi Scott,

Can you clarify how you managed authentification while setting up  Azure App Service Deploy

It cannot be automatic as I get the following error forom azure portal: Failed to create an app in Azure Active Directory. Error: Insufficient privileges to complete the operation. For troubleshooting refer to <a href="https://go.microsoft.com/fwlink/?linkid=835898" target="_blank">link</a>.

Do you know how to configure the advance settings and what to request from Epi DXC team?

Gregoire Bodson
(By Gregoire Bodson, 11/21/2018 11:00:43 PM)

Hi Scott,

Can you clarify how you managed authentification while setting up  Azure App Service Deploy

It cannot be automatic as I get the following error forom azure portal: Failed to create an app in Azure Active Directory. Error: Insufficient privileges to complete the operation. For troubleshooting refer to <a href="https://go.microsoft.com/fwlink/?linkid=835898" target="_blank">link</a>.

Do you know how to configure the advance settings and what to request from Epi DXC team?

Please login to comment.