1. Introduction to Azure Pipelines
Azure Pipelines is a cloud service that automates the building and testing of your code and deploys it to any target. It works with any language, platform, and cloud.
Key Concepts:
- Triggers: Events that initiate a pipeline run (e.g., code commits, scheduled times).
- Pools: Groups of agents (virtual machines or containers) that execute pipeline jobs.
- Tasks: Pre-built or custom actions performed in a pipeline (e.g., compiling code, running tests).
- Steps: Ordered sequences of tasks within a job.
- Variables: Values that can be used throughout the pipeline to customize behavior.
- Artifacts: Files or packages produced by a pipeline run.
- YAML Syntax: Pipelines are defined using YAML (YAML Ain't Markup Language) files.
YAML Syntax Basics:
- Indentation is crucial for defining the structure.
- Key-value pairs define settings.
- Lists are defined with hyphens (
-
).
2. Java (Maven) Pipeline Explained
Purpose:
This pipeline automates the build, test, and deployment of a Java project using Apache Maven.
YAML File Breakdown:
# Maven
# Build your Java project and run tests with Apache Maven.
# Add steps that analyze code, save build artifacts, deploy, and more:
# [https://docs.microsoft.com/azure/devops/pipelines/languages/java](https://docs.microsoft.com/azure/devops/pipelines/languages/java)
trigger:
- Test
pool: TT-Line Server
steps:
- task: Maven@3
inputs:
mavenPomFile: 'JobAPI/pom.xml'
goals: 'clean compile process-resources package'
publishJUnitResults: true
testResultsFiles: '**/surefire-reports/TEST-*.xml'
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.8'
mavenVersionOption: 'Default'
mavenOptions: '-Xmx3072m'
mavenAuthenticateFeed: false
effectivePomSkip: false
sonarQubeRunAnalysis: false
- task: CopyFiles@2
inputs:
SourceFolder: '$(Build.SourcesDirectory)/JobAPI'
Contents: |
pom.xml
target/*.jar
TargetFolder: '$(Build.ArtifactStagingDirectory)'
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
- task: Maven@3
inputs:
mavenPomFile: 'JobAPI/pom.xml'
goals: 'deploy'
publishJUnitResults: true
testResultsFiles: '**/surefire-reports/TEST-*.xml'
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.8'
mavenVersionOption: 'Default'
mavenOptions: '-Xmx3072m'
mavenAuthenticateFeed: false
effectivePomSkip: false
sonarQubeRunAnalysis: false
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
-
trigger: - Test
: Runs the pipeline when code is pushed to theTest
branch. -
pool: TT-Line Server
: Uses a self-hosted agent pool named "TT-Line Server." -
steps:
: Defines the sequence of tasks.-
Maven@3
(Clean, Compile, Package):-
mavenPomFile
: Specifies the path to thepom.xml
file. -
goals
: Defines the Maven goals to execute (clean
,compile
,process-resources
,package
). -
publishJUnitResults
: Publishes JUnit test results. -
testResultsFiles
: Specifies the location of test result files. -
javaHomeOption
,jdkVersionOption
,mavenVersionOption
,mavenOptions
: Configures the Java and Maven environment.
-
-
CopyFiles@2
(POM and JAR):- Copies the
pom.xml
and the generated JAR file to the artifact staging directory ($(Build.ArtifactStagingDirectory)
). -
condition
: Prevents these tasks from running during pull requests.
- Copies the
-
PublishBuildArtifacts@1
: Publishes the staged artifacts as "drop." -
Maven@3
(Deploy):- Runs the maven deploy goal, to push the artifact to a maven repository.
-
-
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
: Ensures specific steps only run on successful builds and not on pull requests.
Explanation of Maven Goals and Options:
-
clean
: Deletes thetarget
directory. -
compile
: Compiles the Java source code. -
process-resources
: Copies resources to thetarget
directory. -
package
: Packages the compiled code into a JAR file. -
deploy
: pushes the artifact to a repository. -
Xmx3072m
: Allocates 3GB of memory to Maven.
Artifact Handling:
The pipeline copies the pom.xml
and JAR file to the artifact staging directory and then publishes them as an artifact named "drop."
Deployment Explanation:
The second maven task with the deploy goal, will push the resulting jar file to a maven repository, that is configured inside of the pom.xml file.
3. .NET Core (.NET Framework) Pipeline Explained
Purpose:
This pipeline builds and tests an ASP.NET Core project targeting the full .NET Framework.
YAML File Breakdown:
# ASP.NET Core (.NET Framework)
# Build and test ASP.NET Core projects targeting the full .NET Framework.
# Add steps that publish symbols, save build artifacts, and more:
# [https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core](https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core)
trigger:
- Test
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
command: 'restore'
restoreSolution: '$(solution)'
feedsToUse: config
nugetConfigPath: 'TTLineIMSBackoffice/NuGet.Config'
externalFeedCredentials: 'Telerik Nuget'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)/WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@2
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
-
trigger: - Test
: Triggers the pipeline on commits to theTest
branch. -
pool: vmImage: 'windows-latest'
: Uses a Microsoft-hosted Windows agent. -
variables:
: Defines pipeline variables.-
solution
: Path to the solution file. -
buildPlatform
: Build platform (Any CPU
). -
buildConfiguration
: Build configuration (Release
).
-
-
steps:
:-
NuGetToolInstaller@1
: Installs the NuGet tool. -
NuGetCommand@2
(Restore):- Restores NuGet packages using the specified
NuGet.Config
file. -
externalFeedCredentials
: provides credentials to a telerik nuget feed.
- Restores NuGet packages using the specified
-
VSBuild@1
: Builds the solution using MSBuild.-
msbuildArgs
: Configures the build process, including creating a web package (WebApp.zip
).
-
-
VSTest@2
: Runs unit tests. -
PublishBuildArtifacts@1
: Publishes the build artifacts.
-
Top comments (0)