You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
there is at least 5 jobs on each PR, each of them doing a lot of steps in common (some of them are not really required to be repeated), and they all took at least 1h30 to 2h.
the integration tests are still quite flaky, and when they are, it's another 2h round of build, "just" to get green light !
the CI definition is not on the repository, and needs to be taken care for each job.
Only building the dev image (used for any make target) takes ~14min on the CI.
The idea of this issue is to track enhancement required for the moby ci to be better, and help us instead of scaring us each time we wanna do rebase or a small change. Here is a brain-dump list of work we should do to enable that.
Use multi-stage build to lower cache burn when we update a dependency
Explore having a bot/merge queue workflow.
Once the required LGTM are in place, a bot takes over to merge in a merge queue — rebuilds jobs against master, merge it if everything is good, or labels it and comments on it if something went wrong.
We could also have some build run only if asked from maintainers/curator, and have a lighter CI runs when PRs are in certain states (like design-review) …
See Bottylicious - automate all the things! #35490 for that.
Measure the CI
How much time each step takes (and their evolution in time)
What are the slowest test
What are the most flaky test (report each test failure to be able to track which tests need some love)
Create a dashboard for maintainers with all those information
The
moby/mobyCI is far from being optimized :one big Dockerfile that hits really bad when something changes in ithandled by multi-stage Updates the Dockerfile to use multi-stage #35100maketarget) takes ~14min on the CI.The idea of this issue is to track enhancement required for the moby ci to be better, and help us instead of scaring us each time we wanna do rebase or a small change. Here is a brain-dump list of work we should do to enable that.
integration-clitointegrationand make those tests as parallelizable as possible (see Replace integration-cli suite with API test suite #32866)--cache-fromto remove the need to build the base image for each and every CI run (on each jobs)Jenkinsfileto be able to make the builds evolve directly from the source code (in a secure manner)Jenkinsfileas isDocker Masterjobs to have "one" build job and X targeted test jobs (for different distribution/graphdriver/setup)experimentaltest suite instead of a whole build/runner dedicated for that. wip in Migrate test-integration-cli experimental macvlan test to integration #36697 Migrate test-integration-cli experimental build tests to integration #36746 Migrate test-integration-cli experimental ipvlan test to integration #36722Once the required LGTM are in place, a bot takes over to merge in a merge queue — rebuilds jobs against master, merge it if everything is good, or labels it and comments on it if something went wrong.
We could also have some build run only if asked from maintainers/curator, and have a lighter CI runs when PRs are in certain states (like
design-review) …See Bottylicious - automate all the things! #35490 for that.