-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Split integration test build from test run #71166
Conversation
12a3423
to
d13eb4f
Compare
83a8c24
to
6589974
Compare
eng/build.ps1
Outdated
$vsixDir = Get-PackageDir "RoslynTools.VSIXExpInstaller" | ||
$vsixExe = Join-Path $vsixDir "tools\VsixExpInstaller.exe" | ||
|
||
$vsixExe = Join-Path $ArtifactsDir "bin\Microsoft.VisualStudio.LanguageServices.New.IntegrationTests\$configuration\net472\VSIXExpInstaller\VSIXExpInstaller.exe" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now that we're not building on the same machine, the nuget package directory is not available. Adding the vsix installer to the integration test project is an easy way to ensure that it is available in the test payload.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❗ This is an unsupported VSIX installer, and really needs to be removed from usage. The new integration tests already reference the new one, so we definitely should not be using that project to set this bad example. The solution here is to package up the solution packages folder separately from other build artifacts, similar to what I showed in the other example PR I sent you.
- name: testRuns | ||
type: object | ||
default: | ||
- oop64bit: true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the template accepts a list of input parameters so that we can re-use the build assets for multiple different configurations of test run.
env: | ||
HELIX_CORRELATION_PAYLOAD: '$(Build.SourcesDirectory)\.duplicate' | ||
|
||
# This is a temporary step until the actual test run moves to helix (then we would need to rehydrate the tests there instead) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
these will be removed in the next followup where the rehydration happens in the helix script.
filePath: eng/build.ps1 | ||
arguments: -ci -prepareMachine -testVsi -configuration ${{ parameters.configuration }} -oop64bit:$${{ testParameters.oop64bit }} -oopCoreClr:$${{ testParameters.oopCoreClr }} -collectDumps -lspEditor:$${{ testParameters.lspEditor }} | ||
|
||
# These are temporary publishing steps - once the tests run on helix, the artifacts will be attached to the helix payload. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are basically unchanged from the normal template. Will be removed when on helix as we'll just copy the files into the helix upload root.
@sharwell @dotnet/roslyn-infrastructure PTAL |
If I don't hear any further comments - planning on merging tomorrow. |
eng/build.ps1
Outdated
$vsixDir = Get-PackageDir "RoslynTools.VSIXExpInstaller" | ||
$vsixExe = Join-Path $vsixDir "tools\VsixExpInstaller.exe" | ||
|
||
$vsixExe = Join-Path $ArtifactsDir "bin\Microsoft.VisualStudio.LanguageServices.New.IntegrationTests\$configuration\net472\VSIXExpInstaller\VSIXExpInstaller.exe" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❗ This is an unsupported VSIX installer, and really needs to be removed from usage. The new integration tests already reference the new one, so we definitely should not be using that project to set this bad example. The solution here is to package up the solution packages folder separately from other build artifacts, similar to what I showed in the other example PR I sent you.
...est/New.IntegrationTests/Microsoft.VisualStudio.LanguageServices.New.IntegrationTests.csproj
Outdated
Show resolved
Hide resolved
6589974
to
365fc48
Compare
@sharwell believe I've addressed your comments if you wouldn't mind taking another look |
This is part 1 of running integration tests on helix. This PR separates the build and testing stages in preparation for running on helix, it does not actually send the tests to helix to run.
This PR updates the integration test pipeline to use the same payload creation that we use for our helix unit tests. The integration test pipeline now does the following:
PrepareTests.csproj
to create a minimized test assets payload containing the VSIX and integration test project outputs.In followup PRs, instead of running the integration tests on a normal ADO machine, we will instead partition them and upload them to helix, using the same payload support that I've added in this PR.
Example PR run:

https://dev.azure.com/dnceng-public/public/_build/results?buildId=495861&view=results
Example CI run:

https://dev.azure.com/dnceng-public/public/_build/results?buildId=496084&view=results