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

Поделиться
HTML-код
  • Опубликовано: 27 май 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 Год назад +17

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

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

      Thanks for the comment BigRouch. Glad it benefited you.

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

    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.

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

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

  • @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 11 месяцев назад

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

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

    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?

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

    Great explanation. Thanks

  • @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.

  • @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 3 месяца назад

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

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

    Great Video.

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

    very informative!

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

      Thanks. Glad it was helpful.

  • @dinkar-singh
    @dinkar-singh 21 день назад

    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  21 день назад

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

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

    thank you 🎉

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

    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  2 месяца назад

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

  • @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"

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

    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  4 месяца назад

      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.

  • @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 8 месяцев назад

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

  • @user-zi7uo2ls3r
    @user-zi7uo2ls3r 10 месяцев назад +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  9 месяцев назад

      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 7 месяцев назад

      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 3 месяца назад

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

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

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

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

      It will deploy the whole project.

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

    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  4 месяца назад

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

  • @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.

  • @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.

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

    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  9 месяцев назад

      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

  • @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 28 дней назад

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

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

    thanks

  • @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 Месяц назад

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

  • @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
      ruclips.net/p/PLNLqfquXi7rsZlj3ZeA1GPMs2x73IINZ1

    • @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