How To Deploy Your Application To Azure Using GitHub Actions | CI/CD Pipeline

Поделиться
HTML-код
  • Опубликовано: 28 май 2024
  • ☄️ Master the Modular Monolith Architecture: bit.ly/3SXlzSt
    📌 Accelerate your Clean Architecture skills: bit.ly/3PupkOJ
    🚀 Support me on Patreon to access the source code: / milanjovanovic
    In this video, I'm going to show you how you can deploy your application to Azure, in an Azure App Service instance, using GitHub Actions. We're going to implement the deployment pipeline as a GitHub Action from scratch. And I'll also show you how to set up the Azure App Service instance.
    Source code:
    github.com/m-jovanovic/ci-cd-...
    Join my weekly .NET newsletter:
    www.milanjovanovic.tech
    Read my Blog here:
    www.milanjovanovic.tech/blog
    Subscribe for more:
    ruclips.net/user/MilanJovano...
    Chapters
    0:00 What we are deploying
    1:20 Adding the GitHub Action
    5:00 Triggering the CI/CD Pipeline
    6:50 Azure App Service setup
    8:40 Deploying to Azure from GitHub Action
  • НаукаНаука

Комментарии • 142

  • @MilanJovanovicTech
    @MilanJovanovicTech  Год назад +5

    Join more than *4100+ .NET engineers* already reading my weekly newsletter.
    One actionable tip, every Saturday, less than a 5-minute read:
    www.milanjovanovic.tech/

  • @anicemind3893
    @anicemind3893 Год назад +13

    Hi Milan, I discovered your channel a few weeks ago and am totally enthusiastic. That's why I immediately became a Patreon member to support your excellent work - and of course to have access to your source code 😉.
    With your targeted and concise way you fill exactly the knowledge gaps that certainly very many of us (I mean experienced developers especially in enterprise area) currently - still - have, without going to the absolute beginner level every time. I know what I am talking about, I have been in the business for over 30 years.
    Above all, this saves numerous trial & error rounds and thus precious time. You get a very good foundation from which you can then go deeper.
    Your short videos were in many cases already much more valuable and substantial for me than many an hour-long tutorial in Pluralsight, Udemy or here in RUclips.
    It assumes a lot of knowledge and also practical experience. But that's what makes your content so valuable for many developers. Straight to the point, the essential knowledge, perfect! Every minute of your videos is worth its weight in gold. Your speed is no problem at all, thanks to RUclips. 😊
    Please keep doing exactly what you're doing. I'm already really looking forward to what's to come. It will be a feast!
    Cheers, Felix.

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад +3

      Hi Felix,
      I had a rough day yesterday and saw your comment in the evening. It's an understatement to say that you cheered me up a little. 😊
      I really appreciate your kind words, and promise to keep on making good videos (and improving with each one).
      Stay awesome!

  • @radeksendecki9922
    @radeksendecki9922 Год назад +1

    Love your videos. It's great that you put the Azure topic on the table. Wait for more!

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад +2

      Thanks, Radek. Is Azure your primary choice?

    • @radeksendecki9922
      @radeksendecki9922 Год назад

      @@MilanJovanovicTech if you think about a cloud provider - yes, Azure is my primary choice

  • @zachedo3538
    @zachedo3538 Год назад +1

    the best explanation about CI/CD Pipeline using GitHub Actions! Thanks Milan 🙂

  • @sidhantverma
    @sidhantverma Год назад +16

    Nice Video Millan. Following the same series, how about next on CI/CD using Azure DevOps with different environments and their respective appsettings/keyvaults configurations? 😊😊

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад +7

      I'll think about it, not a bad idea

    • @mylesdavies9476
      @mylesdavies9476 Год назад +3

      I would welcome something similar or just general guidance on dealing with multiple environments and how this is managed within the code / config

  • @EmptyGlass99
    @EmptyGlass99 Год назад +1

    Another comprehensive but concise tutorial - thanks

  • @db81zg
    @db81zg 2 месяца назад +1

    odličan video Milane - kratko, jasno i efikasno. 🚀

  • @saroshwadia
    @saroshwadia Год назад +5

    Awesome video!!! Clear and very easy to follow and to the point. 3 thumbs up 🙂

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад

      Thank you so much! 😊

    • @saroshwadia
      @saroshwadia Год назад

      @@MilanJovanovicTech Is there a way to create an azure publish profile from the yaml file directly rather than first creating it in azure and then using it in yaml?

  • @kasunjalitha2300
    @kasunjalitha2300 10 месяцев назад +1

    Awesome comprehensive video. Thanks for the information. 👏👏👏

  • @cavila0217
    @cavila0217 Год назад +2

    it is a tip-top explanation, thanks a bunch Milan!

  • @danielarandamartin2709
    @danielarandamartin2709 7 месяцев назад +1

    It was very very good video. Thank you Milan !

  • @SajidAliSoftwareEngineer
    @SajidAliSoftwareEngineer Год назад +1

    Thank you so much Milan I need it because today I have setup Azure server for the API and was thinking how to use CI/CD pipline.
    🥰

  • @34823ehwe6w
    @34823ehwe6w Год назад +4

    Keep up the good work man, great job ❤️❤️

  • @majormartintibor
    @majormartintibor Год назад +1

    Very useful video. Def saved for later use, will come in handy I am sure.

  • @user-jg9fs6et5d
    @user-jg9fs6et5d 3 месяца назад

    This is gold. Thanks for the explanation. You saved me a lot of time.

    • @MilanJovanovicTech
      @MilanJovanovicTech  3 месяца назад

      Check the blog post in the description for the sample YML file. Cheers! 😁

  • @cristianodias3529
    @cristianodias3529 Год назад +2

    A video about testing + code coverage report configuration in CI/CD pipeline would be delightful!

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад

      I did something with CodeCov because it was free, so might do that 🤔

    • @muhammedalikhan7559
      @muhammedalikhan7559 8 месяцев назад

      I completely agree. Shall we look forward to it?

  • @raachchaima8995
    @raachchaima8995 5 месяцев назад

    I really like your enthusiasm ! thank you !

  • @aykani
    @aykani Год назад +2

    Great informative video! To the point. thanks.

  • @KolawoleBayoAdesina
    @KolawoleBayoAdesina Год назад +1

    Thanks for this video Milan

  • @recepciftci2642
    @recepciftci2642 Год назад +2

    Awesome video as always. Good job

  • @surya779
    @surya779 Год назад +1

    I was just thinking to create a video on the same subject and I found yours. Now I gave up my idea as I think you created an even better from the one I could have created.

  • @samcolserra2425
    @samcolserra2425 9 месяцев назад +1

    Thanks, your config worked

  • @simonegiuliani4913
    @simonegiuliani4913 4 месяца назад +1

    Thanks Milan!

  • @mizrachiran
    @mizrachiran 6 месяцев назад

    Thank you for this video

  • @krzysztofbarbarski3966
    @krzysztofbarbarski3966 Год назад +1

    Definitely this will force me to move my Github projects to Azure :)

  • @AbdallahHegab
    @AbdallahHegab Год назад +1

    i like your videos , you have a great content , i consider you as my mentor

  • @muhammedalikhan7559
    @muhammedalikhan7559 8 месяцев назад +2

    Milan, amazing work. Can you let me know if you are planning to have that video where you cover the unit tests and coverage bits as well using github actions. Again, amazing work.

    • @MilanJovanovicTech
      @MilanJovanovicTech  8 месяцев назад +1

      Thanks for reminding me about that, I'll work on something :)

  • @lasindadilshan7860
    @lasindadilshan7860 Год назад +1

    Great 🚀🚀! Git hub code will always helpful to all .
    need project using clean architecture sessions A to Z with CI/CD. 😁

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад +1

      Care to explain more what kind of project you want to see?

  • @bharaniraghavender
    @bharaniraghavender Год назад +1

    Exceptional videos.
    Would like to request for higher resolution for future videos 🙂

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад

      What do you mean by higher resolution? 🤔
      It's 1920x1080

    • @bharaniraghavender
      @bharaniraghavender Год назад

      @@MilanJovanovicTech
      2K & 4K
      I do understand export time will be very high.
      If it's too much of time consuming then we don't mind 1080p, your content is more important than the resolution 🙂

  • @harrylyod3402
    @harrylyod3402 3 месяца назад +1

    hi, will love to see the step where you add the test too. thanks

  • @stunna4498
    @stunna4498 Год назад +1

    Another banger video! You should do a Azure Repos version! nonetheless good work !

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад

      Bangers is all I produce 😂
      I have to add Azure DevOps to the list it seems, it was asked more than once.

  • @nomad191
    @nomad191 Год назад +1

    Awesome Video !! keep it up ..

  • @avecesar
    @avecesar Год назад +1

    Thank you!!

  • @valy_berea
    @valy_berea 7 месяцев назад +1

    Thanks for this Video. I subscribed and liked your video. Do you have one for running tests and seeing the coverage as you mentioned in this video?

    • @MilanJovanovicTech
      @MilanJovanovicTech  7 месяцев назад +1

      I recorded one this week, but it won't come out until a few weeks from now :) Though I was using the ReSharper code coverage tool.
      You can also use SonarQube for that.

    • @valy_berea
      @valy_berea 7 месяцев назад

      I use Resharper and DotCover for seeing that in the IDE. I wanted to be able to see it in some report on the build so therefore in the github action workflow running the tests on a PR for example.
      Thank you for your videos. They are simple and to the point so that you get something working and then just develop from there according to your needs.

    • @MilanJovanovicTech
      @MilanJovanovicTech  7 месяцев назад

      @@valy_berea I built something like that before with CodeCov 😁 I'll make a video about it then!

  • @compman73
    @compman73 8 месяцев назад +1

    Awesome same as always 👍

  • @Muhammadnaeem-nj6pk
    @Muhammadnaeem-nj6pk Месяц назад +1

    Hi @MilanJovanovicTech That is a really good video. Love to see it

  • @djaalabahmed2038
    @djaalabahmed2038 10 месяцев назад +1

    Great 👍👍

  • @jhonnidarshan3094
    @jhonnidarshan3094 Год назад +1

    nice one

  • @bashettyharshitha1060
    @bashettyharshitha1060 Год назад +1

    Hi, is it possible to automate the step to get publish profile. Manually adding the publish profile is tedious task if we have alot of web apps

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад

      I'm not sure, to be honest. I don't know a way out of the box.

  • @medzik1993
    @medzik1993 Год назад +1

    Hi Milan!
    Can U video about what is your choice about implementing background task ?
    Have U ever use hangfire ?

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад +1

      I have a video about the Outbox pattern using Quartz, check that out

  • @irfanarslan7395
    @irfanarslan7395 9 месяцев назад

    Hello Milan, i need a little help about deployment.
    I have a dotnet web api project which I use docker compose for deploymet. In compose file i defined my app and sql server db as containers. I wanna deploy this project on Azure via github actions. How workflow file should be defined ? Thanks

  • @imtheshadow6396
    @imtheshadow6396 Год назад +1

    Hi Milan, thank you for the awesome toutrials, I almost watched all your youtube videos in a couple days
    I have a question on CI/CD, can I apply the same steps to publish web API project into virual machine and that app hosted on IIS?
    Currently, I'm publishing the app manually using visual studio, can I apply the same GitHub aciton to publish it instead of manually doing it, because visual studios uses publish profile as well to publish into VM
    Thank you, keep being awesome

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад

      The last step is using a GitHub action the deploy to Azure.
      You will need something different to deploy to IIS. Maybe this can be helpful:
      devopsjournal.io/blog/2020/11/24/github-actions-with-private-runner-iis

    • @imtheshadow6396
      @imtheshadow6396 Год назад +1

      @@MilanJovanovicTech Thank you appreciate your effort, will check it out

  • @nelsongomez8547
    @nelsongomez8547 Год назад +2

    Hello friend, conrgrats for your video.
    I followed this one, and i get an error, such as:
    Error: Deployment Failed with Error: Error: No package found with specified pattern: ./publish
    How to know What the specifict path is? how to recognize it?
    I hope your answer,

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад +1

      Looks like something with the .yml file?
      dotnet publish is expecting something in the ./publish path, but there isn't anything there.

    • @nelsongomez8547
      @nelsongomez8547 Год назад

      ​@@MilanJovanovicTech Hello Milan, thanks for your quick response. I could resolved that.
      Milan in some part of your video, you explained about the second part of video. This part is relationed to testing project.
      Can you share me that video. On the other hands, you have some video about setup database?
      I hope your answers.
      Regards,
      Nelson

  • @stephen9646
    @stephen9646 2 месяца назад +1

    Hi Milan is it possible to deploy a .NET core Web API built with clean architecture without using CI/CD Pipeline?

  • @b000ta
    @b000ta Месяц назад

    would love to add deployment through docker images part as well

    • @MilanJovanovicTech
      @MilanJovanovicTech  Месяц назад +1

      That'd be interesting for a future video

    • @b000ta
      @b000ta Месяц назад

      @@MilanJovanovicTech just waiting whether you will use self-hosted runner or some external action like "appleboy/ssh-action". plus please cover SSH deployment instead of azure app service

  • @abdulkabeer7953
    @abdulkabeer7953 2 месяца назад

    Hello Milan, this is really a gem and I followed your video and went very close to the deployment on Azure. I watched your video very carefully and when I go to download the publish profile from my Microsoft Azure account it showed a message that "Basic Authentication is disabled.". So kindly help me out with this. Thanks

    • @MilanJovanovicTech
      @MilanJovanovicTech  2 месяца назад

      No idea, to be honest. How is that possible if you're logged into Azure?

    • @abdulkabeer7953
      @abdulkabeer7953 2 месяца назад

      @@MilanJovanovicTech Yeah I figured out the issue and resolved it. Thanks for your instant reply.

  • @ChrisDev-wi9rl
    @ChrisDev-wi9rl 6 месяцев назад +1

    Hi Milan, great video. I am building on the solution to include github secrets to create secure app accessible environment variables for my firebase config and more. Struggling to get the variables to flow through - have you done anything similar?

    • @MilanJovanovicTech
      @MilanJovanovicTech  6 месяцев назад

      Yeah. They should be accessible via {{secrets.YOUR_SECRET_NAME}}

  • @matthewrossee
    @matthewrossee 6 месяцев назад +1

    What do you prefer? Publishing as "code" or a docker container? I'm sure it's easier to develop locally using docker, but does it make a difference when deploying to azure?

    • @MilanJovanovicTech
      @MilanJovanovicTech  6 месяцев назад

      You can deploy an image and run it inside a container

    • @matthewrossee
      @matthewrossee 6 месяцев назад

      @@MilanJovanovicTech When would you decide to deploy an image instead of the code approach in the video? I know the advantages of docker when running locally, as well as deploying it to hosting services that don't have native .NET support, so you just spin up the container. But on azure?

  • @krizalfaro
    @krizalfaro 19 дней назад

    how to separate them into different jobs publish and another implement? I tried to do it but I have an Error: Deployment Failed, Error: No package found with specified pattern: ./publish

  • @TechDevelopNet
    @TechDevelopNet Год назад +1

    Hi Milan,
    I really like your videos, Can you do the same for AWS ec2 (linux/windows) as well?

  • @diegovegaandrade4902
    @diegovegaandrade4902 Год назад +1

    Something were wrong with me, the azure function is deleting itself after the action is complete:(

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад

      How is that possible? 🤔

    • @diegovegaandrade4902
      @diegovegaandrade4902 Год назад

      @@MilanJovanovicTech idk I try deploying with vsc and then with github actions and that's happened. And I did in that way because the GitHub actions doesn't finish as well with the .zip package

  • @MateStier-hd4nv
    @MateStier-hd4nv 4 месяца назад +1

    What ticketing system do you prefer?:D

    • @MilanJovanovicTech
      @MilanJovanovicTech  4 месяца назад

      Don't prefer any of them, but I've used Jira most often

  • @MarcusKaseder
    @MarcusKaseder Год назад +1

    Didn't smash the like button but Milan got the strength to finish the video anyway
    Just joking, take my like ;-)

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад +1

      Thanks Marcus 🤣
      I had a few sips of coffee, and that got me throuhh

  • @osantini
    @osantini 8 месяцев назад +1

    thank you, save me

  • @finiskyyy
    @finiskyyy 3 месяца назад +1

    Hello guys! Am I the only one who gets an error saying "Deployment Failed, Error: Publish profile is invalid for app-name and slot-name provided." with this code? I'm pretty sure I configured everything the way Milan did. Cheers from Bosnia! ☺

    • @MilanJovanovicTech
      @MilanJovanovicTech  3 месяца назад

      The source code for this video is public: github.com/m-jovanovic/ci-cd-example
      Did you add the publish profile as a secret?

    • @finiskyyy
      @finiskyyy 3 месяца назад

      @@MilanJovanovicTech I looked into the source code you kindly provided and followed your steps to a letter. I've read that the slug name plays some role in this so i added it as well ("production" seems to be the default). No amount of researching seems to help. Thank you for your response!

    • @omaralaaelzanaty5017
      @omaralaaelzanaty5017 2 месяца назад

      I have the same error and couldn't fix it ,can i have any help please

  • @Taalaibek
    @Taalaibek Год назад +1

    🚀

  • @quincengomane7716
    @quincengomane7716 Год назад

    Hi @Milan Jovanović
    I would to ask if it is possible deploying multiple Service that are within one Solution. Do we use the same method that you have used here?

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад +1

      Yes, but you'll need separate Azure App Service instance + publish profiles in the build pipeline.

  • @umasankarsivasubramanian607
    @umasankarsivasubramanian607 Год назад +1

    How to become a patreon member?

  • @yanko694
    @yanko694 Год назад +1

    Why not Azure DevOps CI/CD...

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад +2

      GitHub is my repository of choice, so it made sense to use GitHub Actions

  • @vinalpatel3269
    @vinalpatel3269 Месяц назад

    I have tried this but won't work

    • @MilanJovanovicTech
      @MilanJovanovicTech  Месяц назад

      What's not working?

    • @vinalpatel3269
      @vinalpatel3269 Месяц назад

      @@MilanJovanovicTech when cicd runs it deploys whole code insted of its build/published items.

  • @muhammadadil9228
    @muhammadadil9228 Год назад +1

    Getting this error when I hit the url: You do not have permission to view this directory or page. This is shown on chrome.

    • @MilanJovanovicTech
      @MilanJovanovicTech  Год назад

      You mean the URL from the video? I turned it off.

    • @muhammadadil9228
      @muhammadadil9228 Год назад

      @@MilanJovanovicTech No man! the url of azure service... 😥

  • @bozapa
    @bozapa Месяц назад

    Bro i had some probelms with "actions/webapps-deploy@v2". "azure/webapps-deploy@v2" works for me.