Azure DevOps release pipeline: Deploy a .NET application to IIS (CI/CD YAML tutorial)

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 มิ.ย. 2024
  • This video will look at creating a Azure DevOps release pipeline to deploy a .NET Web API to IIS.
    In this CI/CD tutorial, we'll show you how to set up an environment so you can release to IIS.
    Afterwards, we'll talk through how to link with GitHub and start to code a release pipeline using YAML.
    The tasks will involve the artifacts download, using resources to use your release pipeline to link to your build pipeline, variables setup and IIS deployment.
    This will help you set up continuous integration (CI) and continuous deployment (CD) for your .NET website.
    💻 Download the code example for this demo 💻
    www.roundthecode.com/dotnet-c...
    📖 Learn .NET and C# with our online courses 📖
    www.roundthecode.com/dotnet-c...
    🎥 .NET CI/CD with Azure playlist 🎥
    • .NET CI/CD with Azure
    ► More information:
    www.roundthecode.com/dotnet-t...
    ► Chapters
    0:00 Coming up...
    0:06 Why Azure Release Pipeline is important for CD
    0:43 Dependency injection course
    0:52 Set IIS website
    1:42 Create Environment in Azure DevOps
    3:03 Rename pipelines
    3:37 Create Release pipeline
    4:48 Code YAML file for Release Pipeline
    11:50 Run Release Pipeline
    12:38 How the Package path works
    13:26 Top Tip
    14:08 What we've learnt
    #azure #pipelines #dotnet
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 67

  • @BigRouch
    @BigRouch ปีที่แล้ว +18

    I cannot explain enough how this video is infinitely better than all of the Microsoft documentation combined. Great job. Thank you.

    • @RoundTheCode
      @RoundTheCode  ปีที่แล้ว +2

      Thanks for the comment BigRouch. Glad it benefited you.

  • @joehernandez3231
    @joehernandez3231 3 หลายเดือนก่อน +2

    Great video! It's extremely helpful as I put together build and deploy pipelines at my current job. The explanation near the end about the Package location is also very much appreciated.

    • @RoundTheCode
      @RoundTheCode  2 หลายเดือนก่อน

      Glad it helped!

  • @andrewbrady5839
    @andrewbrady5839 ปีที่แล้ว +2

    Thanks very much for this. very good and clear tutorial!

    • @RoundTheCode
      @RoundTheCode  ปีที่แล้ว

      You're welcome Andrew. Glad you found it useful.

  • @piriyaie
    @piriyaie ปีที่แล้ว

    Thank you sir for this great and easy understandable video! Thank you!

    • @RoundTheCode
      @RoundTheCode  11 หลายเดือนก่อน

      Glad it was helpful!

  • @mshahabfar
    @mshahabfar 8 หลายเดือนก่อน

    This video answered lots of my questions. If I want to set up a website on my local machine IIS and use Azure DevOps for CI/CD, should I have a valid IP for my local machine?

  • @khanfaizan05
    @khanfaizan05 หลายเดือนก่อน

    Very nice.. very clear explanation.. loved it.. thank you very much ❤

    • @RoundTheCode
      @RoundTheCode  หลายเดือนก่อน

      Thanks for the comments.

  • @androidsavior
    @androidsavior 5 หลายเดือนก่อน

    at the end, will this only deploy the changed/new files or it will deploy the whole project on each github commit ?

    • @RoundTheCode
      @RoundTheCode  5 หลายเดือนก่อน

      It will deploy the whole project.

  • @germansantiesteban8085
    @germansantiesteban8085 3 หลายเดือนก่อน

    Great explanation. Thanks

    • @RoundTheCode
      @RoundTheCode  3 หลายเดือนก่อน

      Glad it was helpful!

  • @mrshodz
    @mrshodz 10 หลายเดือนก่อน +1

    Great Video.

  • @jephrennaicker4584
    @jephrennaicker4584 9 หลายเดือนก่อน

    very informative!

    • @RoundTheCode
      @RoundTheCode  9 หลายเดือนก่อน

      Thanks. Glad it was helpful.

  • @bystronq
    @bystronq ปีที่แล้ว +1

    thank you 🎉

    • @RoundTheCode
      @RoundTheCode  ปีที่แล้ว

      Thanks for the comment Cemal

  • @Astynax777
    @Astynax777 ปีที่แล้ว

    This video helped me out a lot to locate the artifact. One question though: the title indicates it's a CI/CD tutorial, but your trigger for the release pipeline is "none". How do we wire it up to trigger after a successful build to make it truly a CD solution?

    • @RoundTheCode
      @RoundTheCode  ปีที่แล้ว

      This article should explain how to do that. In the resources, there is a 'trigger' option. That might be a way of triggering a resource after a resource.
      learn.microsoft.com/en-us/azure/devops/pipelines/process/pipeline-triggers?view=azure-devops

    • @gabrielligeiro1235
      @gabrielligeiro1235 4 หลายเดือนก่อน

      basically, just add "trigger: true" here "resources:
      pipelines:
      - pipeline: 'BuildCustomName'
      project: 'YourAzureDevOpsProjectName'
      source: 'YourAzureDevOpsBuildPipelineName'
      branch: 'YourGitBrench'
      trigger: true"

  • @Mo-ef9yt
    @Mo-ef9yt ปีที่แล้ว

    Very nice video, thanks
    However will this procedure work if the website is hosted on a on-premis webserver that has IIS installed? Meaning that the website is not hosted on Azure.

    • @RoundTheCode
      @RoundTheCode  ปีที่แล้ว +1

      Yes it will. As long as the Azure agent is installed on the server you're deploying to, it will work.

  • @AG34273
    @AG34273 ปีที่แล้ว

    Great content! IISWebAppManagementOnMachineGroup has like 10 more required input properties. How did you get past not specifying them?

    • @AG34273
      @AG34273 ปีที่แล้ว +1

      never mind, it lets me save past the error/warning.

    • @RoundTheCode
      @RoundTheCode  ปีที่แล้ว

      Good that you found the content useful Ashish.

  • @naeemansari227
    @naeemansari227 ปีที่แล้ว

    very nice explanation and content and I understand the flow and process.
    I'm trying to create environment on the Azure_DevOps.
    While I run the Shell Script on my server so I got bellow error
    "A connection attempt failed because the connected party did not properly respond after a period of time, or established
    connection failed because connected host has failed to respond.
    Failed to connect. Try again or ctrl-c to quit"

  • @udaynarasimharajukalidindi638
    @udaynarasimharajukalidindi638 ปีที่แล้ว

    thanks

  • @patrickmathew9283
    @patrickmathew9283 10 หลายเดือนก่อน

    Hi sir.. Thank you for the great video.. There is one question that how I can connect sql server project on azure devops

    • @RoundTheCode
      @RoundTheCode  10 หลายเดือนก่อน

      Hi Patrick,
      With a SQL Server project, you can use the DACPAC file to generate any changes you need. There is more about it here:
      learn.microsoft.com/en-us/azure/devops/pipelines/targets/azure-sqldb?view=azure-devops&tabs=yaml

  • @oloidhexasphericon5349
    @oloidhexasphericon5349 5 หลายเดือนก่อน

    Is there a way to add App_Offline.htm in this script before doing a release ?
    Is there a general Azure devops YAML documentation available somewhere ? I can't seem to find it.

    • @RoundTheCode
      @RoundTheCode  5 หลายเดือนก่อน

      Read this article:
      www.roundthecode.com/dotnet-tutorials/azure-devops-release-pipeline-dotnet-web-api-iis
      The "Deploy IIS website" section in the article includes an App_Offline.html flag in the YAML.

  • @ProDevelopmentPK
    @ProDevelopmentPK 5 หลายเดือนก่อน

    I got a noob question, Do you think this will work if my IIS Server is not on Azure Server but somewhere else like in my Personal Machine. Will the Agent be able to download the Artificats and Deploy ?

    • @RoundTheCode
      @RoundTheCode  5 หลายเดือนก่อน

      Yes it will as long as it has a connection to the internet. In this demo, I downloaded the agent onto my personal machine to do the deploy.

  • @idreesahmed2051
    @idreesahmed2051 ปีที่แล้ว +1

    6:51 Could you please tell why did defined the pool: vmImage: windows-latest ? in release pipeline

    • @RoundTheCode
      @RoundTheCode  ปีที่แล้ว +1

      Hi Idrees,
      Azure Pipelines have a number of virtual images which you can use when running your pipeline. You can see the list here:
      learn.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml
      Essentially, windows-latest will use the latest Windows Server operating system which at present is Windows Server 2022.

    • @qburanp
      @qburanp 9 หลายเดือนก่อน

      @@RoundTheCode but why if you don’t use this pool in the pipeline?

  • @axelaceax
    @axelaceax ปีที่แล้ว

    Will this work if the agent is not on the same vm? My pipeline agent is on vm A and my iis server is on another vm B in azure.

    • @RoundTheCode
      @RoundTheCode  ปีที่แล้ว

      Yes that's fine. You can register agents and environments in Azure DevOps and these can be referenced in your YAML pipeline.

  • @dinkar-singh
    @dinkar-singh หลายเดือนก่อน

    Your explanation is really good but at 10:30 you have used variables in two variations ${{ variable.name }} and $(variable.name). why is that? and whats the difference between them?

    • @RoundTheCode
      @RoundTheCode  หลายเดือนก่อน

      I think it's because $(Pipeline.workspace) is a predefined variable

  • @osvaldofervio7809
    @osvaldofervio7809 3 หลายเดือนก่อน

    Excellent video, I'm super stuck when I get to the step: "IISWebAppDeploymentOnMachineGroup"
    when the pipeline is running I get the following error: "##[error]Error: No package found with specified pattern.Check if the package mentioned in the task is published as an artifact in the build or a previous stage and downloaded in the current job."
    I really think I can't match the line you have
    Package: "Package: '$(Pipeline.Workspace)\buildPipeline\AzureTestProject\RoundTheCode.AzureTestProject'" from the .yaml
    could you advise me?

    • @RoundTheCode
      @RoundTheCode  3 หลายเดือนก่อน

      I would need to see your YAML file.
      Fill out my contact form if you still need help:
      www.roundthecode.com/contact

  • @user-zi7uo2ls3r
    @user-zi7uo2ls3r 11 หลายเดือนก่อน +1

    thank you for your greats info, but i facing error when i run release pipeline ......
    /azure-pipelines-2.yml (Line: 14, Col: 18): Pipeline Resource buildPipeline Input Must be Valid.

    • @RoundTheCode
      @RoundTheCode  10 หลายเดือนก่อน

      It might mean that you've used that alias on a previous pipeline. This happened me to very recently, so potentially changing the alias to something else and changing any other references from the previous alias within the YAML file may solve the issue.

    • @Andy-si1pl
      @Andy-si1pl 8 หลายเดือนก่อน

      I get the same. I changed it to buildPipeline1 but same thing.
      UPDATE I wrapped it in single quotes like this
      pipelines:
      - pipeline: 'MyPipelineAlias'
      and later on
      - checkout: none
      - download: 'MyPipelineAlias'
      and finally
      Package: '$(Pipeline.Workspace)\MyPipelineAlias\MyProject\MyProject.Subfolder'

    • @mateusnascimento8888
      @mateusnascimento8888 4 หลายเดือนก่อน

      It happens, the project field inside the pipelines, is the name of the azure project, and not the api project name.

  • @sandeepnarayana9150
    @sandeepnarayana9150 5 หลายเดือนก่อน

    really very helpful video, Please help me with below error while installing azagent in azure vm.
    Exception calling "DownloadFile" with "2" argument(s): "Unable to connect to the remote server"
    At line:1 char:1303 and agentzip file is not downloading
    442 port is already
    Please suggest what are security settings that I need to check from vm side and Azure devops side?

    • @RoundTheCode
      @RoundTheCode  5 หลายเดือนก่อน

      Where abouts is that happening? When you publish your .NET application?

  • @rohailabbaszaidi
    @rohailabbaszaidi ปีที่แล้ว

    Why did you NOT create release pipeline in RELEASES tab under Pipelines?

    • @RoundTheCode
      @RoundTheCode  ปีที่แล้ว

      Hi Rohail,
      This is where Azure DevOps can get a bit confusing. The releases tab is the old way of building pipelines. Microsoft seem to be encouraging users to use YAML pipelines which appear in the Pipelines tab.
      Took me ages to work that one out.

    • @Capt_stupid
      @Capt_stupid 2 หลายเดือนก่อน

      @@RoundTheCode Yeah that s super confusing. Would be great i you have mentioned it in the video.

  • @sibrenbouman5624
    @sibrenbouman5624 หลายเดือนก่อน

    Hi, I'm getting the following error when trying to run:
    'The pipeline is not valid. Unable to resolve latest version for pipeline build-pipeline. This could be due to inaccessible pipeline or no version is available.'
    Google isn't helping me much. What could be the issue?

    • @RoundTheCode
      @RoundTheCode  หลายเดือนก่อน

      Drop me a message on LinkedIn and attach the YAML file to the message.
      My LinkedIn page is www.roundthecode.com/linkedin

    • @sibrenbouman5624
      @sibrenbouman5624 หลายเดือนก่อน

      @@RoundTheCode I've send you a message!

    • @RoundTheCode
      @RoundTheCode  หลายเดือนก่อน

      I think you have two PublishBuildArtifacts@1 tasks in your build pipeline.

    • @sibrenbouman5624
      @sibrenbouman5624 หลายเดือนก่อน

      @@RoundTheCode I did, but unfortunately removing one didn't fix it.

  • @johngelson2473
    @johngelson2473 ปีที่แล้ว

    not so great. Not even remotely helpful for a beginner. lol

    • @RoundTheCode
      @RoundTheCode  ปีที่แล้ว

      Sorry to hear that John. Did you checkout the full playlist as it introduces Azure DevOps, and shows you how to create a build pipeline
      th-cam.com/play/PLNLqfquXi7rsZlj3ZeA1GPMs2x73IINZ1.html

    • @patricksuchy5585
      @patricksuchy5585 ปีที่แล้ว

      I'm a beginner and it helped me a ton with setting up my first CI/CD Pipeline to an IIS server. I don't think the instructor is the problem here. lol

    • @RoundTheCode
      @RoundTheCode  ปีที่แล้ว

      @@patricksuchy5585 Thanks Patrick.

    • @idreesahmed2051
      @idreesahmed2051 ปีที่แล้ว

      Man learn Basics
      Then you will understand the whole thing
      I am in the same stage as you