DevOps Classroom notes 30/Oct/2023

Azure DevOps Contd

Microsoft Hosted Agents

  • Refer Here for the official docs
  • Lets run nopCommerce on Microsoft Hosted Agent
---
pool:
  name: "Azure Pipelines"
  vmImage: "ubuntu-22.04"

trigger:
  - master

steps:
  - bash: "echo staging directory $(Build.ArtifactStagingDirectory) and number $(Build.BuildNumber)"
  - bash: env
  - task: DotNetCoreCLI@2
    displayName: build the code
    inputs:
      command: build
      projects: src/NopCommerce.sln
      configuration: Release
  - task: DotNetCoreCLI@2
    displayName: publish the nopcommerce
    inputs:
      command: publish
      projects: src/Presentation/Nop.Web/Nop.Web.csproj
      zipAfterPublish: true
      configuration: Release
      arguments: "-o $(Build.ArtifactStagingDirectory)/Published"
  - task: PublishBuildArtifacts@1
    displayName: Make artifacts available
    inputs:
      PathtoPublish: $(Build.ArtifactStagingDirectory)/Published/Nop.Web.zip
      ArtifactName: 'nop'
      publishLocation: Container


Using Jobs in Azure DevOps Pipelines

  • We will be using multiple jobs in Azure DevOps Pipeline
  • One job builds dotnet code
  • Other job builds the docker image
docker image build -t qtdevops/nopCommerce .
  • To install docker
curl -fsSL https://get.docker.com -o install-docker.sh
sh install-docker.sh
# sudo usermod -aG docker ubuntu
#exit
# relogin
docker info
  • Pipeline
---
trigger:
  - master

jobs:
  - job: dotnetbuild
    displayName: Build dotnet code
    pool: default
    steps:
      - bash: "echo staging directory $(Build.ArtifactStagingDirectory) and number $(Build.BuildNumber)"
      - bash: env
      - task: DotNetCoreCLI@2
        displayName: build the code
        inputs:
          command: build
          projects: src/NopCommerce.sln
          configuration: Release
      - task: DotNetCoreCLI@2
        displayName: publish the nopcommerce
        inputs:
          command: publish
          projects: src/Presentation/Nop.Web/Nop.Web.csproj
          zipAfterPublish: true
          configuration: Release
          arguments: "-o $(Build.ArtifactStagingDirectory)/Published"
      - task: PublishBuildArtifacts@1
        displayName: Make artifacts available
        inputs:
          PathtoPublish: $(Build.ArtifactStagingDirectory)/Published/Nop.Web.zip
          ArtifactName: 'nop'
          publishLocation: Container
  - job: dockerbuild
    displayName: docker image build
    pool:
      name: "Azure Pipelines"
      vmImage: "ubuntu-22.04"
    steps:
      - task: Docker@2
        inputs:
          command: 'build'
          Dockerfile: '**/Dockerfile'
          tags: "qtdevops/nopCommerce"
  • Executions of jobs will happen by default in parallel
  • We have 3 jobs
    • sanity check
    • dotnet build
    • docker build
  • We need to execute dotnet build and docker build in parallel but after sanity check is done
  • In these cases we use dependsOn
---
trigger:
  - master

jobs:
  - job: sanity
    displayName: dummy to understand dependency
    pool: default
    steps:
      - bash: "sleep 2m"
  - job: dotnetbuild
    displayName: Build dotnet code
    pool: default
    dependsOn: sanity
    steps:
      - bash: "echo staging directory $(Build.ArtifactStagingDirectory) and number $(Build.BuildNumber)"
      - bash: env
      - task: DotNetCoreCLI@2
        displayName: build the code
        inputs:
          command: build
          projects: src/NopCommerce.sln
          configuration: Release
      - task: DotNetCoreCLI@2
        displayName: publish the nopcommerce
        inputs:
          command: publish
          projects: src/Presentation/Nop.Web/Nop.Web.csproj
          zipAfterPublish: true
          configuration: Release
          arguments: "-o $(Build.ArtifactStagingDirectory)/Published"
      - task: PublishBuildArtifacts@1
        displayName: Make artifacts available
        inputs:
          PathtoPublish: $(Build.ArtifactStagingDirectory)/Published/Nop.Web.zip
          ArtifactName: 'nop'
          publishLocation: Container
  - job: dockerbuild
    displayName: docker image build
    dependsOn: sanity
    pool:
      name: "Azure Pipelines"
      vmImage: "ubuntu-22.04"
    steps:
      - task: Docker@2
        inputs:
          command: 'build'
          Dockerfile: '**/Dockerfile'
          tags: "qtdevops/nopCommerce"




* Failure in the parent job will stop executing all the child jobs

  • Enable System Diagnostics for pipelines failing due to unknown reasons

Azure DevOps Service Connections

  • Azure DevOps Service Connections gives options to integrate/connect with different providers
  • Refer Here for official docs
  • Next Steps:
    • Connecting to docker hub using Service Connections
    • Understanding Stages
    • Variables and Parameters
    • Reusability
Published
Categorized as Uncategorized Tagged

By continuous learner

devops & cloud enthusiastic learner

Leave a comment

Turn on JavaScript to leave a comment.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Please turn AdBlock off
Social Media Icons Powered by Acurax Web Design Company
Exit mobile version
%%footer%%