Skip to content
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

Make the CI great again! #1266

Closed
3 of 5 tasks
emilevauge opened this issue Mar 9, 2017 · 12 comments
Closed
3 of 5 tasks

Make the CI great again! #1266

emilevauge opened this issue Mar 9, 2017 · 12 comments
Assignees
Labels
area/infrastructure kind/enhancement a new or improved feature. priority/P1 need to be fixed in next release status/5-frozen-due-to-age

Comments

@emilevauge
Copy link
Member

emilevauge commented Mar 9, 2017

I can remember the good old times when all our tests were passing in less than 10 minutes on Travis.
Now it's more like that:

gopkg.in is flaking again. Retriggered the build.
...
Grrr, and now the integration tests are flaking. :(
Retrying HARDER...

ALL THE TIME!

This global issue is here to list all the work we need to do in order to make the CI great again.

@emilevauge emilevauge added kind/enhancement a new or improved feature. priority/P1 need to be fixed in next release labels Mar 9, 2017
@emilevauge emilevauge added this to the 1.3 milestone Mar 9, 2017
@dtomcej
Copy link
Contributor

dtomcej commented Mar 9, 2017

We should also work on:

  • Improving Parallelism of tests.
  • Reducing the setup time of a testing environment
  • Simplify the process for a contributer to add a parallel test such as integration

@vdemeester
Copy link
Contributor

Simplify the process for a contributer to add a parallel test such as integration

It's more like : simplify the process for a contributor to add tests, mainly unit-test (we should have way more unit test, and very good coverage in unit test, than integration tests)

@atbore-phx
Copy link

atbore-phx commented Apr 28, 2017

Today I have performed a CI platform switch to circle-ci v.2 (cci2), forking the main traefik repo and the library too.
I've also translated the .travis.yml in the new .circleci/config.yml here https://github.com/atbore-phx/traefik.
The job created use the "machine" executor, the new job seems slower than the travis one, see the picture and the link attached. (vm/hw used during the test ?)
https://circleci.com/gh/atbore-phx/traefik/12
cciv2_job

those features could help to reduce the execution:

  • cache for the docker images
  • test parallelization (we need to evaluate the impact on the actual test suite)
    but the slower part is the cross compilation.

Next days I'll test SemaphoreCI.

@vdemeester
Copy link
Contributor

The main problem is cross compilation. It is taking more than all other steps.. We should run it parallel/separate.

@timoreimann
Copy link
Contributor

One idea is to only test a single architecture per operating system on each PR (e.g., Linux, Windows, and Darwin each on amd64) and postpone the other architectures to a less frequently running job. the latter could be the master branch, a daily cron, or a pre-release step.

@atbore-phx
Copy link

atbore-phx commented May 2, 2017

today i've done some tests related to "make crossbinary".
i have deployed several droplets (ubuntu 14 x64 with build-essential) on digital ocean changing the CPU/RAM ratio and just a try with semaphoreCI.

here the results:

VM/task make crossbinary
VM (digital ocean) 2 CPU 2GB RAM 27m10.272s
VM (digital ocean) 4 CPU 8GB RAM 18m3.101s
VM (digital ocean) 8 CPU 16G RAM 16m40.817s
VM (digital ocean) 12 CPU 32GB RAM 16m59.277s
VM (digital ocean) 16 CPU 48 GB RAM 18m6.143s
semaphoreCI 9m19 (~6m with docker cache and #1535)
Travis 19m
CircleCI 35m44s

semaphoreCI seems to have good performances, here its build :
https://semaphoreci.com/atbore/traefik/branches/master/builds/2

@atbore-phx
Copy link

atbore-phx commented May 3, 2017

i have introduced some parallelism at make level (make -j2) reducing the execution time of make crossbinary of ~28% respect latest semaphore test.
the exec time is now ~7min always on semaphore.
https://semaphoreci.com/atbore/traefik/branches/crossbinary-parallel/builds/2

@atbore-phx
Copy link

tested docker cache on semaphore https://semaphoreci.com/docs/docker.html, but i got "no space left on device" during the snapshoot.
https://semaphoreci.com/atbore/traefik/branches/master/builds/7
i have opened a ticket to semaphore support.

@atbore-phx
Copy link

atbore-phx commented May 3, 2017

docker cache is now working, i think we reach the limit.
make -j3 + docker-cache ~6 min
https://semaphoreci.com/atbore/traefik/branches/triple-parallel-crossbinary/builds/3

@ldez ldez removed this from the 1.3 milestone May 9, 2017
@atbore-phx
Copy link

atbore-phx commented May 10, 2017

SemaphoreCI has been added as integration to our repo.

the cache has been disabled:

  • not a big gain for us: ~40/60 secs
  • some sporadic failures during the snapshoot.

@atbore-phx
Copy link

atbore-phx commented May 10, 2017

I have started to reduce the docker images size with this PR: #1580

@emilevauge
Copy link
Member Author

I think we can close this one now (tests are built in 15m instead of 50m) 🤗

@traefik traefik locked and limited conversation to collaborators Sep 1, 2019
@ldez ldez unassigned errm Sep 16, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area/infrastructure kind/enhancement a new or improved feature. priority/P1 need to be fixed in next release status/5-frozen-due-to-age
Projects
None yet
Development

No branches or pull requests