Problem/Motivation
Let developers to run test suite in cloud CI services easier with their high performance CI services or public free resources.
Pros:
- No more `Lack of set-up CI env in local`
It's quite often I heard developer told they can't set up the CI in local properly. And the CORE's test bot instruction is targeting to Linux user mainly.
- Reduce testbot fails noise.
Sometimes, I received 10 or more testbot fails messages from a single thread. Oftenly, it's useless to most developers in the thread.
- Let the public services to test our NODEJS script (ES6), webdriver..etc
To ensure our scripts able to run on the different platforms. For example, we should test our ES6 build script in NODE 8 ~ 9 branches. And ensure it works well under cross-platform (Windows / MacOS / Linux)
** [Higher Priority] Make the CI easy to run single test rather than full test suite.
Comments
Comment #2
droplet commentedComment #3
droplet commentedComment #4
MixologicNot sure what it is that you're suggesting here, but I *think* you might be saying "lets use TravisCI or CircleCI instead of DrupalCI".
So, some background. A long while back, when DrupalCI was being designed, Drupal's test suite was so big that *none* of the free services were capable of running the entire thing before hitting their timeout walls. The sheer magnitude of the breadth, scope, and depth of the amount of testing that we run ended up being too big for any of those services. And our test suite has only grown bigger. Maybe the services are more performant, but my experience so far is that the larger contrib modules have started moving *back* to drupalci from Travis, because it was considerably faster. That leads me to think that running our test suite on any of the cloud services would likely never be able to qualify for their 'free' layer, and would likely be extremely expensive if we had to use any of their paid services.
its not linux specific, it uses virtualbox: https://www.drupal.org/drupalorg/docs/drupal-ci/running-drupalci-locally, but yes, testing happens on linux environments. There hasn't been any demand from anybody to be able to run the test suite on windows or OSX.
: Not sure what you are referring to here. Do you mean when somebody submits a bad patch and it notifies everybody on the issue? Or something else? This doesnt seem to have anything to do with using a cloud service, and is really just a notification preference feature request. If we're using the drupal.org issues then it wouldnt matter if drupalci is the service or if some other cloud is the service. A fail would notify everybody
Again, we dont run just a couple of tests. We'll run out of goodwill really, really quickly with the volume of tests we need to run. AFAIK from the JS maintainers, we dont really *need* to test anything against the extra Node branches, because we aren't running node as part of drupal. If you're suggesting that we add some build tests to validate that its easy for developers to get up and running regardless of what local platform they're trying to develop on, well, thats an entirely new feature, and an entirely new type of testing (build tests, vs product functionality tests).
You can do this now, but its poorly documented. You patch run-tests.sh to set which tests it runs. In the future, there will be a drupalci.yml build file that we can use to specify the same things you can specify on the command line for run-tests or phpunit etc.
Pretty much, my suggestion is that this is Close (wont fix). And that some of these things get separated out into other issues and we could talk about them individually. "Use a bunch of cloud services" adds a whole host of other problems that we probably do not want.
Comment #5
droplet commentedNot replacing DrupalCI, Not changing the d.org. We don't need the d.org standard for every contributor.
FAST!! that's all contributors needed! Everyone can clone a repo and enable CI without extra config:
https://github.com/yarnpkg/yarn/blob/master/appveyor.yml
Coincidentally, they posted the same thing:
https://www.lullabot.com/articles/continuous-integration-drupal-8-circleci
** The reason I posted in CORE issue rather than my own repo/blog is we need everyone's helps and maintain up-to-date presets. And spread this message to everyone.
Docker things are too much work for a beginner. And I doubt the doc maintenance status. I have ever following a d.org doc and hit the wall harder:
https://github.com/ricardoamaro/drupalci_testbot/issues/28
There's also a lot of Docker / Vagrant installation error have to face. e.g. setup networking/share folder ..etc
Also, the CORE README is Linux only. Sometimes, Our top developers also run into problems :
https://www.drupal.org/project/drupal/issues/2775653#comment-12386171
** I think many CI services supporting docker. Why not maintain a simple config instead.
Yes. I believe if we have a simple test setup progress, it will increase the pre-testing in local before uploading a patch. It's hard to push everyone to install a docker, but that's very easy to push a commit to github / CI. WIN-WIN.
It's not totally true. On each NODE build script changes, we have many of hidden work behind the scene. (At least I did it)
Even the PHP side, the test script is not working smoothly in Windows for a very long time. (e.g. https://www.drupal.org/project/drupal/issues/2748883 and related issues linked inside). For a long time, we rely on the HUMAN than automated.
Finally,
There're many rooms can be improved into DrupalCI. As simple as let contributor to pick a test to run first manually, then it helps. (Most developers able to predict what to test and what may fail.) I know there's an issue in DrupalCI project issue thread for this part (find a way to run it automatically). But for a long time, no such function in d.org. It must have a good reason cannot / not to do that. DrupalCI team has a different vision & problem to solve.
Comment #6
dawehnerThis is a brilliant idea!
I totally agree we should make it as easy as possible to run the tests properly locally. In my world the local testrunner would be good enough, if the setup would be as easy as possible as in:
On top of that I also agree it would be nice to enable running tests on travis/circleci ... but well its tricky because you cannot run the full testsuite on those.
Comment #7
jibranFirst of all, this is an excellent idea. You have no idea how much time I have wasted on this.
But I don't think it should be maintained in core. Someone can create a repo and we can all keep on improving it.
Comment #15
andypost