Split test build and run into two jobs (dotnet/coreclr#26191)
authorTomáš Rylek <trylek@microsoft.com>
Fri, 23 Aug 2019 22:55:01 +0000 (00:55 +0200)
committerGitHub <noreply@github.com>
Fri, 23 Aug 2019 22:55:01 +0000 (00:55 +0200)
commitf76eb2af24ac84a1e1984fdfaa461652b5ab1d00
tree9fe3ed80a93daa39c4feecf857fe6bb4cd6586a7
parent33e414fdccc531548ce9edf086992c10a2b45433
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
eng/build-test-job.yml [new file with mode: 0644]
eng/download-artifact-step.yml [new file with mode: 0644]
eng/pipelines/coreclr/ci.yml
eng/pipelines/coreclr/pr.yml
eng/run-test-job.yml [new file with mode: 0644]
eng/test-job.yml
eng/upload-artifact-step.yml [new file with mode: 0644]
eng/xplat-test-job.yml [new file with mode: 0644]