Skip to content

Commit

Permalink
Adding libraries tests and coreclr test build
Browse files Browse the repository at this point in the history
  • Loading branch information
joperezr committed Jun 30, 2020
1 parent 69555f2 commit a10014e
Show file tree
Hide file tree
Showing 7 changed files with 162 additions and 42 deletions.
8 changes: 7 additions & 1 deletion eng/pipelines/common/templates/runtimes/build-test-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ parameters:
runtimeFlavorDisplayName: 'CoreCLR'
runtimeVariant: ''

overrideDependsOn: false
dependsOn: []

### Build managed test components (native components are getting built as part
### of the the product build job).

Expand Down Expand Up @@ -63,10 +66,13 @@ jobs:
# See https://docs.microsoft.com/azure/devops/pipelines/process/conditions
condition: and(succeeded(), ${{ parameters.condition }})

${{ if eq(parameters.overrideDependsOn, 'true')}}:
dependsOn: ${{ parameters.dependsOn }}

# TODO: Build of managed test components currently depends on the corresponding build job
# because it needs System.Private.Corelib; we should be able to remove this dependency
# by switching over to using reference assembly.
${{ if ne(parameters.stagedBuild, true) }}:
${{ if and(ne(parameters.stagedBuild, true), ne(parameters.overrideDependsOn, 'true')) }}:
dependsOn:
- ${{ format('coreclr_{0}_product_build_{1}{2}_{3}_{4}', parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, coalesce(parameters.liveRuntimeBuildConfig, parameters.buildConfig)) }}
- ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
Expand Down
27 changes: 2 additions & 25 deletions eng/pipelines/libraries/build-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -100,37 +100,14 @@ jobs:
- ${{ if ne(parameters.isOfficialBuild, true) }}:
- template: /eng/pipelines/libraries/prepare-publish-for-tests.yml

- task: CopyFiles@2
displayName: Prepare shared framework ref assemblies to publish
inputs:
sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/ref/microsoft.netcore.app
targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/ref/microsoft.netcore.app

- task: CopyFiles@2
displayName: Prepare shared framework runtime folder to publish
inputs:
sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/pkg
targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/pkg

- template: /eng/pipelines/libraries/prepare-shared-framework-for-publish.yml

- task: CopyFiles@2
displayName: Prepare docs folder to publish
inputs:
sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/docs
targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/docs

- task: CopyFiles@2
displayName: Prepare native folder to publish
inputs:
sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/native
targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/native

- task: CopyFiles@2
displayName: Prepare artifacts packages folder to publish
inputs:
sourceFolder: $(Build.SourcesDirectory)/artifacts/packages
targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/packages
condition: and(succeeded(), eq(variables['_librariesBuildProducedPackages'], true))

- template: /eng/pipelines/common/upload-artifact-step.yml
parameters:
rootFolder: $(Build.ArtifactStagingDirectory)/artifacts
Expand Down
13 changes: 9 additions & 4 deletions eng/pipelines/libraries/build-test-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ parameters:
variables: {}
condition: true
runTests: false
overrideDependsOn: false
dependsOn: []

jobs:
- template: /eng/pipelines/libraries/base-job.yml
Expand All @@ -37,10 +39,13 @@ jobs:
displayName: 'Test Build'

dependsOn:
- ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
# Libraries Test also depends on Product, now that the libraries build only depends on corelib
- ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
- ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveRuntimeBuildConfig) }}
- ${{ if eq(parameters.overrideDependsOn, 'true') }}:
- ${{ parameters.dependsOn }}
- ${{ if ne(parameters.overrideDependsOn, 'true') }}:
- ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
# Libraries Test also depends on Product, now that the libraries build only depends on corelib
- ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
- ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveRuntimeBuildConfig) }}

variables:
- librariesTestsArtifactName: ${{ format('libraries_test_assets_{0}_{1}_{2}', parameters.osGroup, parameters.archType, parameters.buildConfig) }}
Expand Down
26 changes: 26 additions & 0 deletions eng/pipelines/libraries/prepare-shared-framework-for-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#Prepare shared framework assets for publishing
steps:
- task: CopyFiles@2
displayName: Prepare shared framework ref assemblies to publish
inputs:
sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/ref/microsoft.netcore.app
targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/ref/microsoft.netcore.app

- task: CopyFiles@2
displayName: Prepare shared framework runtime folder to publish
inputs:
sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/pkg
targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/pkg

- task: CopyFiles@2
displayName: Prepare native folder to publish
inputs:
sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/native
targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/native

- task: CopyFiles@2
displayName: Prepare artifacts packages folder to publish
inputs:
sourceFolder: $(Build.SourcesDirectory)/artifacts/packages
targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/packages
condition: and(succeeded(), eq(variables['_librariesBuildProducedPackages'], true))
21 changes: 13 additions & 8 deletions eng/pipelines/libraries/run-test-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ parameters:
# stress modes that each test will be run with. This is the same usage as 'testGroup' in
# eng/pipelines/common/templates/runtimes/run-test-job.yml.
coreclrTestGroup: ''
overrideDependsOn: false
dependsOn: []

jobs:
- template: /eng/pipelines/libraries/base-job.yml
Expand Down Expand Up @@ -50,14 +52,17 @@ jobs:
testDisplayName: ${{ parameters.runtimeFlavor }}_interpreter_${{ parameters.liveRuntimeBuildConfig }}

dependsOn:
- ${{ if notIn(parameters.framework, 'allConfigurations', 'net472') }}:
- ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
- ${{ format('libraries_test_build_{0}_{1}_{2}', parameters.osGroup, parameters.dependsOnTestArchitecture, parameters.dependsOnTestBuildConfiguration) }}
- ${{ if in(parameters.framework, 'allConfigurations', 'net472') }}:
- ${{ format('libraries_build_{0}_{1}{2}_{3}_{4}', parameters.framework, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
- ${{ format('libraries_test_build_{0}_{1}_{2}_{3}', parameters.framework, parameters.osGroup, parameters.dependsOnTestArchitecture, parameters.dependsOnTestBuildConfiguration) }}
- ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
- ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveRuntimeBuildConfig) }}
- ${{ if eq(parameters.overrideDependsOn, 'true') }}:
- ${{ parameters.dependsOn }}
- ${{ if ne(parameters.overrideDependsOn, 'true') }}:
- ${{ if notIn(parameters.framework, 'allConfigurations', 'net472') }}:
- ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
- ${{ format('libraries_test_build_{0}_{1}_{2}', parameters.osGroup, parameters.dependsOnTestArchitecture, parameters.dependsOnTestBuildConfiguration) }}
- ${{ if in(parameters.framework, 'allConfigurations', 'net472') }}:
- ${{ format('libraries_build_{0}_{1}{2}_{3}_{4}', parameters.framework, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
- ${{ format('libraries_test_build_{0}_{1}_{2}_{3}', parameters.framework, parameters.osGroup, parameters.dependsOnTestArchitecture, parameters.dependsOnTestBuildConfiguration) }}
- ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
- ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveRuntimeBuildConfig) }}

variables:
- librariesTestsArtifactName: ${{ format('libraries_test_assets_{0}_{1}_{2}', parameters.osGroup, parameters.dependsOnTestArchitecture, parameters.dependsOnTestBuildConfiguration) }}
Expand Down
106 changes: 102 additions & 4 deletions eng/pipelines/runtimelab.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ jobs:
- Windows_NT_x64
jobParameters:
testGroup: innerloop
nameSuffix: Runtime_Debug
buildArgs: -s clr+libs+installer -c debug -runtimeConfiguration checked
extraStepsTemplate: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml

Expand All @@ -74,12 +73,111 @@ jobs:
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: release
buildConfig: Release
platforms:
- Linux_x64
- Windows_NT_x64
jobParameters:
testGroup: innerloop
nameSuffix: Runtime_Release
buildArgs: -s clr+libs+installer -c release
buildArgs: -s clr+libs+installer -c $(_BuildConfig)
extraStepsTemplate: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml

#
# Build with Release allConfigurations to produce packages and run tests
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: release
platforms:
- Windows_NT_x64
jobParameters:
testGroup: innerloop
nameSuffix: All_Configurations
buildArgs: -s clr.corelib+libs -c $(_BuildConfig) -allConfigurations

#
# CoreCLR Test builds using live libraries release build
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml
buildConfig: checked
platforms:
- Linux_x64
jobParameters:
testGroup: innerloop
liveLibrariesBuildConfig: Release
overrideDependsOn: true
dependsOn:
- build_Linux_x64_checked_
- build_Linux_x64_Release_

#
# Libraries Test Build
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/libraries/build-test-job.yml
buildConfig: Release
platforms:
- Linux_x64
jobParameters:
isOfficialBuild: false
liveRuntimeBuildConfig: Release
testScope: innerloop
overrideDependsOn: true
dependsOn:
- build_Linux_x64_Release_

- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/libraries/build-test-job.yml
buildConfig: Release
platforms:
- Windows_NT_x64
jobParameters:
isOfficialBuild: false
liveRuntimeBuildConfig: Release
testScope: innerloop
overrideDependsOn: true
dependsOn:
- build_Windows_NT_x64_Release_

#
# Libraries Release Test Execution against a release coreclr runtime
# Only when the PR contains a libraries change
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/libraries/run-test-job.yml
buildConfig: Release
platforms:
- Linux_x64
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
jobParameters:
isOfficialBuild: false
testScope: innerloop
liveRuntimeBuildConfig: Release
dependsOnTestBuildConfiguration: Release
dependsOnTestArchitecture: x64
overrideDependsOn: true
dependsOn:
- libraries_test_build_Linux_x64_Release

- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/libraries/run-test-job.yml
buildConfig: Release
platforms:
- Windows_NT_x64
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
jobParameters:
isOfficialBuild: false
testScope: innerloop
liveRuntimeBuildConfig: Release
dependsOnTestBuildConfiguration: Release
dependsOnTestArchitecture: x64
overrideDependsOn: true
dependsOn:
- libraries_test_build_Windows_NT_x64_Release
3 changes: 3 additions & 0 deletions eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@ parameters:

steps:
# Copy all build output into artifacts staging directory

- template: /eng/pipelines/libraries/prepare-publish-for-tests.yml

- template: /eng/pipelines/libraries/prepare-shared-framework-for-publish.yml

# Zip CoreCLR Build Output
- template: /eng/pipelines/common/upload-artifact-step.yml
parameters:
Expand Down

0 comments on commit a10014e

Please sign in to comment.