It's reading notes time! It is a habit I started a long time ago, where I share a list of all the articles, blog posts, and books that catch my interest during the week.
Bringing the Aspire dashboard to ACA (Mark Downie) - One of the great tool that was released with Aspire is its dashboard as it shows traces across services. This post shares how to enable this amazing tool in Azure.
In this post, I will share a few things that we need our attention when deploying a .NET isolated Azure Function from GitHub to Azure using the Zip Deploy method. This method is great for fast deployment and when your artefacts are zipped in a package.
Note The complete code for this post is available on GitHub
Understanding Zip Push/Zip Deploy
Zip Push allows us to deploy a compressed package, such as a zip file, directly to Azure. It could be part of a continuous integration and continuous deployment (CI-CD) or like in this example it could replace it. This approach is particularly useful when you want to ensure your artifacts remain unchanged across different environments or when aiming for the fastest deployment experience for users.
While CI-CD is excellent for keeping your code up-to-date, zip deployment offers the advantage of speed and consistency. It eliminates the need for compilation, leading to quicker uploads and deployments.
Preparing Your Package
It’s crucial to package with all necessary dependencies the code required. There is no operation to fetch any external packages during the deployment, the zip file will be decompressed and that's it. The best way to ensure you have everything you need is to publish your code, to a folder and then go in that folder and zip all the files.
dotnet publish -c Release -o ./out
Don't zip the folder, it won't work as expected.
You need to go inside the folder and select all the files and zip them to create your deployment artefact.
The next step is to make your artefact available online. There are many ways, but for this post we are using GitHub Realease. From the GitHub repository, create a new release, upload the zipped file created earlier and publish it. Note the URL of zipped files from the release.
Preparing The ARM Template
For this one-click deployment, we need an Azure Resource Manager (ARM) template. This is a document that describes the resources that we want to deploy to Azure. To deploy the zipped file into the Azure Function there are two particularities that required our attention.
Here we define an Windows Azure Function and the WEBSITE_RUN_FROM_PACKAGE needs to be set to 1. The WEBSITE_RUN_FROM_PACKAGE is the key that tells Azure to use the zip file as the deployment artefact.
Then to specify where the zip file is located we need to add an extension to the Azure Function.
The packageUri property is the URL of the zipped file from the GitHub release. Note the dependsOn property that ensures the Azure Function is created before the extension is added. The complete ARM template is available in the GitHub repository.
One-click Deployment
When you have your artefact and the ARM template uploaded to your GitHub repository, you can create a one-click deployment button. This button will take the user to the Azure portal and pre-fill the deployment form with the information from the ARM template. Here is an example of the button for markdown.
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FFBoucher%2FZipDeploy-AzFunc%2Fmain%2Fdeployment%2Fazuredeploy.json)
The has three parts, the first is the image that will be displayed on the button, the second is the link to the Azure portal and the third is the URL of the ARM template. The URL of the ARM template is the raw URL of the file in the GitHub repository, and it needs to be URL encoded. The URL encoding can be done using a tool like URL Encode/Decode.
Final Thoughts
Zip deployment is a powerful tool in your Azure arsenal by itself of part of a more complex CI-CD pipeline. It's a great way to make it easier for people to deploy your solution in their Azure subscription without having to clone/ fork the repository.
Video version
If you prefer, there is also have a video version of this post.
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Dapr v1.13 is now available (Dapr project maintainers) - I really like those post that goes over the news and also named all the contributors. This is when you see how many people are involved.
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Planning for Resiliency with Azure OpenAI (Matthew Anderson) - Like everything else in the cloud we need to think about resiliency. This nice post get us started and explains 2 different architectures for our system.
My Top 10 NEW Visual Studio Features of 2023 for .NET Developers - .NET Blog (James Montemagno) - I don't code everyday and when I do it's on all kind of device and OS so I end up more often using VS Code. But, when I can use Visual Studio it's always a treat. In this post, James shares his favorite new features part of that great IDE. Those are only the recent ones, there are so much more!
Scaling Docker Compose Up (Milas Bowman) - Interesting post that do a deep dive into docker compose file.
On day 2 of GitKon 2023, I presented a short beginner-friendly introduction to Git without using any "command lines". Too many are still using USB keys today to share files and collaborate on documents. When asked why they don't use Git, the answer is most likely that it's too complicated, too technical, and too much work.
Here is the good news, it doesn't need to be! This video shares the why and how Git is for everyone and share simple tips to make the how accessible!
Every Monday, I share my "reading notes". Those are a curated list of all the articles, blog posts, podcast episodes, and books that catch my interest during the week and that I found interesting. It's a mix of the actuality and what I consumed.
You think you may have interesting content, share it!
Cloud
Deploying an Azure Function App with Bicep (Mark Heath) - A nice example of a bicep script with a few resources. Not too many so it is complicated but enough to cover some particularities.
Blazor Power BI Paginated Reports (Michael Washington) - Ooooh It's been a moment since I play with my friend PowerBi... This is very interesting. I just needed a project with data... That shouldn't be that hard to find, right?
- I really like this book. It validates that it's okay to rethink decisions, to change your mind. The goal is to have (and keep) an open mindset. It seems easier than it is, of course. I heard amazing comments about this author, so it's probably not the last one I will read from him.
How To Develop Apps Like PUBG (Apoorv Gehlot) - An interesting article that gives us an idea of how a game like pugs got that success, and who they manage that rapid growth.
How to configure log4net on Azure App Service (Benjamin Perkins) - You prefer log4net because your App is also deployed on-premise, or because you are just doing a lift&shift, or any other reason, this post is for you, every little things are explained in details.
Integrating Azure Advisor Into Your Workday (Timothy Warner) - The azure advisor is one of my favorite tools in Azure, always something nice to do with it... Well until you fix it.
Securing Web Applications - Simple Talk (Vishwas Parameshwarappa) - Security should be in our priority in this time of APIs and IoT.... Excellent post to get started with multiple security breaches and how to fix them.
Tuples In C# (Mahesh Chand) - Tuples are one feature introduced in .Net 4.0 that can simplify our life a lot. Learn how in this post.
Windows Insider Program.next() (Dona Sarkar) - The Windows 10 anniversary edition is out since August 2nd. This post is about the community who made that possible, and explains how you could join.
Getting to Know #Azure Mobile App - Nice tutorial that leverage the recently GA Azure Mobile App to build AskAlex: an universal application that looks promising...;)
Exception Handling with Logic Apps (Jeff Hollan) - Great tutorial that shows how to solve a extremely frequent problem... the exception handling.
Using Logic Apps Webhook Triggers (Jeff Hollan) - Fantastic tutorial that shows how to create an HTTP trigger in today's interface/ designer.
Post-Release Goodies (Lucian Wischik,, John Dan) - This post helps us to get started with the .Net.Core open source project by listing some links.
Introducing Smart Unit Tests (Pratap Lakshman) - This post is perfect to get started with the new unit test features. It contains also a link to a quick introduction video.
If you have not already seen the brief video on the Smart Unit Tests feature , I urge you to do so;
DefinitelyTyped TypeScript definitions now on NuGet (Jason Jarrett) - Typescript is really powerful and easy to use. And these days it’s even easier to use with all those new DefinitelyTyped package for NuGet.
Polymorphism: Part 1 (John Teague) - Great tutorial that explains an important concept in programmation.
Learning Center - Wow, I just discover this web site, and I thought to share it because it's an incredible source of information well-structured and clear.
jQuery Mobile 1.3.0 Released - New release of jQuery Mobile the library to use for a Responsive Web Design (RWD) or for a mobile first approach.
Integration
What’s new in BizTalk360 v6.0? (Saravana Kumar) - Biztalk360 is holding his promises by releasing a new version after 4-5 month. This post list what the changes.
Drunk on Cloud Kool-Aid? Time To Sober Up (Justin Moore) - It's never all white or all black. This post put some gray in the picture of what will be the cloud in five years.
Keeping your options open in a cloud solution (Buck Woody) - One thing that is great about Windows Azure is that you can use anything with it. Not only Microsoft language or application, not event only Azure services.
A First Look at SQL Server Data Tools - Include in the new visual studio 2012, and downloadable for 2008 and 2010, this amazing tool is a must for all developer. And it's free! .[video]
Windows 8 Shortcut Keys (John Evdemon) - Since I'm just starting to use Windows 8 this post is clearly useful.
3 Easy Exercises to Boost Your Creativity (2012| Comment Nadia Goodman| September 26) - I will not go that far, but the main goal is there. If you want be create the next Instagram, you must train your creativity.
Architecting with AWS – Before You Go (Jeremiah Peschka) - Nice post about an architect training on AWS. The equivalent also exists for Azure... even if this post didn't talk about it.
What's New? - Wow the perfect monster machine to run those NoSQL databases...
All Things Distributed (Werner Vogel) - Nice post about the new high performance EC2 of AWS. All about the specs and features of this new instance type.
What Exactly Is GitHub Anyway? (Klint Finley) - Excellent post that demystify all unknown about GitHub. Nice work! A post that you should definitely read.
Azure CDN – with AzureCdn.Me and MVC3 (Iain Hunter) - Nice post and great tool. The AzureCdn.Me even has a NuGet package... This tool will simplify so much your work with the Azure content delivery network (CDN).
Advanced queries with Lucene.NET (codewrecks.com) - Lucene.NET is the best option to do full text search in Azure. This great post explains how to perform advanced queries.
Entity Framework and Open Source(Scott Gu) - I'm really happy to see that the Entity Framework is now completely open source and on CodePlex. Learn a bit more about version 5 and even 6.
ASP.NET Web API and Azure Blob Storage (Yao - MSFT) - Super tutorial that show step by step how to manage your Azure Blob Storage by code, by doing a nice helper class.
The Patient Knows What’s Wrong with Him - Nice thoughts, we shouldn't expect the solution from the user... only partial information. The analogy with the doctor is a really good idea, I’m sure I will reuse it someday...
[…]And the user exclaimed with a snarl and a taunt, “It’s just what I asked for, but not what I want!” That was 30 years ago, and I doubt the poem was new then.[…]