Since Microsoft introduced Azure in 2010, we have changed our computing habits a lot, basically from local or promises to cloud. This is a huge change and a huge leap. Looking back, we did have a lot of experience indirectly or directly working on or related to Azure, or associated DevOps.
- In 2011, I participated in a project in Health Care field, a huge project with 10 terabytes of data in production and 5000 database transactions per second at peak time. We have 200 developers involved in this project, divided in 20 feature Agile Feature teams. We use TFS server, auto built the app when anyone checked in any changes to the server. At that time, it might not be Azure DevOps, but the operation was somewhat similar with the concept of CI (Continue Integration) and CD (Continue Deployment).
- I had worked on a project, the client wanted to move all current Apps from TFS promises Server into DevOps Cloud associated with Git as source control management. We worked with MS Pipeline intensively.
- Another project, with Fortify Scanning, a security scanning, we need to set up an Azure Pipeline for the automation process with Fortify as core functionality.
- In recent years, more and more companies moved or moving to Cloud, such as Azure, associated with DevOps, Pipeline.
All of them require us, even as a developer, to be familiar with Azure, and DevOps. I had article series about Source Control (Repos), this series is about Pipelines. The style of the article series is similar to the Repos series, These are not system summary, or introduction, or learning notes, these are just gathering what I have experienced and I assume I understood and shared with myself and you. The following are the topics I have now and will complete within days or weeks. Later on, I will add some more materials according to new experience or summary.
- DevOps Pipeline (1), Management --- GUI and Yaml --- this article
- DevOps Pipeline (2), Import/Export and Clone
- DevOps Pipeline (3), Setup from GUI&YAML
- DevOps Pipeline (4), Setup from an Existing YAML
- DevOps Pipeline (5), Setup from GUI with a Cloned Template (+ Fortify)
A - Introduction
This article topic is import/export and clone pipelines. The following is the content of this article
- A - Introduction
- B - Get Pipeline Manager through GUI
- C - Get Pipeline Management through YAML
- D - What is YAML
- E - Comparison between GUI and YAML
- F - A Sample
- G - Summary
If we had any experience beyond just using pipeline, for example, we need to setup, manage or change some feature of an existing pipeline, then we need to know the way to handle pipeline. There are, in fact, two ways to do so, one is through GUI, another one is through a script language, YAML. We will discuss this issue in this article.
B - Get Pipeline Manager through GUI
In a pipeline, we choose a specific one:

Click Edit:

we get the pipeline GUI, edit panel:

C - Get Pipeline Management through YAML
For a specific pipeline, Export YAML file:

we got the file downloaded locally:

Open the file in an editor, such as VS Code or Visual Studio
# Variable 'Build32bitPlatform' was defined in the Variables tab
# Variable 'Build64bitPlatform' was defined in the Variables tab
# Variable 'BuildAllPlatforms' was defined in the Variables tab
# Variable 'BuildDefinitionName' was defined in the Variables tab
# Variable 'DaysDelay' was defined in the Variables tab
# Variable 'DebugPref' was defined in the Variables tab
# Variable 'DisableInteliTrace' was defined in the Variables tab
# Variable 'forceClean' was defined in the Variables tab
# Variable 'InstallerPath' was defined in the Variables tab
# Variable 'MSDeployPackage' was defined in the Variables tab
# Variable 'MSDeployPackagex' was defined in the Variables tab
# Variable 'ProductHotFixVersion' was defined in the Variables tab
# Variable 'PSVerbose' was defined in the Variables tab
# Variable 'TestRoot' was defined in the Variables tab
# Variable Group 'VS2022 Specific' was defined in the Variables tab
# Variable Group 'CAE6.0_CurrentBuild' was defined in the Variables tab
trigger:
branches:
include:
- refs/heads/master
paths:
exclude:
- Cap
batch: True
name: $(BuildDefinitionName)_$(date:yyyyMMdd)$(rev:.r)
jobs:
- job: Phase_1
displayName: Build
timeoutInMinutes: 30
cancelTimeoutInMinutes: 1
pool:
name: CAEBUILDS
demands:
- Build60CI
steps:
- checkout: self
clean: $(ForceClean)
- task: CmdLine@2
displayName: copy assembly version.cs
inputs:
script: "REM this saves changing all the csproj files in test automation\nxcopy /y \"$(SourceRoot)\\Source\\Common\\Include\\AssemblyVersion.cs\" \"$(SourceRoot)\\TestAutomation\\CAE\\Source\\Common\\Include\\*.*\" \n\n\n"
- task: MSBuild@1
name: MSBuild_12
displayName: Build Installer Tests
inputs:
solution: $(sourceRoot)/Automation/Trizetto.CareAdvance.Automation.Installers/Trizetto.CareAdvance.Automation.Installers.sln
msbuildArchitecture: x64
msbuildLocation: $(MSBuildPath)
platform: $(BuildAllPlatforms)
configuration: $(BuildConfiguration)
msbuildArguments: /restore $(DisableInteliTrace)
logProjectEvents: true
- task: MSBuild@1
name: MSBuild_14
displayName: Build Legacy Automation Tests
inputs:
solution: $(sourceRoot)/Automation/AutomationTests.sln
msbuildArchitecture: x64
msbuildLocation: $(MSBuildPath)
platform: $(BuildAllPlatforms)
configuration: $(BuildConfiguration)
msbuildArguments: /restore $(DisableInteliTrace)
logProjectEvents: true
- task: MSBuild@1
displayName: Build New Environment Tests
inputs:
solution: $(sourceRoot)/Automation/EnvironmentTests.sln
msbuildArchitecture: x64
msbuildLocation: $(MSBuildPath)
platform: $(BuildAllPlatforms)
configuration: $(BuildConfiguration)
msbuildArguments: /restore $(DisableInteliTrace)
logProjectEvents: true
- task: MSBuild@1
displayName: Build Data Integration Tests
enabled: False
inputs:
solution: $(sourceRoot)/Tests/DataIntegration/DI.Tests.sln
msbuildLocationMethod: location
msbuildVersion: 14.0
msbuildLocation: $(MSBuildPath)
platform: $(BuildAllPlatforms)
configuration: $(BuildConfiguration)
msbuildArguments: /restore $(DisableInteliTrace)
logProjectEvents: true
- task: MSBuild@1
displayName: Build Workflow Test Automation
enabled: False
inputs:
solution: $(SourceRoot)/AutomationManager/AutomationManagerAll.sln
msbuildLocationMethod: location
msbuildVersion: 14.0
msbuildLocation: $(msbuildpath)
platform: $(BuildAllPlatforms)
configuration: $(BuildConfiguration)
msbuildArguments: /restore /p:EnableIntelliTrace=false
clean: true
logProjectEvents: true
- task: PowerShell@1
displayName: Create Workflow Classes Output Folder
continueOnError: True
enabled: False
inputs:
scriptType: inlineScript
inlineScript: New-Item -ItemType Directory -Force -Path $(SourceRoot)\AutomationManager\bin\Framework\WorkflowClasses
- task: CmdLine@1
displayName: Build Workflow Classes
continueOnError: True
enabled: False
inputs:
filename: '$(SourceRoot)\AutomationManager\bin\Framework\AutomationManagerTool.exe '
arguments: '"$(SourceRoot)\AutomationManager\bin\Framework\AutomationWorkflows" "$(SourceRoot)\AutomationManager\bin\Framework\WorkflowClasses"'
workingFolder: $(TestRoot)\AutomationManager\bin\Framework
- task: CmdLine@1
displayName: Build Dynamic Test Library
continueOnError: True
enabled: False
inputs:
filename: '"$(msbuildpath)\Roslyn\csc.exe"'
arguments: /t:library /out:$(SourceRoot)\AutomationManager\bin\Framework\DynamicTest.dll $(SourceRoot)\AutomationManager\bin\Framework\WorkflowClasses\*.cs /r:$(SourceRoot)\AutomationManager\bin\Framework\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll,$(SourceRoot)\AutomationManager\bin\Framework\AutomationCore.dll
- task: MSBuild@1
displayName: Build Workflow Test Automation
inputs:
solution: $(testroot)/AutomationManager/AutomationManagerAll.sln
msbuildLocation: $(msbuildpath)
platform: $(BuildAllPlatforms)
configuration: $(BuildConfiguration)
msbuildArguments: /restore /p:EnableIntelliTrace=false
clean: true
logProjectEvents: true
- task: PowerShell@1
displayName: Create Workflow Classes Output Folder
continueOnError: True
inputs:
scriptType: inlineScript
inlineScript: New-Item -ItemType Directory -Force -Path $(testroot)\AutomationManager\bin\Framework\WorkflowClasses
- task: CmdLine@1
displayName: Build Workflow Classes
continueOnError: True
inputs:
filename: '$(testroot)\AutomationManager\bin\Framework\AutomationManagerTool.exe '
arguments: '"$(testroot)\AutomationManager\bin\Framework\AutomationWorkflows" "$(testroot)\AutomationManager\bin\Framework\WorkflowClasses"'
workingFolder: $(TestRoot)\AutomationManager\bin\Framework
- task: CmdLine@1
displayName: Build Dynamic Test Library
continueOnError: True
inputs:
filename: $(AMcscCommand)
arguments: /t:library /out:$(testroot)\AutomationManager\bin\Framework\DynamicTest.dll $(testroot)\AutomationManager\bin\Framework\WorkflowClasses\*.cs /r:$(testroot)\AutomationManager\bin\Framework\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll,$(testroot)\AutomationManager\bin\Framework\AutomationCore.dll
...























Join the conversation! Your thoughts help the community grow.