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
