#msdn Azure devops msdn
Explore tagged Tumblr posts
devopsengineer · 4 years ago
Text
Azure devops msdn
Azure devops msdn Azure devops msdn Newspaper headlines today Azure devops msdn cannot access Repo options in microsoft azure devops page I’ve granted with the Visual Studio EE license and the Visual Studio Essentials subscription, however, I don’t have the option in Azure DevOps to check the Repos neither I can git clone the repo. The error received says: “400: The items requested either do not…
Tumblr media
View On WordPress
0 notes
suzanneshannon · 5 years ago
Text
Migrating this blog to Azure. It's done. Now the work begins.
I have been running this https://hanselman.com/blog for almost 20 years. Like coming up on 19 I believe.
Recently it moved from being:
a 13(?) year old .NET Framework app called DasBlog running on ASP.NET and a Windows Server on real metal hardware
to
a fresh and new .NET Core app app forked and improved by Mark Downie https://github.com/poppastring/dasblog-core and running under Linux on Azure!
Finally. This blog, the main site, and the podcast site are all running on Azure Web Apps, built in Azure DevOps, and managed by Azure Front Door and watched by Application Insights. Yes I pay for it with cash, I have no unlimited free Azure credits other than my $100 MSDN account.
Mark and I have been pairing on this for months and having a wonderful time. In fact, it's been about a year since this started.
Moving this blog is a significant achievement for a number of reasons, IMHO.
If we did it right:
you didn't notice anything
The URLs look cooler.
We broke nothing in SEO.
Perf is better.
Before I could deploy the site a few times a year, and was afraid of it. Yesterday I deployed 11 times.
It was .NET 1.1, then 2.0, then 3.5, then 4.0, then stuck for 8 years.
It ran on a real Windows Server 2008 machine (no VM) at Sherweb who has been a great partner for years. Extremely reliable hosting!
Now it's on Azure under Linux
We upgraded the ASP.NET WebForms app to ASP.NET Core with Mark's genius idea of splitting the app responsibilities such that the original DasBlog blog templating language could be converted to simple Razor pages and we could use ASP.NET TagHelpers to replace WebForms controls.
This allowed me to port my template over in a day with minimal changes.
Once it compiled under .NET Core it was easy to move it from Windows to Linux and testing in WSL first.
We then just moved the other dependent projects to .NET Standard 2 and compiled the while thing as a .NET Core 3.1 LTS (Long Term Support) app. In fact, scroll down to the VERY bottom of this page and you can see what version we're on.
I set up CI/CD for the main site hanselman.com, this blog, and hanselminutes.com.
There are 3 sites now, all behind a reverse proxy from Azure Front Door to handle SSL, Firewalls, and more.
Next steps? Keep it running, watch for errors, 5xx and 4xx and make small incremental changes. The pages are still heavy, while ASP.NET has server response time under 20ms, there's still 2 sec of JavaScript and bunch of old crap to clean up. I've also got two decades of links, so I'm fixing 404s as they are reported or they show up in Application Insights. I made a Dashboard here:
I'm going spend the next month or so blogging about the process and experience in as much detail as I can.
Here's some articles I've already written on the subject:
Real World Cloud Migrations: Moving a 17 year old series of sites from bare metal to Azure
Dealing with Application Base URLs and Razor link generation while hosting ASP.NET web apps behind Reverse Proxies
Updating an ASP.NET Core 2.2 Web Site to .NET Core 3.1 LTS
Moving an ASP.NET Core from Azure App Service on Windows to Linux by testing in WSL and Docker first
If you find any issues with this blog like
Broken links and 404s where you wouldn't expect them
Broken images, zero byte images, giant images
General oddness
Please file them here https://github.com/shanselman/hanselman.com-bugs and let me know!
Oh, and please subscribe to my YouTube and tell your friends. It's lovely.
Sponsor: Never miss a beat with Seq. Live application logs and health checks. Download the Windows installer or pull the Docker image now.
© 2020 Scott Hanselman. All rights reserved.
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
      Migrating this blog to Azure. It's done. Now the work begins. published first on https://deskbysnafu.tumblr.com/
0 notes
philipholt · 5 years ago
Text
Migrating this blog to Azure. It's done. Now the work begins.
I have been running this https://hanselman.com/blog for almost 20 years. Like coming up on 19 I believe.
Recently it moved from being:
a 13(?) year old .NET Framework app called DasBlog running on ASP.NET and a Windows Server on real metal hardware
to
a fresh and new .NET Core app app forked and improved by Mark Downie https://github.com/poppastring/dasblog-core and running under Linux on Azure!
Finally. This blog, the main site, and the podcast site are all running on Azure Web Apps, built in Azure DevOps, and managed by Azure Front Door and watched by Application Insights. Yes I pay for it with cash, I have no unlimited free Azure credits other than my $100 MSDN account.
Mark and I have been pairing on this for months and having a wonderful time. In fact, it's been about a year since this started.
Moving this blog is a significant achievement for a number of reasons, IMHO.
If we did it right:
you didn't notice anything
The URLs look cooler.
We broke nothing in SEO.
Perf is better.
Before I could deploy the site a few times a year, and was afraid of it. Yesterday I deployed 11 times.
It was .NET 1.1, then 2.0, then 3.5, then 4.0, then stuck for 8 years.
It ran on a real Windows Server 2008 machine (no VM) at Sherweb who has been a great partner for years. Extremely reliable hosting!
Now it's on Azure under Linux
We upgraded the ASP.NET WebForms app to ASP.NET Core with Mark's genius idea of splitting the app responsibilities such that the original DasBlog blog templating language could be converted to simple Razor pages and we could use ASP.NET TagHelpers to replace WebForms controls.
This allowed me to port my template over in a day with minimal changes.
Once it compiled under .NET Core it was easy to move it from Windows to Linux and testing in WSL first.
We then just moved the other dependent projects to .NET Standard 2 and compiled the while thing as a .NET Core 3.1 LTS (Long Term Support) app. In fact, scroll down to the VERY bottom of this page and you can see what version we're on.
I set up CI/CD for the main site hanselman.com, this blog, and hanselminutes.com.
There are 3 sites now, all behind a reverse proxy from Azure Front Door to handle SSL, Firewalls, and more.
Next steps? Keep it running, watch for errors, 5xx and 4xx and make small incremental changes. The pages are still heavy, while ASP.NET has server response time under 20ms, there's still 2 sec of JavaScript and bunch of old crap to clean up. I've also got two decades of links, so I'm fixing 404s as they are reported or they show up in Application Insights. I made a Dashboard here:
I'm going spend the next month or so blogging about the process and experience in as much detail as I can.
Here's some articles I've already written on the subject:
Real World Cloud Migrations: Moving a 17 year old series of sites from bare metal to Azure
Dealing with Application Base URLs and Razor link generation while hosting ASP.NET web apps behind Reverse Proxies
Updating an ASP.NET Core 2.2 Web Site to .NET Core 3.1 LTS
Moving an ASP.NET Core from Azure App Service on Windows to Linux by testing in WSL and Docker first
If you find any issues with this blog like
Broken links and 404s where you wouldn't expect them
Broken images, zero byte images, giant images
General oddness
Please file them here https://github.com/shanselman/hanselman.com-bugs and let me know!
Oh, and please subscribe to my YouTube and tell your friends. It's lovely.
Sponsor: Never miss a beat with Seq. Live application logs and health checks. Download the Windows installer or pull the Docker image now.
© 2020 Scott Hanselman. All rights reserved.
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
      Migrating this blog to Azure. It's done. Now the work begins. published first on http://7elementswd.tumblr.com/
0 notes
clearlydeepesttiger · 8 years ago
Text
Microsoft's Visual Studio 2017 is now generally available
Microsoft is making Visual Studio 2017 generally available for download today, March 7.
Developers can download the latest VS release here and the VS 2017 release notes are here. Microsoft supports side-by-side installation of VS 2017 with previous versions of VS and has enabled VS 2017 installation on top of a VS "15" preview or Release Candidate build.
Pricing and packaging for this version of the product remains the same as pricing for VS 2015. A free Community edition for individual developers and those in small shops, will continue to be available. Professional with MSDN and Enterprise with MSDN are the other primary editions. The 2017 Visual Studio Enterprise edition is getting new Redgate Data Tools benefits and a new DevOps Accelerator.
Microsoft's Visual Studio 2017 is now generally available
Microsoft's latest tool suite will run on Windows 10 (version 1507 or higher); Windows 7 Service Pack 1; Windows 8.1; Windows Server 2016 Standard and Datacenter; Windows Server 2012 R2 Essentials Standard and Datacenter.
The newest version of Microsoft's 20-year-old Visual Studio product allows developers to grab only the specific components they need, making its installation faster. Officials said VS 2017 starts up to three times faster than VS 2015 and performance is faster.
The latest Visual Studio release also is designed to better support teams, and includes tools that provide support for building .NET Core 1.0 and 1.1 applications, Azure applications, microservices and Docker containers. Built-in integration with Microsoft's Xamarin tooling enables developers to more easily create mobile apps for Android, iOS and Windows. Live unit testing is also a new, key feature of the product.
VS 2017 includes VS C++ for Linux. The final version of Python is currently not included in VS 2017, as it didn't meet internal criteria required to make the final cut. Microsoft officials said last month that they plan to make a preview of Python available today and that full Python support will return in one of the first VS 2017 updates.
Microsoft is making a number of other updates available today to other pieces of the Visual Studio family. It is releasing Preview 4 of Visual Studio for Mac; Update 1 for Visual Studio Team Foundation Server 2017; and support for mobile apps built with Xamarin and React Native as part of its Visual Studio Mobile Center preview.
Microsoft's messaging to developers these days is that the company is building the "best-in-class tools for every developer" -- not just focused on Windows and Microsoft developers. Company officials are emphasizing that Visual Studio is not just an integrated development environment; it's also part of the company's mobile first/cloud first strategy.
0 notes
powervision1 · 8 years ago
Text
Episode 115 on January Microsoft and community updates—Office 365 Developer Podcast
In episode 115 of the Office 365 Developer Podcast, Richard diZerega and Andrew Coates discuss Microsoft and dev community announcements in January.
http://ift.tt/2jW2IGB
Download the podcast.
Weekly updates
SharePoint Webhooks is now generally available by SharePoint Team
Customizing the “modern” experiences in SharePoint Online by MSDN
Getting started with SharePoint Framework – Tutorials by PnP Team
Microsoft Teams Developer Preview by MSDN
Add-in commands for Word, Excel, and PowerPoint in Office for Mac now in preview by Office Team
Building Office Add-ins using Office.js by Michael Zlatkovsky
Office Dev in Agile and DevOps world by Ashish Trivedi
Interact with Graph and make O365 Groups with AzureFunctions PowerShell by John Liu
Get to know of which Office 365 Groups a user is a member of (Microsoft Graph) by Elio Struyf
Adding guests to an Office 365 Group via the Microsoft Graph API by Elio Struyf
ADAL v3 Diagnostic Logging by Paul Schaeflein
Extending SharePoint with ADAL and the Microsoft Graph API by Julie Turner
Build multi-page SharePoint Framework web parts with React by Waldek Mastykarz
Avoiding dependency issues in SharePoint Framework (SPFx) development by Chris O’Brien
Building real solutions on top of SharePoint Online by Paul Galvin
Got questions or comments about the show? Join the O365 Dev Podcast on the Office 365 Technical Network. The podcast RSS is available on iTunes or search for it at “Office 365 Developer Podcast” or add directly with the RSS http://ift.tt/1oUifnc.
About the hosts
Richard is a software engineer in Microsoft’s Developer Experience (DX) group, where he helps developers and software vendors maximize their use of Microsoft cloud services in Office 365 and Azure. Richard has spent a good portion of the last decade architecting Office-centric solutions, many that span Microsoft’s diverse technology portfolio. He is a passionate technology evangelist and a frequent speaker at worldwide conferences, trainings and events. Richard is highly active in the Office 365 community, popular blogger at aka.ms/richdizz and can be found on Twitter at @richdizz. Richard is born, raised and based in Dallas, TX, but works on a worldwide team based in Redmond. Richard is an avid builder of things (BoT), musician and lightning-fast runner.
  A Civil Engineer by training and a software developer by profession, Andrew Coates has been a Developer Evangelist at Microsoft since early 2004, teaching, learning and sharing coding techniques. During that time, he’s focused on .NET development on the desktop, in the cloud, on the web, on mobile devices and most recently for Office. Andrew has a number of apps in various stores and generally has far too much fun doing his job to honestly be able to call it work. Andrew lives in Sydney, Australia with his wife and two almost-grown-up children.
Useful links
Office 365 Developer Center
Office 365 main blog
dev.office.com blog
Twitter
Facebook
FlipBoard
Slack channel
StackOverflow
http://ift.tt/1j37Z6y
http://ift.tt/1kyGR4O
http://ift.tt/1kyGRl5
Yammer Office 365 Technical Network
O365 Dev Podcast
O365 Dev Apps Model
O365 Dev Tools
O365 Dev APIs
O365 Dev Migration to App Model
O365 Dev Links
UserVoice
The post Episode 115 on January Microsoft and community updates—Office 365 Developer Podcast appeared first on Office Blogs.
from Office Blogs http://ift.tt/2kxLXR8 via IFTTT
0 notes
devopsengineer · 4 years ago
Text
Azure devops msdn
Azure devops msdn Azure devops msdn Latest news today Azure devops msdn Setting up Azure DevOps in Organizations and Enterprises Microsoft recently rebranded its CI/CD and DevOps platform — Microsoft Visual Studio Team Services (VSTS) — to Azure DevOps. Azure DevOps introduced the concept of Azure DevOps Organizations. An Azure DevOps Organization is meant to reflect exactly what its name…
Tumblr media
View On WordPress
0 notes
devopsengineer · 4 years ago
Text
Azure devops msdn
Azure devops msdn Azure devops msdn Latest news headlines Azure devops msdn Azure devops msdn DevOps brings together people, processes, and technology, automating software delivery to provide continuous value to your users. DevOps automates and speeds software delivery. It makes your process and your products more reliable. New to Azure DevOps? Don’t have an account? No worries! Sign up for free…
Tumblr media
View On WordPress
0 notes
devopsengineer · 4 years ago
Text
Azure devops msdn
Azure devops msdn Azure devops msdn New newspaper Azure devops msdn Tag: Azure DevOps The Secret Sauce That Devs Don’t Want IT Pros to Know About Honesty time: that title is a bit click-baitish, but the dev community is using a tool that most IT pros don’t know much/anything about, and it can be a real game changer, especially if you write scripts or work with deployment solutions such as Azure…
Tumblr media
View On WordPress
0 notes
devopsengineer · 4 years ago
Text
Azure devops msdn
Azure devops msdn Azure devops msdn Latest current news Azure devops msdn What domains are used by your Azure DevOps account? Jesse Houwing I love good coffee, meaning strong, dark espresso! Regular Expressions and LINQ are like word-puzzles! I am a trainer for Scrum.org, a member of the Microsoft ALM Rangers and awarded Microsoft MVP. More posts by Jesse Houwing. Jesse Houwing Almost every…
Tumblr media
View On WordPress
0 notes
suzanneshannon · 5 years ago
Text
Migrating this blog to Azure. It's done. Now the work begins.
I have been running this https://hanselman.com/blog for almost 20 years. Like coming up on 19 I believe.
Recently it moved from being:
a 13(?) year old .NET Framework app called DasBlog running on ASP.NET and a Windows Server on real metal hardware
to
a fresh and new .NET Core app app forked and improved by Mark Downie https://github.com/poppastring/dasblog-core and running under Linux on Azure!
Finally. This blog, the main site, and the podcast site are all running on Azure Web Apps, built in Azure DevOps, and managed by Azure Front Door and watched by Application Insights. Yes I pay for it with cash, I have no unlimited free Azure credits other than my $100 MSDN account.
Mark and I have been pairing on this for months and having a wonderful time. In fact, it's been about a year since this started.
Moving this blog is a significant achievement for a number of reasons, IMHO.
If we did it right:
you didn't notice anything
The URLs look cooler.
We broke nothing in SEO.
Perf is better.
Before I could deploy the site a few times a year, and was afraid of it. Yesterday I deployed 11 times.
It was .NET 1.1, then 2.0, then 3.5, then 4.0, then stuck for 8 years.
It ran on a real Windows Server 2008 machine (no VM) at Sherweb who has been a great partner for years. Extremely reliable hosting!
Now it's on Azure under Linux
We upgraded the ASP.NET WebForms app to ASP.NET Core with Mark's genius idea of splitting the app responsibilities such that the original DasBlog blog templating language could be converted to simple Razor pages and we could use ASP.NET TagHelpers to replace WebForms controls.
This allowed me to port my template over in a day with minimal changes.
Once it compiled under .NET Core it was easy to move it from Windows to Linux and testing in WSL first.
We then just moved the other dependent projects to .NET Standard 2 and compiled the while thing as a .NET Core 3.1 LTS (Long Term Support) app. In fact, scroll down to the VERY bottom of this page and you can see what version we're on.
I set up CI/CD for the main site hanselman.com, this blog, and hanselminutes.com.
There are 3 sites now, all behind a reverse proxy from Azure Front Door to handle SSL, Firewalls, and more.
Next steps? Keep it running, watch for errors, 5xx and 4xx and make small incremental changes. The pages are still heavy, while ASP.NET has server response time under 20ms, there's still 2 sec of JavaScript and bunch of old crap to clean up. I've also got two decades of links, so I'm fixing 404s as they are reported or they show up in Application Insights. I made a Dashboard here:
I'm going spend the next month or so blogging about the process and experience in as much detail as I can.
Here's some articles I've already written on the subject:
Real World Cloud Migrations: Moving a 17 year old series of sites from bare metal to Azure
Dealing with Application Base URLs and Razor link generation while hosting ASP.NET web apps behind Reverse Proxies
Updating an ASP.NET Core 2.2 Web Site to .NET Core 3.1 LTS
Moving an ASP.NET Core from Azure App Service on Windows to Linux by testing in WSL and Docker first
If you find any issues with this blog like
Broken links and 404s where you wouldn't expect them
Broken images, zero byte images, giant images
General oddness
Please file them here https://github.com/shanselman/hanselman.com-bugs and let me know!
Oh, and please subscribe to my YouTube and tell your friends. It's lovely.
Sponsor: Never miss a beat with Seq. Live application logs and health checks. Download the Windows installer or pull the Docker image now.
© 2020 Scott Hanselman. All rights reserved.
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
      Migrating this blog to Azure. It's done. Now the work begins. published first on https://deskbysnafu.tumblr.com/
0 notes
philipholt · 6 years ago
Text
Deploying a MSDeploy-packaged Web application to a Linux Azure App Service with Azure DevOps
For bizarre and unknown historical reasons, when using MSDeploy to make a ZIP package to upload a website to a web server you get a massively deep silly path like yada/yada/C_C/Temp/package/WebApplication1/obj/Release/Package/PackageTmp. I use .NET Core so I usually do a "dotnet publish" and get a sane path for my build artifacts in my CI/CD (Continues Integration/Continuous Deployment) pipeline.
I'm using the original pipeline editor on free Azure DevOps (I'm still learning DevOps YAML for this, and this visual pipeline editor IMHO is more friendly for getting started.
However, I'm using a "Visual Studio Build" task which is using MSDeploy and these MSBuild arguments.
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"
Later on in the process I'm taking this package/artifact - now named "drop.zip" and I'm publishing it to Azure App Service.
I'm using the "Azure App Service Deploy" task in the DevOps release pipeline and it works great when publishing to a Windows Azure App Service Plan. Presumably because it's using, again, MSDeploy and it knows about these folders.
However, I wanted to also deploy to a Linux Azure App Service. Recently there was a massive (near 35%) price drop for Premium App Services. I'm running an S1 and I can move to a P1V2 and get double the memory, move to SSDs, and get double the perf for basically the same money. I may even be able to take TWO of my S1s and pack all my websites (19 at this point) into just one Premium. It'll be faster and way cheaper.
Trick is, I'll need to move my Windows web apps to Linux web app. That's cool, since I'm using .NET Core - in my case 2.1 and 2.2 - then I'll just republish. I decided to take my existing Azure DevOps release pipeline and just add a second task to publish to Linux for testing. If it works I'll just disable the Windows one. No need to rebuild the whole pipeline from scratch.
Unfortunately the Linux Azure App Service has its deployment managed as a straight ZIP deployment; it was ending up with a TON of nested folders from MSDeploy!
NOTE: If I'm giving bad advice or I am missing something obvious, please let me know in the comments! Perhaps there's a "this zip file has a totally bonkers directory structure, fix it for Linux" checkbox that I missed?
I could redo the whole build pipeline and build differently, but I'd be changing two variables and it already works today on Windows.
I could make another build pipeline for Linux and build differently, but that sounds tedious and again, a second variable. I have a build artifact now, it's just in a weird structure.
How did I know the build artifact had a weird folder structure? I remember that I could just download any build artifact and look at it! Seems obvious when you say it but it's a good reminder that all these magical black box processes that move data from folder to folder are not black boxes - you can always check the result of a step. The output of one step becomes the input to the next.
I should probably have a Windows Build and Linux Build (two separate build agents) but the site isn't complex enough and it doesn't do anything that isn't clearly cross-platform friendly.
Anthony Chu suggested that I just remove the folders by restructuring the zip file (unzipping/zipping it). Could be a simple way to get both Windows and Linux publishing from a single artifact. I can fix it all up with a fresh build and release pipeline another time when I have the energy to learn this YAML format. (Speaking of the Azure DevOps YAML which doesn't have a friendly editor or validator, not speaking of YAML as a generic concept)
I unzip the weird folder structure, then zip it back up from a new root. It then cleanly deploys to the Linux Azure App Service from the same artifact I made built for the Windows App Service.
Ironically here's a YAML view of the tasks, although I build them with the visual editor.
steps: - task: ExtractFiles@1 displayName: 'Extract files - MSDeploy Crap' inputs: destinationFolder: linuxdrop steps: - task: ArchiveFiles@2 displayName: 'Archive linuxdrop/Content/D_C/a/1/s/hanselminutes.core/obj/Release/netcoreapp2.2/PubTmp/Out' inputs: rootFolderOrFile: 'linuxdrop/Content/D_C/a/1/s/hanselminutes.core/obj/Release/netcoreapp2.2/PubTmp/Out' includeRootFolder: false steps: - task: AzureRmWebAppDeployment@4 displayName: 'Azure App Service Deploy: hanselminutes-core-linux' inputs: azureSubscription: 'Azure MSDN)' appType: webAppLinux WebAppName: 'hanselminutes-linux' packageForLinux: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip' RuntimeStack: 'DOTNETCORE|2.2'
Just to be clear, this isn't standard and it's a pretty rare edge case and it may not work for everyone but isn't it nice to google for a super rare edge case and instead of feeling all alone you find an answer?
Sponsor: Looking for a tool for performance profiling, unit test coverage, and continuous testing that works cross-platform on Windows, macOS, and Linux? Check out the latest JetBrains Rider!
© 2019 Scott Hanselman. All rights reserved.
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
      Deploying a MSDeploy-packaged Web application to a Linux Azure App Service with Azure DevOps published first on http://7elementswd.tumblr.com/
0 notes
suzanneshannon · 6 years ago
Text
Deploying a MSDeploy-packaged Web application to a Linux Azure App Service with Azure DevOps
For bizarre and unknown historical reasons, when using MSDeploy to make a ZIP package to upload a website to a web server you get a massively deep silly path like yada/yada/C_C/Temp/package/WebApplication1/obj/Release/Package/PackageTmp. I use .NET Core so I usually do a "dotnet publish" and get a sane path for my build artifacts in my CI/CD (Continues Integration/Continuous Deployment) pipeline.
I'm using the original pipeline editor on free Azure DevOps (I'm still learning DevOps YAML for this, and this visual pipeline editor IMHO is more friendly for getting started.
However, I'm using a "Visual Studio Build" task which is using MSDeploy and these MSBuild arguments.
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"
Later on in the process I'm taking this package/artifact - now named "drop.zip" and I'm publishing it to Azure App Service.
I'm using the "Azure App Service Deploy" task in the DevOps release pipeline and it works great when publishing to a Windows Azure App Service Plan. Presumably because it's using, again, MSDeploy and it knows about these folders.
However, I wanted to also deploy to a Linux Azure App Service. Recently there was a massive (near 35%) price drop for Premium App Services. I'm running an S1 and I can move to a P1V2 and get double the memory, move to SSDs, and get double the perf for basically the same money. I may even be able to take TWO of my S1s and pack all my websites (19 at this point) into just one Premium. It'll be faster and way cheaper.
Trick is, I'll need to move my Windows web apps to Linux web app. That's cool, since I'm using .NET Core - in my case 2.1 and 2.2 - then I'll just republish. I decided to take my existing Azure DevOps release pipeline and just add a second task to publish to Linux for testing. If it works I'll just disable the Windows one. No need to rebuild the whole pipeline from scratch.
Unfortunately the Linux Azure App Service has its deployment managed as a straight ZIP deployment; it was ending up with a TON of nested folders from MSDeploy!
NOTE: If I'm giving bad advice or I am missing something obvious, please let me know in the comments! Perhaps there's a "this zip file has a totally bonkers directory structure, fix it for Linux" checkbox that I missed?
I could redo the whole build pipeline and build differently, but I'd be changing two variables and it already works today on Windows.
I could make another build pipeline for Linux and build differently, but that sounds tedious and again, a second variable. I have a build artifact now, it's just in a weird structure.
How did I know the build artifact had a weird folder structure? I remember that I could just download any build artifact and look at it! Seems obvious when you say it but it's a good reminder that all these magical black box processes that move data from folder to folder are not black boxes - you can always check the result of a step. The output of one step becomes the input to the next.
I should probably have a Windows Build and Linux Build (two separate build agents) but the site isn't complex enough and it doesn't do anything that isn't clearly cross-platform friendly.
Anthony Chu suggested that I just remove the folders by restructuring the zip file (unzipping/zipping it). Could be a simple way to get both Windows and Linux publishing from a single artifact. I can fix it all up with a fresh build and release pipeline another time when I have the energy to learn this YAML format. (Speaking of the Azure DevOps YAML which doesn't have a friendly editor or validator, not speaking of YAML as a generic concept)
I unzip the weird folder structure, then zip it back up from a new root. It then cleanly deploys to the Linux Azure App Service from the same artifact I made built for the Windows App Service.
Ironically here's a YAML view of the tasks, although I build them with the visual editor.
steps: - task: ExtractFiles@1 displayName: 'Extract files - MSDeploy Crap' inputs: destinationFolder: linuxdrop steps: - task: ArchiveFiles@2 displayName: 'Archive linuxdrop/Content/D_C/a/1/s/hanselminutes.core/obj/Release/netcoreapp2.2/PubTmp/Out' inputs: rootFolderOrFile: 'linuxdrop/Content/D_C/a/1/s/hanselminutes.core/obj/Release/netcoreapp2.2/PubTmp/Out' includeRootFolder: false steps: - task: AzureRmWebAppDeployment@4 displayName: 'Azure App Service Deploy: hanselminutes-core-linux' inputs: azureSubscription: 'Azure MSDN)' appType: webAppLinux WebAppName: 'hanselminutes-linux' packageForLinux: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip' RuntimeStack: 'DOTNETCORE|2.2'
Just to be clear, this isn't standard and it's a pretty rare edge case and it may not work for everyone but isn't it nice to google for a super rare edge case and instead of feeling all alone you find an answer?
Sponsor: Looking for a tool for performance profiling, unit test coverage, and continuous testing that works cross-platform on Windows, macOS, and Linux? Check out the latest JetBrains Rider!
© 2019 Scott Hanselman. All rights reserved.
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
��     Deploying a MSDeploy-packaged Web application to a Linux Azure App Service with Azure DevOps published first on https://deskbysnafu.tumblr.com/
0 notes