Timings in the current situation (after some improvements were made)
taken from https://ci.docker.com/public/job/moby/job/master/53/flowGraphTable/ (master) and https://ci.docker.com/public/job/moby/7 (#39747) for Windows.
Duration in the "New" column is the total time to run the Job (which may include some setting up, printing docker info / docker version)
| Status |
Job |
Old |
New |
Notes |
| ✅ |
janky / x86_64 |
01:55 |
01:01 |
Run in parallel integration (00:53), and split unit/validation (21:00) |
| ✅ |
experimental |
01:35 |
- |
Removed; covered by x86_64 |
| ✅ |
PowerPC (PR) |
02:00 |
00:19 |
Only "integration" |
| 🚧 |
PowerPC (master) |
02:00 |
01:42 |
Parallel: integration: 00:19, integration-cli: 01:29 |
| ✅ |
z / s390x (PR) |
02:00 |
00:13 |
Only "integration" |
| 🚧 |
z / s390x (master) |
02:00 |
01:41 |
Parallel: integration: 00:13, integration-cli: 01:34 |
| 🚧 |
Windows RS1 |
01:15 |
01:44 |
unit + integration + integration-cli: 01:42 (slower than old Jenkins (on first run?), because we now pull the base image, instead of loading it from a tar) |
| ✅ |
Windows RS5 |
01:30 |
01:05 |
unit + integration + integration-cli: 01:04 |
Currently, our moby/moby PR checks take about 2 hours. I think we can cut that in half with a bit of parallelization. The Jenkinsfile PR #38565 and build nodes now hooked up, I think we can do this. Breaking out the unit test into a separate step in PR #39638 is an example of setting up a parallel step.
I've analyzed the current things we run in a PR check to see what else we can do:
The PR checks run in parallel:
- janky ~115 minutes
|
hack/validate/default |
|
hack/test/unit |
|
|
|
hack/make.sh \ |
|
binary-daemon \ |
|
dynbinary \ |
|
test-docker-py \ |
|
test-integration-flaky \ |
|
test-integration \ |
|
cross |
- experimental ~95 minutes
|
hack/make.sh \ |
|
binary-daemon \ |
|
test-integration |
- powerpc ~120 minutes
|
hack/test/unit |
|
hack/make.sh dynbinary test-integration |
- z ~115 minutes
|
hack/test/unit |
|
hack/make.sh dynbinary test-integration |
- windowsRS1 ~75 minutes
|
$Duration= $(Measure-Command { & docker run ` |
|
--rm ` |
|
-e c=$c ` |
|
--workdir "c`:\go\src\github.com\docker\docker\integration-cli" ` |
|
-v "$env:TEMP\binary`:c:\target" ` |
|
docker ` |
|
"`$env`:PATH`='c`:\target;'+`$env:PATH`; `$env:DOCKER_HOST`='tcp`://'+(ipconfig | select -last 1).Substring(39)+'`:2357'; c:\target\runIntegrationCLI.ps1" | Out-Host } ) |
- windowsRS5-process ~90 minutes
|
$Duration= $(Measure-Command { & docker run ` |
|
--rm ` |
|
-e c=$c ` |
|
--workdir "c`:\go\src\github.com\docker\docker\integration-cli" ` |
|
-v "$env:TEMP\binary`:c:\target" ` |
|
docker ` |
|
"`$env`:PATH`='c`:\target;'+`$env:PATH`; `$env:DOCKER_HOST`='tcp`://'+(ipconfig | select -last 1).Substring(39)+'`:2357'; c:\target\runIntegrationCLI.ps1" | Out-Host } ) |
The individual parts of the PR check have timings of approx:
- hack/validate/default ~1 minute
- hack/test/unit ~7 minutes
- hack/make.sh binary-daemon ~1 minute
- hack/make.sh dynbinary ~1 minute
- hack/make.sh test-docker-py ~7 minute
- hack/make.sh test-integration-flaky ~1 minute
- hack/make.sh test-integration ~95 minutes
- integration ~10 minutes
- integration-cli ~85 minutes
- hack/make.sh cross ~2 minutes
I think the big one to parallelize into its own step would be the legacy integration-cli tests that take ~85 minutes. If we can also break that down further by test suite, we could then get to sub-1-hr tests.
Timings in the current situation (after some improvements were made)
taken from https://ci.docker.com/public/job/moby/job/master/53/flowGraphTable/ (master) and https://ci.docker.com/public/job/moby/7 (#39747) for Windows.
Duration in the "New" column is the total time to run the Job (which may include some setting up, printing
docker info/docker version)Currently, our moby/moby PR checks take about 2 hours. I think we can cut that in half with a bit of parallelization. The Jenkinsfile PR #38565 and build nodes now hooked up, I think we can do this. Breaking out the
unittest into a separate step in PR #39638 is an example of setting up a parallel step.I've analyzed the current things we run in a PR check to see what else we can do:
The PR checks run in parallel:
moby/hack/ci/janky
Lines 5 to 14 in 4fb5e9e
moby/hack/ci/experimental
Lines 7 to 9 in 4fb5e9e
moby/hack/ci/powerpc
Lines 5 to 6 in 4fb5e9e
moby/hack/ci/z
Lines 5 to 6 in 4fb5e9e
moby/hack/ci/windows.ps1
Lines 810 to 816 in 4fb5e9e
moby/hack/ci/windows.ps1
Lines 810 to 816 in 4fb5e9e
The individual parts of the PR check have timings of approx:
I think the big one to parallelize into its own step would be the legacy
integration-clitests that take ~85 minutes. If we can also break that down further by test suite, we could then get to sub-1-hr tests.