diff --git a/.pipelines/OneBranch.Official.yml b/.pipelines/OneBranch.Official.yml new file mode 100644 index 000000000..764425c39 --- /dev/null +++ b/.pipelines/OneBranch.Official.yml @@ -0,0 +1,160 @@ +################################################################################# +# Onebranch Retail Pipeline # +# This pipeline was created by EasyStart from a sample located at: # +# https://aka.ms/obpipelines/easystart/samples # +# Documentation: https://aka.ms/obpipelines # +# Yaml Schema: https://aka.ms/obpipelines/yaml/schema # +# Retail Tasks: https://aka.ms/obpipelines/tasks # +# Support: https://aka.ms/onebranchsup # +################################################################################# + +trigger: none # https://aka.ms/obpipelines/triggers + +parameters: # parameters are shown up in ADO UI in a build queue time +- name: 'debug' + displayName: 'Enable debug output' + type: boolean + default: false + +variables: + CDP_DEFINITION_BUILD_COUNT: $[counter('', 0)] # needed for onebranch.pipeline.version task https://aka.ms/obpipelines/versioning + system.debug: ${{ parameters.debug }} + ENABLE_PRS_DELAYSIGN: 1 + ROOT: $(Build.SourcesDirectory) + REPOROOT: $(Build.SourcesDirectory) + OUTPUTROOT: $(REPOROOT)\out + NUGET_XMLDOC_MODE: none + + WindowsContainerImage: 'cdpxwin1809.azurecr.io/global/vse2019:latest' # Docker image which is used to build the project https://aka.ms/obpipelines/containers + +resources: + repositories: + - repository: templates + type: git + name: OneBranch.Pipelines/GovernedTemplates + ref: refs/heads/main + +extends: + template: v2/OneBranch.Official.CrossPlat.yml@templates # https://aka.ms/obpipelines/templates + parameters: + cloudvault: # https://aka.ms/obpipelines/cloudvault + enabled: false + globalSdl: # https://aka.ms/obpipelines/sdl + tsa: + enabled: false # onebranch publish all sdl results to TSA. If TSA is disabled all SDL tools will forced into 'break' build mode. + # credscan: + # suppressionsFile: $(Build.SourcesDirectory)\.config\CredScanSuppressions.json + policheck: + break: true # always break the build on policheck issues. You can disable it by setting to 'false' + # suppression: + # suppressionFile: $(Build.SourcesDirectory)\.gdn\global.gdnsuppress + + stages: + - stage: build + jobs: + - job: main + pool: + type: windows # read more about custom job pool types at https://aka.ms/obpipelines/yaml/jobs + + variables: + ob_outputDirectory: '$(REPOROOT)\out' # this directory is uploaded to pipeline artifacts, reddog and cloudvault. More info at https://aka.ms/obpipelines/artifacts + ob_sdl_binskim_break: true # https://aka.ms/obpipelines/sdl + ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/master') }}: # conditionally enable symbolsPublishing for master branch only + ob_symbolsPublishing_enabled: true # https://aka.ms/obpipelines/symbols + + # ob_sdl_suppression_suppressionFile: $(Build.SourcesDirectory)\.gdn\job.gdnsuppress + + steps: + - task: UseDotNet@2 + continueOnError: true + inputs: + packageType: 'sdk' + useGlobalJson: true + performMultiLevelLookup: true + + - task: onebranch.pipeline.version@1 # generates automatic version. For other versioning options check https://aka.ms/obpipelines/versioning + displayName: 'Setup BuildNumber' + inputs: + system: 'RevisionCounter' + major: '1' + minor: '0' + exclude_commit: true + + - task: MSBuild@1 + inputs: + solution: '$(Build.SourcesDirectory)\dirs.proj' + msbuildLocationMethod: 'location' + msbuildLocation: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe' + platform: 'x64' + configuration: 'release' + msbuildArguments: '/t:Restore' + clean: true + maximumCpuCount: true + logProjectEvents: true + + - task: MSBuild@1 + inputs: + solution: '$(Build.SourcesDirectory)\dirs.proj' + msbuildLocationMethod: 'location' + msbuildLocation: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe' + platform: 'x64' + configuration: 'release' + msbuildArguments: '/v:n /nr:false /flp1:Verbosity=d;LogFile=$(OUTPUTROOT)\logs\msbuild_x64_release.log;Encoding=UTF-8 /flp2:logfile=$(OUTPUTROOT)\logs\msbuild_x64_release.err;errorsonly /bl:$(OUTPUTROOT)\logs\msbuild_x64_release.binlog' + clean: true + maximumCpuCount: true + logProjectEvents: true + + - task: onebranch.pipeline.signing@1 # https://aka.ms/obpipelines/signing + displayName: 'Sign output' + inputs: + command: 'sign' + signing_environment: 'azure-ado' + files_to_sign: '**/*.exe;**/*.dll;**/*.ps1;**/*.psm1' + search_root: '$(Build.SourcesDirectory)\out' + + - task: VSTest@2 + inputs: + testSelector: 'testAssemblies' + testAssemblyVer2: | + **\*test*.dll + !**\*TestAdapter.dll + !**\obj\** + searchFolder: '$(Build.SourcesDirectory)\out' + resultsFolder: '$(Build.SourcesDirectory)\out\logs\TestResults' + runInParallel: true + codeCoverageEnabled: true + testRunTitle: 'release_x64' + platform: 'x64' + configuration: 'release' + publishRunAttachments: false + failOnMinTestsNotRun: true + rerunFailedTests: true + + - task: PublishTestResults@2 + displayName: 'Publish test results' + inputs: + testResultsFormat: VSTest + testResultsFiles: '$(Build.SourcesDirectory)\out\logs\TestResults\**\*.trx' + failTaskOnFailedTests: true + +# https://aka.ms/obpipelines/cloudtest +# uncomment this section and edit parameters to enable CloudTest + # - stage: cloudtest + # dependsOn: build_stage + # jobs: + # - job: cloudtestjob + # pool: + # type: cloudtestagentless + # continueOnError: true + # steps: + # - task: CloudTestServerBuildTask@1 + # displayName: 'CloudTest' + # inputs: + # connectedServiceName: 'CloudTest-prod' + # cloudTestTenant: 'onebranchtest' + # testMapLocation: '[BuildRoot]\ClassLibrary.UnitTest\TestMapCdp.xml' + # pipelineArtifactName: 'drop_build_main' + # pipelineArtifactBuildUrl: '$(System.TaskDefinitionsUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId)' + # parserProperties: 'worker:VsTestVersion=V150;CodeCoverageType=Dynamic;worker:TestVar=$(RUN_PIPELINE_VARIABLE)' + # cacheEnabled: false + # scheduleBuildRequesterAlias: 'azbldrun' \ No newline at end of file