Automatically upload local changes into windows azure / amazon s3 cloud server - azure

I have to create a Visual Studio project with the following functionality,
Once the project is created, the service should automatically upload the project files in to cloud storage (using windows azure or amazon s3 server).
If any changes in the project files, instead of uploading the whole project, only the modified files has to be uploaded. ( like SVN commit).
Could anyone please let me know if you have any ideas on this?

What you describe is more-or-less what "git deployment" is about - deploying changes to a web site or application by pushing the changes from a local git repository to a remote one. The deployment triggers a service or script on the remote repository that updates your site.
Azure supports this for Azure Web Sites. See for example Continuous deployment using GIT in Azure App Service for a step-by-step guid on how to create a new site, deploy and update it using Git.
The engine that automates git deployments in Azure is available as an open source project, Project Kudu which can be hosted outside Azure, eg on your own web server.
Amazon doesn't offer all of this out of the box. Its Elastic Beanstalk offering allows you to publish an ASP.NET MVC project to a specific configuration (VMs, settings etc) right from Visual Studio but it's a manual process and doesn't deploy only changes. Check How to Deploy an Application Using Elastic Beanstalk for a step-by-step guide.
You can use Project Kudu on an Amazon VM to use git deployment. This won't set up the VMs as Beanstalk does, but it will deploy only the changes to your site.

Related

Best workflow to restart app service after a git push

Short version: How can I deploy a new version without first manually stopping the app-service?
Long version:
I'm using the following workflow to publish a new version of my ASP.NET Core app to an Azure App-Service.
The App-Service is running on a basic instance. I understand this is not intended for real use but I hope there is a good way to get this workflow running before we go into production(standard instance).
This works but how can I avoid step 4 to 7?
Publish the solution into a local folder.
Move the published content into a local git repo.
Commit all files and push to the app-service.
Stop the app-service from the portal
Enter the console and delete all files in the wwwroot folder
Redeploy the commit from the portal
Start the app-service
I was hoping that the push in step 3 would automatically trigger the remaining steps.
After step 3 I can see that the files have been updated, the new static files are served to the browser but the old binary is still running.
Similarly I can switch between deployment slots on the portal. I get the new static files served but the previous deployed binary is still answering all calls.
This doesn't work, the static files are changed but the old binary is still responding to calls.
Redeploy from portal
Restart app-service
The old binary is still served.
This works.
Stop app-service
Deploy from portal
Start app-service
It appears the running binary is blocking the deployment.
How can I automate deployment using git push or from the portal without manually having to stop the service?
Application settings:
You need to enable msdeploy flag MSDEPLOY_RENAME_LOCKED_FILES=1 in Azure App Service application settings. The option if set enables msdeploy to rename locked files that are locked during app deployment
Click application settings and scroll down until you see app settings.
set this key: MSDEPLOY_RENAME_LOCKED_FILES and for its value put 1
How can I deploy a new version without first manually stopping the app-service?
When I develop my .Net Core Web application via VS, I would leverage the publish wizard, check the option Remove additional files at destination and use the App offline support by setting EnableMSDeployAppOffline to true under the publish profile for publishing my application to Azure Web App.
Based on your current deployment workflow, I assume that you are using the Continuous Deployment to your Azure App Service with your local Git Repository. After I changed the source code, then commit the changes to the local repository, then push the source code to my web app remote repository, the source code would be built and copied to D:\home\site\wwwroot on Azure side. Details you could follow Local Git Deployment to Azure App Service.
For your step 1 to 3, I just push the code changes from the local repository to my app service remote repository. Azure would generate the deployment script for you to build your source code project and move the built content to D:\home\site\wwwroot. Moreover, you could Custom Deployment Script for your additional requirement.

How can I clean out an older deployment on my App Service in Azure?

I have a new version of my web app and after a new deployment from a new Bitbucket repo the old version is still served. I've deleted the App Service and then created it again, but still the old stuff is served. Everything I've tried results in a successful deployment of the new code, but when I browse the site, the old version is served. To get rid of the old code can I go to the console and just delete everything in site/wwwroot? Is there a git repo in Azure I can initialize?
According to your description, I assumed that you are using continuous deployment for your Azure App Service app. AFAIK, for basic web site deployment, azure would clone your Bitbucket repo to D:\home\site\repository, then restore packages or compile your project, then deploy your project to D:\home\site\wwwroot.
As David commented that you could leverage KUDU or ftp tool (e.g. FileZilla) to check your files under site\wwwroot and site\repository, and compare with your Bitbucket repo to make sure your source code has been synced into site\repository.
Also, you could try to delete site\wwwroot and site\repository via KUDU, then Disconnect and set your continuous deployment again on Azure portal to isolate this issue.

How to deploy NodeJS project to Azure websites?

We have a NodeJs project we are building with TeamCity, then using FTP, uploading the built files to our Azure web app (.azurewebsites). The project contains thousands of files, so the FTP upload times are very slow (takes a very long time). We would prefer to package the build as a ZIP file, then upload the ZIP with FTP (much faster). However, how do we unzip the ZIP file on Azure using script?
Or is there a better way to deploy our build to our Azure web app?
NOTES:
This is an Azure web app service, does not live on a VM
Our process needs to be automated with script to support CI/CD
Deployments with Git and other repos are not feasible
You can use the Kudu API or MsBuild to deploy an app (web app or Function) to Azure App service. The deployment is usually done in 2 parts:
Deploy the app service using ARM templates
Deploy the code/App using one of these methods
If you're using VSTS, there are templates for both steps and make it a 2min process to setup. If you're not using VSTS, the Kudu API is he best way to solve the problem.
You can find more information here : https://github.com/projectkudu/kudu/wiki/REST-API
You can also use the Azure PowerShell Management cmdlets to achieve the same. However, this is at the moment only supported on Windows

How to deploy an angular2 application as a webapp in azure

Can someone help me deploy an angular2 application as a webapp in azure. I have a github enterprise setup. On my Jenkins server, I would like to do a no build. On successful completion of the build, I'd like to push it to a webapp.
Every deployment I attempted, failed on npm of one form or other. I don't want to create a VM and deploy a server.
I'd appreciate any help on this.
Deployment of all supported web applications to azure web app service ( PaaS and not IaaS VM as per your requirement) is possible by the following options
from git CLI you can publish the code from your local repository to azure.
linking an online repository like bitbucket, gitlabs to azure
Powershell - publish code from your local repository to azure
Azure CLI - publish code from your local repository to azure
FTP option is available as well.
Check out this post to see how you can publish using git commandline https://learn.microsoft.com/en-us/azure/app-service-web/app-service-deploy-local-git

FTP'ing a Suave app to Azure

Having never used Azure before I'm attempting to deploy a simple F# Suave app to Azure using FTP. Ultimately I want to deploy via github but I initially thought FTP'ing it would be the easy first step. According to https://suave.io/azure-app-service.html it should be straight forward.
These are the steps I followed
Created a new web app in Azure including a resource group
and app service plan. All on the Free Tier.
Downloaded the publishsettings XML file that Azure created.
Cloned this repo: https://github.com/isaacabraham/fsharp-demonstrator
Used FileZilla to connect via FTP using the creds
from step 2.
Uploaded the files (via FTP) from
fsharp-demonstrator/src/SuaveHost (which includes the necessary web.config file) from the repo cloned at step 3 to
the site\wwwroot on Azure.
Navigated to Azure site url.
Then I receive the error:
The specified CGI application encountered an error and the server terminated the process.
(When I look at the folders on Azure under site\wwwroot I don't see any obj or bin folders. I don't think any msbuild process occurred. That doesn't seem right.)
Anybody got any idea what the problem is?
I suspect the issue is that when you deploy via FTP, then Azure does not automatically run the deploy script specified in the .deployment file.
The build.fsx script uses Kudu service to deploy the built files, so it might be easier to just use Github deployment rather than FTP - this way, Azure will do the deployment for you.
If you want to deploy via FTP, you'll need to build the project locally and upload the output. I'm not sure how to best do this with Isaac's Kudu-based demo though (ultimately, you need web.config that points to your built executable like this)

Resources