Split test build and run into two jobs (dotnet/coreclr#26191)
This change is intended to split the test job in CI runs into two
jobs - one building the tests and another sending the run to Helix.
To facilitate this, I have copied the bulk of the existing
test-job.yml file into two new files, build-test.yml and run-test.yml;
test-job.yml has become a mere wrapper invoking these two new files.
The new build-test file builds the tests, zips the output folder
and publishes it as an Azure artifact (the artifact publishing step
is no longer optional). The subsequent run-test step downloads the
test artifacts and triggers the Helix run for the test set.
The motivation for this change is to mitigate various transient
issues seen in CoreCLR CI runs - when a test execution fails in a
non-deterministic manner, before this change the developer needed to
rerun the lengthy test build step just to retry the tests. This
change should enable rerunning just the test execution step in such
case.
I have added a new job template xplat-test-job.yml where I moved the
test-specific properties I originally put into xplat-job.yml and
Egor didn't like them there.
I have added a new step template "upload-artifact-step.yml" to zip up
and publish a given subtree under a given artifact name. Tried
to design its API so that it should be usable for zipping the entire
GitHub enlistment should we choose to do that. Changed
build-test-job.yml to call the step.
I have added a new step template "download-artifact-step.yml" to download
and unzip a given subtree from a given artifact. Tried to design
its API so that it should be usable for restoring the GitHub
enlistment in the various jobs within a particular pipeline.
Thanks
Tomas
Commit migrated from https://github.com/dotnet/coreclr/commit/
2c01bb82f77e88e58c777d2e1995bb32dd0d8777