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


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

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

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

Please turn AdBlock off
Animated Social Media Icons by Acurax Responsive Web Designing Company

Discover more from Direct DevOps from Quality Thought

Subscribe now to keep reading and get access to the full archive.

Continue reading

Visit Us On FacebookVisit Us On LinkedinVisit Us On Youtube