Support recycleApp in WebDeploy provider
I'm using AppVeyor to build and deploy my ASP.NET 5 beta 8 projects, see https://github.com/saxx/Wuzlstats/blob/master/appveyor.yml for a live example of my YML.
It works fine (AppVeyor is a great CI platform, love it), but I have to work around an issue with the WebDeploy provider: For now I have to call WebDeploy manually (see YML), because ASP.NET 5 locks some of the DLLs so that they cannot be overwritten (while the web app is running).
The existing "take app offline" setting for the WebDeploy
provider does not work in this case, probably because ASP.NET 5
does not actually run inside IIS, but using the Kestrel server (via
IIS handler) and App_Offline.htm
seems to have no
effect. But there's a WebDeploy command to recycle the app pool,
this is enough to remove the lock on the DLL files, enabling a
deploy without errors.
It would be nice if AppVeyors WebDeploy provider would support
this recycleApp
WebDeploy command somehow, for example
run it if the "ASP.NET 5" and "take app offline" setting are both
set? Then I could use the much nicer WebDeploy provider instead of
my workaround.
What do you think?
Comments are currently closed for this discussion. You can start a new one.
Keyboard shortcuts
Generic
? | Show this help |
---|---|
ESC | Blurs the current field |
Comment Form
r | Focus the comment reply box |
---|---|
^ + ↩ | Submit the comment |
You can use Command ⌘
instead of Control ^
on Mac
Support Staff 1 Posted by Feodor Fitsner on 30 Oct, 2015 01:10 AM
Great idea. I'm just wondering if
recycleApp
provider works for Azure Web Apps as well? Have you tried that by chance?2 Posted by hannes on 30 Oct, 2015 06:26 AM
No, I have not tried it for Azure Web Apps, I don't use those atm.
3 Posted by Qingyu Zhou on 03 Nov, 2015 08:06 PM
To add to hannes's point, I'm having file locking issue as well with ASP.NET MVC 5 project (Orchard CMS to be exact) + Azure Web App. Some binaries files in App_Data would get locked, so if I check "Remove extra files" feature in the deployment environment settings, it will fail at cleaning up these extra files.
To work around that, right now I have to add custom scripts to stop the web app before deployment and start the web app afterwards. It would be nice if "recycle" or "restart" can be specified in the settings.
Another drawback of using scripts to start/stop web app is that it couldn't react to multiple deployment environments in the same build, nor the "environment"-originated deployments (vs. build-originated deployments). I would imagine that adding the capability of "recycleApp" to individual deployment environment will solve this problem.
Support Staff 4 Posted by Feodor Fitsner on 03 Nov, 2015 08:08 PM
I've just checked -
recycleApp
provider is not allowed for Azure Web Apps. What method do you currently use to restart the app - PowerShell?5 Posted by Qingyu Zhou on 03 Nov, 2015 08:20 PM
That’s unfortunate ☹
Right now I have to use Azure Powershell cmdlet (I’m glad it’s pre-installed ☺) to restart Azure Web App slot, and yes, it requires importing the Azure subscription owner’s management certificate (I checked it in as a “secure” file). As I would imagine it, it would not be easy for AppVeyor to provide that functionality.
Well, in that case, if AppVeyor could provide something like “before_every_deploy”/”after_every_deploy” in addition to current before_deploy/after_deploy, that would be nice, as I can run these scripts per (enabled) deployment environment. And “environment variables” in each of those deployment environment can help the per-deployment script to get information about current deployment environment.
I also noticed that recently “App_Offline” feature does not delete the App_Offline.htm after the deployment completes. I’m not sure it’s an Azure issue or AppVeyor issue yet. I’ll open another topic about this. For a quick look, you can refer to
build job “a34vk16dbu5cmrgf” from project “chichard”.
Support Staff 6 Posted by Feodor Fitsner on 05 Nov, 2015 04:51 AM
I've just blogged about "Deployment projects" simulating "Script" environments: http://www.appveyor.com/blog/2015/11/04/deployment-projects
I think described approach could be adopted for your scenario.
Please take a look and let me know if you have any questions or suggestions. Your feedback is appreciated!
7 Posted by hannes on 05 Nov, 2015 09:10 AM
Thanks for the post!
Just one (probably stupid) question: Why would I not use the `deploy_script` setting in the main project for deployment, but use a separate project for that? Only for better re-usability, or is there another reason?
Support Staff 8 Posted by Feodor Fitsner on 05 Nov, 2015 09:28 PM
It allows deploying a build later, much like "Environments".
Ilya Finkelshteyn closed this discussion on 25 Aug, 2018 02:01 AM.