Skip to content
28 changes: 12 additions & 16 deletions build/AzurePipelinesTemplates/WindowsAppSDK-RunHelixTests-Job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ jobs:

# This directory contains the Test payload, Helix test binaries and scripts. It is sent to the Helix machines.
# Note: TAEF must be present in this directory, as GenerateHelixWorkItems.ps1 expects to invoke te.exe from here.
# We download the BuildOutput artifact from the prior build stage(s) under this path.
# However, the artifacts also has it's down folder structure, which makes the resulting directory structure look like this:
# $(Build.SourcesDirectory)\BuildOutput\$(buildConfiguration)\$(buildPlatform)\HelixTests\BuildOutput\$(buildConfiguration)\$(buildPlatform)
testPayloadDir: $(Build.SourcesDirectory)\BuildOutput\$(buildConfiguration)\$(buildPlatform)\HelixTests

# The generated .proj files are placed here.
Expand Down Expand Up @@ -93,21 +96,14 @@ jobs:
nugetConfigPath: nuget.config
restoreDirectory: packages

# Download the MRT Core test binaries
# Download the BuildOutput from the Build stage(s).
# We only bring down the relevant content for this build config (Debug/Release) & platform, to save some space and time.
- task: DownloadBuildArtifacts@0
displayName: 'Download: Binaries'
displayName: 'Download: BuildOutput'
inputs:
artifactName: 'mrtcore_test_binaries_$(buildPlatform)'
artifactName: 'BuildOutput'
downloadPath: $(testPayloadDir)

# Publish the full testPayloadDir contents.
# This is not required, but can be useful for debugging purposes.
- task: PublishBuildArtifacts@1
displayName: 'Publish testPayloadDir'
condition: always()
inputs:
PathtoPublish: $(testPayloadDir)
artifactName: HelixTestPayloadDir_$(buildPlatform)_$(buildConfiguration)
itemPattern: 'BuildOutput/$(buildConfiguration)/$(buildPlatform)/**/*'

# Discover the TAEF test binaries to run and generate the Helix Work Items for them.
# Note: There are 4 test suites for MRT Core. We currently run 3 of them in Helix.
Expand All @@ -116,28 +112,28 @@ jobs:
inputs:
targetType: filePath
filePath: $(winUIHelixPipelineScripts)\GenerateHelixWorkItems.ps1
arguments: -TestFilePattern 'mrtcore_test_binaries_$(buildPlatform)\MrmUnitTest\*.dll' -TestBinaryDirectoryPath '$(testPayloadDir)' -OutputProjFile '$(helixWorkItemsDir)\MrtCore-MrmUnitTests.proj' -WorkItemPrefix 'MrtCore.MrmUnitTests.$(buildPlatform).$(buildConfiguration)' -TestNamePrefix 'MrtCore.MrmUnitTests.$(buildPlatform).$(buildConfiguration)'
arguments: -TestFilePattern 'BuildOutput\$(buildConfiguration)\$(buildPlatform)\MrmUnitTest\*.dll' -TestBinaryDirectoryPath '$(testPayloadDir)' -OutputProjFile '$(helixWorkItemsDir)\MrtCore-MrmUnitTests.proj' -WorkItemPrefix 'MrtCore.MrmUnitTests.$(buildPlatform).$(buildConfiguration)' -TestNamePrefix 'MrtCore.MrmUnitTests.$(buildPlatform).$(buildConfiguration)'

- task: powershell@2
displayName: 'Discover MRT Core BaseUnitTests'
inputs:
targetType: filePath
filePath: $(winUIHelixPipelineScripts)\GenerateHelixWorkItems.ps1
arguments: -TestFilePattern 'mrtcore_test_binaries_$(buildPlatform)\MrmBaseUnitTests\*.dll' -TestBinaryDirectoryPath '$(testPayloadDir)' -OutputProjFile '$(helixWorkItemsDir)\MrtCore-MrmBaseUnitTests.proj' -WorkItemPrefix 'MrtCore.MrmBaseUnitTests.$(buildPlatform).$(buildConfiguration)' -TestNamePrefix 'MrtCore.MrmBaseUnitTests.$(buildPlatform).$(buildConfiguration)'
arguments: -TestFilePattern 'BuildOutput\$(buildConfiguration)\$(buildPlatform)\MrmBaseUnitTests\*.dll' -TestBinaryDirectoryPath '$(testPayloadDir)' -OutputProjFile '$(helixWorkItemsDir)\MrtCore-MrmBaseUnitTests.proj' -WorkItemPrefix 'MrtCore.MrmBaseUnitTests.$(buildPlatform).$(buildConfiguration)' -TestNamePrefix 'MrtCore.MrmBaseUnitTests.$(buildPlatform).$(buildConfiguration)'

- task: powershell@2
displayName: 'Discover MRT Core UnpackagedTests'
inputs:
targetType: filePath
filePath: $(winUIHelixPipelineScripts)\GenerateHelixWorkItems.ps1
arguments: -TestFilePattern 'mrtcore_test_binaries_$(buildPlatform)\MrtCoreUnpackagedTests\*.dll' -TestBinaryDirectoryPath '$(testPayloadDir)' -OutputProjFile '$(helixWorkItemsDir)\MrtCore-MrtCoreUnpackagedTests.proj' -WorkItemPrefix 'MrtCore.MrtCoreUnpackagedTests.$(buildPlatform).$(buildConfiguration)' -TestNamePrefix 'MrtCore.MrtCoreUnpackagedTests.$(buildPlatform).$(buildConfiguration)'
arguments: -TestFilePattern 'BuildOutput\$(buildConfiguration)\$(buildPlatform)\MrtCoreUnpackagedTests\*.dll' -TestBinaryDirectoryPath '$(testPayloadDir)' -OutputProjFile '$(helixWorkItemsDir)\MrtCore-MrtCoreUnpackagedTests.proj' -WorkItemPrefix 'MrtCore.MrtCoreUnpackagedTests.$(buildPlatform).$(buildConfiguration)' -TestNamePrefix 'MrtCore.MrtCoreUnpackagedTests.$(buildPlatform).$(buildConfiguration)'

# In Helix, test folders are under subfolders of TAEF. MRTCore UnpackagedTests use reg-free WinRT activation. It requires the winmd file
# under same folder as the executable.
- task: CopyFiles@2
displayName: 'Copy Microsoft.Windows.ApplicationModel.Resources.winmd to test root'
inputs:
sourceFolder: $(testPayloadDir)\mrtcore_test_binaries_$(buildPlatform)\MrtCoreUnpackagedTests
sourceFolder: $(testPayloadDir)\BuildOutput\$(buildConfiguration)\$(buildPlatform)\MrtCoreUnpackagedTests
contents: |
Microsoft.Windows.ApplicationModel.Resources.winmd
targetFolder: $(testPayloadDir)
Expand Down
16 changes: 15 additions & 1 deletion build/ProjectReunion-CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr)
variables:
- template: WindowsAppSDK-Versions.yml
- template: WindowsAppSDK-CommonVariables.yml
- name: buildOutputDir
value: $(Build.SourcesDirectory)\BuildOutput

jobs:
- job: CredScan
Expand Down Expand Up @@ -55,7 +57,6 @@ jobs:
buildConfiguration: 'Release'

variables:
buildOutputDir : $(Build.SourcesDirectory)\BuildOutput
publishDir : $(Build.ArtifactStagingDirectory)
steps:
- template: AzurePipelinesTemplates\WindowsAppSDK-BuildDevProject-Steps.yml
Expand All @@ -64,6 +65,12 @@ jobs:

- template: AzurePipelinesTemplates\WindowsAppSDK-PublishProjectOutput-Steps.yml

- task: PublishBuildArtifacts@1
displayName: 'Publish BuildOutput'
inputs:
artifactName: BuildOutput
PathtoPublish: '$(buildOutputDir)'

- task: BinSkim@3
inputs:
InputType: 'Basic'
Expand Down Expand Up @@ -110,12 +117,19 @@ jobs:
parameters:
buildJobName: 'BuildMRTCore'

- task: PublishBuildArtifacts@1
displayName: 'Publish BuildOutput'
inputs:
artifactName: BuildOutput
PathtoPublish: '$(buildOutputDir)'

- task: BinSkim@3
inputs:
InputType: 'Basic'
Function: 'analyze'
AnalyzeTarget: '$(Build.ArtifactStagingDirectory)\*.dll;$(Build.ArtifactStagingDirectory)\*.exe'
AnalyzeVerbose: true

- task: PostAnalysis@1
inputs:
AllTools: false
Expand Down
20 changes: 0 additions & 20 deletions build/build-mrt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -180,26 +180,6 @@ steps:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'

# Copy and Publish the test binaries so we can run them in Helix later.
- task: CopyFiles@2
displayName: 'copy mrtcore test binaries'
condition: and(succeeded(), or(eq(variables['buildPlatform'], 'x86'), eq(variables['buildPlatform'], 'x64')))
inputs:
SourceFolder: '${{ parameters.MRTBinariesDirectory }}\Release\$(buildPlatform)'
Contents: |
MrmBaseUnitTests\**
MrmUnitTest\**
MrtCoreManagedTest\**
MrtCoreUnpackagedTests\**
TargetFolder: '$(Agent.TempDirectory)\mrt_testbin\$(buildPlatform)'

- task: PublishBuildArtifacts@1
displayName: 'Publish mrtcore test binaries'
condition: and(succeeded(), or(eq(variables['buildPlatform'], 'x86'), eq(variables['buildPlatform'], 'x64')))
inputs:
PathtoPublish: '$(Agent.TempDirectory)\mrt_testbin\$(buildPlatform)'
artifactName: mrtcore_test_binaries_$(buildPlatform)

- task: ComponentGovernanceComponentDetection@0
inputs:
scanType: 'Register'
Expand Down