diff --git a/.config/CredScanSuppressions.json b/.config/CredScanSuppressions.json new file mode 100644 index 00000000..07a6e763 --- /dev/null +++ b/.config/CredScanSuppressions.json @@ -0,0 +1,13 @@ +{ + "tool": "Credential Scanner", + "suppressions": [ + { + "file": "\\src\\Calculator\\WindowsDev_TemporaryKey.pfx", + "_justification": "This is an untrusted, self-signed certificate which is used only during development. Its private key is not intended to be secret." + }, + { + "file": "\\src\\CalculatorUnitTests\\WindowsDev_TemporaryKey.pfx", + "_justification": "This is an untrusted, self-signed certificate which is used only during development. Its private key is not intended to be secret." + } + ] +} diff --git a/build/pipelines/azure-pipelines.ci-internal.yaml b/build/pipelines/azure-pipelines.ci-internal.yaml index dcfbadaa..049ea488 100644 --- a/build/pipelines/azure-pipelines.ci-internal.yaml +++ b/build/pipelines/azure-pipelines.ci-internal.yaml @@ -12,47 +12,64 @@ pr: none name: 0.$(Date:yyMM).$(DayOfMonth)$(Rev:rr).0 -jobs: -- template: ./templates/build-single-architecture.yaml - parameters: - isReleaseBuild: true - useReleaseAppxManifest: false - platform: x64 +resources: + repositories: + - repository: 1esPipelines + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release -- template: ./templates/build-single-architecture.yaml +extends: + template: v1/1ES.Unofficial.PipelineTemplate.yml@1esPipelines parameters: - isReleaseBuild: true - useReleaseAppxManifest: false - platform: x86 + pool: + name: EssentialExperiences-windows-2022 + image: MMSWindows2022-Secure + os: windows -- template: ./templates/build-single-architecture.yaml - parameters: - isReleaseBuild: true - useReleaseAppxManifest: false - platform: ARM + stages: + - stage: + jobs: + - template: /build/pipelines/templates/build-single-architecture.yaml@self + parameters: + isReleaseBuild: true + useReleaseAppxManifest: false + platform: x64 -- template: ./templates/build-single-architecture.yaml - parameters: - isReleaseBuild: true - useReleaseAppxManifest: false - platform: ARM64 + - template: /build/pipelines/templates/build-single-architecture.yaml@self + parameters: + isReleaseBuild: true + useReleaseAppxManifest: false + platform: x86 -- template: ./templates/run-ui-tests.yaml - parameters: - platform: x64 - runsettingsFileName: CalculatorUITests.ci-internal.runsettings + - template: /build/pipelines/templates/build-single-architecture.yaml@self + parameters: + isReleaseBuild: true + useReleaseAppxManifest: false + platform: ARM -- template: ./templates/run-ui-tests.yaml - parameters: - platform: x86 - runsettingsFileName: CalculatorUITests.ci-internal.runsettings + - template: /build/pipelines/templates/build-single-architecture.yaml@self + parameters: + isReleaseBuild: true + useReleaseAppxManifest: false + platform: ARM64 -- template: ./templates/run-unit-tests.yaml - parameters: - platform: x64 + - template: /build/pipelines/templates/run-ui-tests.yaml@self + parameters: + platform: x64 + runsettingsFileName: CalculatorUITests.ci-internal.runsettings -- template: ./templates/run-unit-tests.yaml - parameters: - platform: x86 + - template: /build/pipelines/templates/run-ui-tests.yaml@self + parameters: + platform: x86 + runsettingsFileName: CalculatorUITests.ci-internal.runsettings -- template: ./templates/package-msixbundle.yaml + - template: /build/pipelines/templates/run-unit-tests.yaml@self + parameters: + platform: x64 + + - template: /build/pipelines/templates/run-unit-tests.yaml@self + parameters: + platform: x86 + + - template: /build/pipelines/templates/package-msixbundle.yaml@self diff --git a/build/pipelines/azure-pipelines.ci.yaml b/build/pipelines/azure-pipelines.ci.yaml index db8d1849..542ab397 100644 --- a/build/pipelines/azure-pipelines.ci.yaml +++ b/build/pipelines/azure-pipelines.ci.yaml @@ -15,46 +15,63 @@ pr: name: 0.$(Date:yyMM).$(DayOfMonth)$(Rev:rr).0 -jobs: -- template: ./templates/build-single-architecture.yaml - parameters: - platform: x64 - isOSSBuild: true +resources: + repositories: + - repository: 1esPipelines + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release -- template: ./templates/build-single-architecture.yaml +extends: + template: v1/1ES.Unofficial.PipelineTemplate.yml@1esPipelines parameters: - platform: x86 - isOSSBuild: true - condition: not(eq(variables['Build.Reason'], 'PullRequest')) + pool: + name: EssentialExperiencesOpenSource-windows-2022 + image: MMSWindows2022-Secure + os: windows -- template: ./templates/build-single-architecture.yaml - parameters: - platform: ARM - isOSSBuild: true - condition: not(eq(variables['Build.Reason'], 'PullRequest')) + sdl: + binskim: + enabled: false -- template: ./templates/build-single-architecture.yaml - parameters: - platform: ARM64 - isOSSBuild: true - condition: not(eq(variables['Build.Reason'], 'PullRequest')) + stages: + - stage: Calculator + jobs: + - template: /build/pipelines/templates/build-single-architecture.yaml@self + parameters: + platform: x64 + isOSSBuild: true -- template: ./templates/run-ui-tests.yaml - parameters: - platform: x64 - isOSSBuild: true - runsettingsFileName: CalculatorUITests.ci.runsettings + - template: /build/pipelines/templates/build-single-architecture.yaml@self + parameters: + platform: x86 + condition: not(eq(variables['Build.Reason'], 'PullRequest')) + isOSSBuild: true -- template: ./templates/run-unit-tests.yaml - parameters: - platform: x64 - isOSSBuild: true + - template: /build/pipelines/templates/build-single-architecture.yaml@self + parameters: + platform: ARM + condition: not(eq(variables['Build.Reason'], 'PullRequest')) + isOSSBuild: true -- template: ./templates/run-unit-tests.yaml - parameters: - platform: x86 - isOSSBuild: true + - template: /build/pipelines/templates/build-single-architecture.yaml@self + parameters: + platform: ARM64 + condition: not(eq(variables['Build.Reason'], 'PullRequest')) + isOSSBuild: true -- template: ./templates/package-msixbundle.yaml - parameters: - isOSSBuild: true + - template: /build/pipelines/templates/run-ui-tests.yaml@self + parameters: + platform: x64 + isOSSBuild: true + runsettingsFileName: CalculatorUITests.ci.runsettings + + - template: /build/pipelines/templates/run-unit-tests.yaml@self + parameters: + platform: x64 + + - template: /build/pipelines/templates/run-unit-tests.yaml@self + parameters: + platform: x86 + + - template: /build/pipelines/templates/package-msixbundle.yaml@self diff --git a/build/pipelines/azure-pipelines.release.yaml b/build/pipelines/azure-pipelines.release.yaml index 2faec2d2..3232554a 100644 --- a/build/pipelines/azure-pipelines.release.yaml +++ b/build/pipelines/azure-pipelines.release.yaml @@ -15,56 +15,73 @@ variables: name: '$(versionMajor).$(versionMinor).$(versionBuild).$(versionPatch)' -jobs: -- template: ./templates/build-single-architecture.yaml - parameters: - platform: x64 - isReleaseBuild: true - useReleaseAppxmanifest: true +resources: + repositories: + - repository: 1esPipelines + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release -- template: ./templates/build-single-architecture.yaml +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines parameters: - platform: x86 - isReleaseBuild: true - useReleaseAppxmanifest: true - condition: not(eq(variables['Build.Reason'], 'PullRequest')) + pool: + name: EssentialExperiences-windows-2022 + image: MMSWindows2022-Secure + os: windows -- template: ./templates/build-single-architecture.yaml - parameters: - platform: ARM - isReleaseBuild: true - useReleaseAppxmanifest: true - condition: not(eq(variables['Build.Reason'], 'PullRequest')) + stages: + - stage: Calculator + jobs: + - template: /build/pipelines/templates/build-single-architecture.yaml@self + parameters: + platform: x64 + isReleaseBuild: true + useReleaseAppxmanifest: true -- template: ./templates/build-single-architecture.yaml - parameters: - platform: ARM64 - isReleaseBuild: true - useReleaseAppxmanifest: true - condition: not(eq(variables['Build.Reason'], 'PullRequest')) + - template: /build/pipelines/templates/build-single-architecture.yaml@self + parameters: + platform: x86 + isReleaseBuild: true + useReleaseAppxmanifest: true + condition: not(eq(variables['Build.Reason'], 'PullRequest')) -- template: ./templates/run-ui-tests.yaml - parameters: - platform: x64 - runsettingsFileName: CalculatorUITests.release.runsettings + - template: /build/pipelines/templates/build-single-architecture.yaml@self + parameters: + platform: ARM + isReleaseBuild: true + useReleaseAppxmanifest: true + condition: not(eq(variables['Build.Reason'], 'PullRequest')) -- template: ./templates/run-ui-tests.yaml - parameters: - platform: x86 - runsettingsFileName: CalculatorUITests.release.runsettings + - template: /build/pipelines/templates/build-single-architecture.yaml@self + parameters: + platform: ARM64 + isReleaseBuild: true + useReleaseAppxmanifest: true + condition: not(eq(variables['Build.Reason'], 'PullRequest')) -- template: ./templates/run-unit-tests.yaml - parameters: - platform: x64 + - template: /build/pipelines/templates/run-ui-tests.yaml@self + parameters: + platform: x64 + runsettingsFileName: CalculatorUITests.release.runsettings -- template: ./templates/run-unit-tests.yaml - parameters: - platform: x86 + - template: /build/pipelines/templates/run-ui-tests.yaml@self + parameters: + platform: x86 + runsettingsFileName: CalculatorUITests.release.runsettings -- template: ./templates/package-msixbundle.yaml - parameters: - signBundle: true - createStoreBrokerPackages: true + - template: /build/pipelines/templates/run-unit-tests.yaml@self + parameters: + platform: x64 -- template: ./templates/release-store.yaml -- template: ./templates/release-vpack.yaml + - template: /build/pipelines/templates/run-unit-tests.yaml@self + parameters: + platform: x86 + + - template: /build/pipelines/templates/package-msixbundle.yaml@self + parameters: + signBundle: true + createStoreBrokerPackages: true + + - template: /build/pipelines/templates/release-store.yaml@self + - template: /build/pipelines/templates/release-vpack.yaml@self diff --git a/build/pipelines/templates/build-single-architecture.yaml b/build/pipelines/templates/build-single-architecture.yaml index ff5be3b4..e425000a 100644 --- a/build/pipelines/templates/build-single-architecture.yaml +++ b/build/pipelines/templates/build-single-architecture.yaml @@ -11,11 +11,6 @@ jobs: - job: Build${{ parameters.platform }} displayName: Build ${{ parameters.platform }} condition: ${{ parameters.condition }} - pool: - ${{ if eq(parameters.isOSSBuild, true) }}: - name: EssentialExperiencesOpenSource-windows-2022 - ${{ if eq(parameters.isOSSBuild, false) }}: - name: EssentialExperiences-windows-2022 variables: BuildConfiguration: Release BuildPlatform: ${{ parameters.platform }} @@ -33,6 +28,17 @@ jobs: ManifestFileName: 'Package.appxmanifest' ${{ if eq(parameters.useReleaseAppxManifest, true) }}: ManifestFileName: 'Package.Release.appxmanifest' + templateContext: + sdl: + binskim: + analyzeTargetGlob: +:f|$(Agent.BuildDirectory)\binskim\**\* + + outputs: + - output: pipelineArtifact + displayName: Publish drop artifact + targetPath: $(Build.BinariesDirectory)\$(BuildConfiguration)\${{ parameters.platform }} + artifactName: drop-${{ parameters.platform }} + steps: - checkout: self fetchDepth: 1 @@ -79,29 +85,6 @@ jobs: maximumCpuCount: true - ${{ if eq(parameters.isReleaseBuild, true) }}: - - task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 - displayName: 'Generate Software Bill of Material(SBoM)' - inputs: - BuildDropPath: $(Build.BinariesDirectory)\$(BuildConfiguration)\$(BuildPlatform)\Calculator - PackageName: 'Microsoft.WindowsCalculator' - PackageVersion: $(Build.BuildNumber) - - - task: PublishBuildArtifacts@1 - displayName: Publish drop artifact - inputs: - artifactName: drop - pathToPublish: $(Build.BinariesDirectory) - parallel: true - - - ${{ if eq(parameters.isReleaseBuild, true) }}: - - task: PublishSymbols@2 - displayName: Publish symbols - inputs: - symbolsFolder: $(Build.BinariesDirectory)\$(BuildConfiguration)\$(BuildPlatform) - searchPattern: '**/*.pdb' - symbolServerType: teamServices - treatNotIndexedAsWarning: true - - task: CopyFiles@2 displayName: Copy Files for BinSkim analysis inputs: @@ -113,7 +96,8 @@ jobs: # - WebView2Loader.dll # - Microsoft.Web.WebView2.Core.dll Contents: | - **\* + **\*.dll + **\*.exe !**\clrcompression.dll !**\WebView2Loader.dll !**\Microsoft.Web.WebView2.Core.dll @@ -123,24 +107,15 @@ jobs: flattenFolders: false analyzeTarget: '$(Agent.BuildDirectory)\binskim\*' - - task: securedevelopmentteam.vss-secure-development-tools.build-task-binskim.BinSkim@3 - displayName: Run BinSkim + - task: PublishSymbols@2 + displayName: Publish symbols inputs: - inputType: Basic - analyzeTarget: '$(Agent.BuildDirectory)\binskim\*' - analyzeVerbose: true - analyzeHashes: true - continueOnError: true + symbolsFolder: $(Build.BinariesDirectory)\$(BuildConfiguration)\$(BuildPlatform) + searchPattern: '**/*.pdb' + symbolServerType: teamServices + treatNotIndexedAsWarning: true - task: securedevelopmentteam.vss-secure-development-tools.build-task-policheck.PoliCheck@1 displayName: Run PoliCheck inputs: targetType: F - - - task: securedevelopmentteam.vss-secure-development-tools.build-task-publishsecurityanalysislogs.PublishSecurityAnalysisLogs@2 - displayName: Publish security analysis logs - - - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: Detect open source components - inputs: - sourceScanPath: $(Agent.BuildDirectory) diff --git a/build/pipelines/templates/package-msixbundle.yaml b/build/pipelines/templates/package-msixbundle.yaml index 0ca7509e..4bc2fe30 100644 --- a/build/pipelines/templates/package-msixbundle.yaml +++ b/build/pipelines/templates/package-msixbundle.yaml @@ -3,7 +3,6 @@ # this job also signs the bundle and creates StoreBroker packages. parameters: - isOSSBuild: false signBundle: false createStoreBrokerPackages: false @@ -22,24 +21,67 @@ jobs: in(dependencies.BuildARM.result, 'Succeeded', 'SucceededWithIssues', 'Skipped'), in(dependencies.BuildARM64.result, 'Succeeded', 'SucceededWithIssues', 'Skipped') ) - pool: - ${{ if eq(parameters.isOSSBuild, true) }}: - name: EssentialExperiencesOpenSource-windows-2022 - ${{ if eq(parameters.isOSSBuild, false) }}: - name: EssentialExperiences-windows-2022 variables: skipComponentGovernanceDetection: true StoreBrokerMediaRootPath: $(TEMP)\SBMedia StoreBrokerPackagePath: $(Build.ArtifactStagingDirectory)\storeBrokerPayload + PackageX86: $[in(dependencies.Buildx86.result, 'Succeeded', 'SucceededWithIssues')] + PackageX64: $[in(dependencies.Buildx64.result, 'Succeeded', 'SucceededWithIssues')] + PackageARM: $[in(dependencies.BuildARM.result, 'Succeeded', 'SucceededWithIssues')] + PackageARM64: $[in(dependencies.BuildARM64.result, 'Succeeded', 'SucceededWithIssues')] + templateContext: + outputs: + - ${{ if eq(parameters.signBundle, false) }}: + - output: pipelineArtifact + displayName: Publish MsixBundle artifact + targetPath: $(Build.ArtifactStagingDirectory)\msixBundle + artifactName: msixBundle + - ${{ else }}: + - output: pipelineArtifact + displayName: Publish MsixBundleSigned artifact + targetPath: $(Build.ArtifactStagingDirectory)\msixBundle + artifactName: msixBundleSigned + - ${{ if eq(parameters.createStoreBrokerPackages, true) }}: + - output: pipelineArtifact + displayName: Publish StoreBroker Payload artifact + targetPath: $(StoreBrokerPackagePath) + artifactName: storeBrokerPayload + steps: - checkout: self fetchDepth: 1 - - task: DownloadBuildArtifacts@0 - displayName: Download all .msix artifacts + - task: DownloadPipelineArtifact@2 + displayName: Download all .msix artifacts (x86) + condition: and(succeeded(), eq(variables.PackageX86, 'true')) inputs: - artifactName: drop + artifactName: drop-x86 itemPattern: '**/*.msix' + targetPath: $(Build.ArtifactStagingDirectory)\drop\x86 + + - task: DownloadPipelineArtifact@2 + displayName: Download all .msix artifacts (x64) + condition: and(succeeded(), eq(variables.PackageX64, 'true')) + inputs: + artifactName: drop-x64 + itemPattern: '**/*.msix' + targetPath: $(Build.ArtifactStagingDirectory)\drop\x64 + + - task: DownloadPipelineArtifact@2 + displayName: Download all .msix artifacts (ARM) + condition: and(succeeded(), eq(variables.PackageARM, 'true')) + inputs: + artifactName: drop-ARM + itemPattern: '**/*.msix' + targetPath: $(Build.ArtifactStagingDirectory)\drop\ARM + + - task: DownloadPipelineArtifact@2 + displayName: Download all .msix artifacts (ARM64) + condition: and(succeeded(), eq(variables.PackageARM64, 'true')) + inputs: + artifactName: drop-ARM64 + itemPattern: '**/*.msix' + targetPath: $(Build.ArtifactStagingDirectory)\drop\ARM64 - ${{ if eq(parameters.createStoreBrokerPackages, true) }}: - task: UniversalPackages@0 @@ -55,7 +97,7 @@ jobs: displayName: Generate MsixBundle mapping inputs: filePath: $(Build.SourcesDirectory)\build\scripts\CreateMsixBundleMapping.ps1 - arguments: '-InputPath $(Build.ArtifactStagingDirectory)\drop\Release -ProjectName Calculator -OutputFile $(Build.BinariesDirectory)\MsixBundleMapping.txt' + arguments: '-InputPath $(Build.ArtifactStagingDirectory)\drop -ProjectName Calculator -OutputFile $(Build.BinariesDirectory)\MsixBundleMapping.txt' - powershell: | $buildVersion = [version]$Env:BUILDVERSION @@ -74,12 +116,6 @@ jobs: contents: Microsoft.WindowsCalculator_8wekyb3d8bbwe.msixbundle targetFolder: $(Build.ArtifactStagingDirectory)\msixBundle - - task: PublishBuildArtifacts@1 - displayName: Publish MsixBundle artifact - inputs: - artifactName: msixBundle - pathToPublish: $(Build.ArtifactStagingDirectory)\msixBundle - - ${{ if eq(parameters.signBundle, true) }}: - task: EsrpCodeSigning@2 displayName: Send msixbundle to code signing service @@ -114,11 +150,6 @@ jobs: "ToolVersion": "1.0" } ] - - task: PublishBuildArtifacts@1 - displayName: Publish MsixBundleSigned artifact - inputs: - pathtoPublish: $(Build.ArtifactStagingDirectory)\msixBundle - artifactName: msixBundleSigned - ${{ if eq(parameters.createStoreBrokerPackages, true) }}: - powershell: | @@ -152,9 +183,3 @@ jobs: pdpMediaPath: $(StoreBrokerMediaRootPath) outSBPackagePath: $(StoreBrokerPackagePath) outSBName: SBCalculator - - - task: PublishBuildArtifacts@1 - displayName: Publish StoreBroker Payload artifact - inputs: - pathtoPublish: $(StoreBrokerPackagePath) - artifactName: storeBrokerPayload diff --git a/build/pipelines/templates/release-store.yaml b/build/pipelines/templates/release-store.yaml index 551662ca..f8e3e245 100644 --- a/build/pipelines/templates/release-store.yaml +++ b/build/pipelines/templates/release-store.yaml @@ -3,11 +3,9 @@ jobs: - job: ReleaseStore dependsOn: Package - pool: - name: EssentialExperiences-windows-2022 variables: skipComponentGovernanceDetection: true - StoreBrokerPackagePath: $(Build.ArtifactStagingDirectory)\storeBrokerPayload + StoreBrokerPackagePath: $(Pipeline.Workspace)\storeBrokerPayload StoreBrokerLogPath: $(StoreBrokerPackagePath)\StoreBroker.log FlightId: 161f0975-cb5f-475b-8ef6-26383c37621f AppId: 9WZDNCRFHVN5 @@ -15,10 +13,9 @@ jobs: steps: - checkout: none - - task: DownloadBuildArtifacts@0 + - download: current displayName: Download storeBrokerPayload artifact - inputs: - artifactName: storeBrokerPayload + artifact: storeBrokerPayload - task: MS-RDX-MRO.windows-store-publish-dev.flight-task.store-flight@2 displayName: Flight StoreBroker Payload to team ring diff --git a/build/pipelines/templates/release-vpack.yaml b/build/pipelines/templates/release-vpack.yaml index 2de88a81..d5ed3b83 100644 --- a/build/pipelines/templates/release-vpack.yaml +++ b/build/pipelines/templates/release-vpack.yaml @@ -4,39 +4,38 @@ jobs: - job: ReleaseVPack dependsOn: Package - pool: - name: EssentialExperiences-windows-2022 variables: skipComponentGovernanceDetection: true + templateContext: + outputs: + - output: pipelineArtifact + displayName: Publish vpack\app artifact with vpack manifest + targetPath: $(XES_VPACKMANIFESTDIRECTORY)\$(XES_VPACKMANIFESTNAME) + artifactName: vpackManifest + sbomEnabled: false + steps: - checkout: none - - task: DownloadBuildArtifacts@0 + - download: current displayName: Download msixBundleSigned artifact - inputs: - artifactName: msixBundleSigned + artifact: msixBundleSigned - task: CopyFiles@2 displayName: Copy signed MsixBundle to vpack staging folder inputs: - sourceFolder: $(Build.ArtifactStagingDirectory)\msixBundleSigned + sourceFolder: $(Pipeline.Workspace)\msixBundleSigned contents: Microsoft.WindowsCalculator_8wekyb3d8bbwe.msixbundle - targetFolder: $(Build.ArtifactStagingDirectory)\vpack\msixBundle + targetFolder: $(Pipeline.Workspace)\vpack\msixBundle - task: PkgESVPack@12 displayName: Create and push vpack for app env: SYSTEM_ACCESSTOKEN: $(System.AccessToken) inputs: - sourceDirectory: $(Build.ArtifactStagingDirectory)\vpack\msixBundle + sourceDirectory: $(Pipeline.Workspace)\vpack\msixBundle description: VPack for the Calculator Application pushPkgName: calculator.app version: $(versionMajor).$(versionMinor).$(versionBuild) owner: paxeeapps provData: true - - - task: PublishBuildArtifacts@1 - displayName: Publish vpack\app artifact with vpack manifest - inputs: - pathtoPublish: $(XES_VPACKMANIFESTDIRECTORY)\$(XES_VPACKMANIFESTNAME) - artifactName: vpackManifest diff --git a/build/pipelines/templates/run-ui-tests.yaml b/build/pipelines/templates/run-ui-tests.yaml index 8658a7c4..231eaef4 100644 --- a/build/pipelines/templates/run-ui-tests.yaml +++ b/build/pipelines/templates/run-ui-tests.yaml @@ -17,6 +17,8 @@ jobs: name: EssentialExperiences-Win11 variables: skipComponentGovernanceDetection: true + DropName: drop-${{ parameters.platform }} + steps: - checkout: self fetchDepth: 1 @@ -33,30 +35,29 @@ jobs: width: 1920 height: 1080 - - task: DownloadBuildArtifacts@0 + - download: current displayName: Download MsixBundle and CalculatorUITests - inputs: - artifactName: drop - itemPattern: | - drop/Release/${{ parameters.platform }}/Calculator/AppPackages/** - drop/Release/${{ parameters.platform }}/publish/** + artifact: $(DropName) + patterns: | + Calculator/AppPackages/** + publish/** - task: PowerShell@2 displayName: Install certificate inputs: - filePath: $(Build.ArtifactStagingDirectory)/drop/Release/${{ parameters.platform }}/Calculator/AppPackages/Calculator_$(Build.BuildNumber)_Test/Add-AppDevPackage.ps1 - arguments: -CertificatePath $(Build.ArtifactStagingDirectory)/drop/Release/${{ parameters.platform }}/Calculator/AppPackages/Calculator_$(Build.BuildNumber)_Test/Calculator_$(Build.BuildNumber)_${{ parameters.platform }}.cer -Force + filePath: $(Pipeline.Workspace)/$(DropName)/Calculator/AppPackages/Calculator_$(Build.BuildNumber)_Test/Add-AppDevPackage.ps1 + arguments: -CertificatePath $(Pipeline.Workspace)/$(DropName)/Calculator/AppPackages/Calculator_$(Build.BuildNumber)_Test/Calculator_$(Build.BuildNumber)_${{ parameters.platform }}.cer -Force - task: PowerShell@2 displayName: Install app inputs: - filePath: $(Build.ArtifactStagingDirectory)/drop/Release/${{ parameters.platform }}/Calculator/AppPackages/Calculator_$(Build.BuildNumber)_Test/Add-AppDevPackage.ps1 + filePath: $(Pipeline.Workspace)/$(DropName)/Calculator/AppPackages/Calculator_$(Build.BuildNumber)_Test/Add-AppDevPackage.ps1 arguments: -Force - task: VSTest@2 displayName: Run CalculatorUITests inputs: - testAssemblyVer2: $(Build.ArtifactStagingDirectory)/drop/Release/${{ parameters.platform }}/publish/CalculatorUITests.dll - runSettingsFile: $(Build.ArtifactStagingDirectory)/drop/Release/${{ parameters.platform }}/publish/${{ parameters.runsettingsFileName }} + testAssemblyVer2: $(Pipeline.Workspace)/$(DropName)/publish/CalculatorUITests.dll + runSettingsFile: $(Pipeline.Workspace)/$(DropName)/publish/${{ parameters.runsettingsFileName }} platform: ${{ parameters.platform }} configuration: Release diff --git a/build/pipelines/templates/run-unit-tests.yaml b/build/pipelines/templates/run-unit-tests.yaml index 6411e243..a6503f9c 100644 --- a/build/pipelines/templates/run-unit-tests.yaml +++ b/build/pipelines/templates/run-unit-tests.yaml @@ -1,7 +1,6 @@ # This template contains jobs to run unit tests. parameters: - isOSSBuild: false platform: '' runsettingsFileName: '' @@ -10,30 +9,25 @@ jobs: displayName: UnitTests ${{ parameters.platform }} dependsOn: Build${{ parameters.platform }} condition: succeeded() - pool: - ${{ if eq(parameters.isOSSBuild, true) }}: - name: EssentialExperiencesOpenSource-windows-2022 - ${{ if eq(parameters.isOSSBuild, false) }}: - name: EssentialExperiences-windows-2022 variables: skipComponentGovernanceDetection: true + UnitTestsDir: $(Pipeline.Workspace)\drop-${{ parameters.platform }}\CalculatorUnitTests\AppPackages\CalculatorUnitTests_Test steps: - checkout: none - - task: DownloadBuildArtifacts@0 + - download: current displayName: Download CalculatorUnitTests - inputs: - artifactName: drop - itemPattern: drop/Release/${{ parameters.platform }}/CalculatorUnitTests/AppPackages/CalculatorUnitTests_Test/** + artifact: drop-${{ parameters.platform }} + patterns: '**/CalculatorUnitTests_Test/**' - task: PowerShell@2 displayName: Install Certificate inputs: - filePath: $(Build.ArtifactStagingDirectory)\drop\Release\${{ parameters.platform }}\CalculatorUnitTests\AppPackages\CalculatorUnitTests_Test\Add-AppDevPackage.ps1 - arguments: -CertificatePath $(Build.ArtifactStagingDirectory)\drop\Release\${{ parameters.platform }}\CalculatorUnitTests\AppPackages\CalculatorUnitTests_Test\CalculatorUnitTests.cer -Force + filePath: $(UnitTestsDir)\Add-AppDevPackage.ps1 + arguments: -CertificatePath $(UnitTestsDir)\CalculatorUnitTests.cer -Force - task: VSTest@2 displayName: Run CalculatorUnitTests inputs: - testAssemblyVer2: $(Build.ArtifactStagingDirectory)\drop\Release\${{ parameters.platform }}\CalculatorUnitTests\AppPackages\CalculatorUnitTests_Test\CalculatorUnitTests.msix - otherConsoleOptions: /Platform:${{ parameters.platform }} \ No newline at end of file + testAssemblyVer2: $(UnitTestsDir)\CalculatorUnitTests.msix + otherConsoleOptions: /Platform:${{ parameters.platform }} diff --git a/src/CalculatorUnitTests/CalculatorUnitTests.vcxproj b/src/CalculatorUnitTests/CalculatorUnitTests.vcxproj index 8dbdef12..371a686a 100644 --- a/src/CalculatorUnitTests/CalculatorUnitTests.vcxproj +++ b/src/CalculatorUnitTests/CalculatorUnitTests.vcxproj @@ -145,6 +145,7 @@ $(SolutionDir);$(SolutionDir)CalcManager;$(SolutionDir)CalcViewModel;%(AdditionalIncludeDirectories) Level4 true + Guard @@ -163,6 +164,7 @@ $(SolutionDir);$(SolutionDir)CalcManager;$(SolutionDir)CalcViewModel;%(AdditionalIncludeDirectories) Level4 true + Guard @@ -181,6 +183,7 @@ $(SolutionDir);$(SolutionDir)CalcManager;$(SolutionDir)CalcViewModel;%(AdditionalIncludeDirectories) Level4 true + Guard @@ -199,6 +202,7 @@ $(SolutionDir);$(SolutionDir)CalcManager;$(SolutionDir)CalcViewModel;%(AdditionalIncludeDirectories) Level4 true + Guard diff --git a/src/GraphingImpl/GraphingImpl.vcxproj b/src/GraphingImpl/GraphingImpl.vcxproj index 3eca1119..07b750f1 100644 --- a/src/GraphingImpl/GraphingImpl.vcxproj +++ b/src/GraphingImpl/GraphingImpl.vcxproj @@ -148,6 +148,7 @@ stdcpp17 /DGRAPHING_ENGINE_IMPL %(AdditionalOptions) $(ProjectDir);$(ProjectDir)\..\;$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) + Guard Console @@ -176,6 +177,7 @@ stdcpp17 /DGRAPHING_ENGINE_IMPL %(AdditionalOptions) $(ProjectDir);$(ProjectDir)\..\;$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) + Guard Console @@ -204,6 +206,7 @@ stdcpp17 /DGRAPHING_ENGINE_IMPL %(AdditionalOptions) $(ProjectDir);$(ProjectDir)\..\;$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) + Guard Console @@ -232,6 +235,7 @@ stdcpp17 /DGRAPHING_ENGINE_IMPL %(AdditionalOptions) $(ProjectDir);$(ProjectDir)\..\;$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) + Guard Console