Azure DevOps Contd
Basic Maven-Java Pipeline
pool: default
trigger:
- master
steps:
- task: Maven@4
inputs:
mavenPOMFile: pom.xml
goals: package
publishJUnitResults: true
testResultsFiles: '**/TEST-*.xml'
javaHomeOption: Path
jdkVersionOption: '1.17'
jdkDirectory: '/usr/lib/jvm/java-17-openjdk-amd64'
mavenVersionOption: Path
mavenDirectory: '/usr/share/maven'
Basic dotnet core pipeline
pool: default
trigger:
- master
- 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
Basic docker pipeline
pool: default
trigger:
- master
stages:
- stage: buildstage
displayName: Build the application
jobs:
- job: dockerbuild
displayName: docker image build
pool: default
steps:
- task: Docker@2
inputs:
containerRegistry: "${{ parameters.containerRegistry }}"
repository: shaikkhajaibrahim/nopfromado
command: 'buildAndPush'
Dockerfile: "$(dockerfilelocation)"
tags: "$(Build.BuildId)"
Templates
lets create a resuable template for java based application
- Create a new folder called as templates with a file
maven-template.yaml
with following content
steps:
- task: Maven@4
inputs:
mavenPOMFile: pom.xml
goals: package
publishJUnitResults: true
testResultsFiles: '**/TEST-*.xml'
javaHomeOption: Path
jdkVersionOption: '1.17'
jdkDirectory: '/usr/lib/jvm/java-17-openjdk-amd64'
mavenVersionOption: Path
mavenDirectory: '/usr/share/maven'
- Now add the following in azure-pipelines.yaml
pool: default
trigger:
- main
steps:
- template: templates/maven-template.yaml
- Now lets build the pipeline
- Lets create template parameters
parameters:
- name: mavenPomfile
displayName: pom location
type: string
default: pom.xml
- name: goals
displayName: maven goal
type: string
default: package
values:
- clean
- compile
- test
- package
- install
- deploy
- name: publishJUnitResults
displayName: pom location
type: boolean
default: true
steps:
- task: Maven@4
inputs:
mavenPOMFile: "${{ parameters.mavenPomfile }}"
goals: "${{ parameters.goals }}"
publishJUnitResults: "${{ parameters.publishJUnitResults }}"
testResultsFiles: '**/TEST-*.xml'
javaHomeOption: Path
jdkVersionOption: '1.17'
jdkDirectory: '/usr/lib/jvm/java-17-openjdk-amd64'
mavenVersionOption: Path
mavenDirectory: '/usr/share/maven'
- in azure-devops pipeline call template with parameters values
pool: default
trigger:
- main
steps:
- template: templates/maven-template.yaml
parameters:
goals: 'test'

- We have create a stages template

Lets create an azure repo with reusable templates
- We have create a git repo of ADO templates

- refer the below yaml for usage
---
trigger:
- master
resources:
repositories:
- repository: templates
name: ADOTemplates
type: git
ref: main
stages:
- template: docker/docker-template.yaml@templates
parameters:
containerRegistry: 'mydockerhub'
vmImage: 'ubuntu-22.04'

Activity
- Create a pipeline for building a node js application
- softwares:
- commands
npm install
npm run build
- Now zip the dist file and publish artifact
Like this:
Like Loading...