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

droplet created an issue. See original summary.

droplet’s picture

Issue summary: View changes
droplet’s picture

Issue summary: View changes
Mixologic’s picture

Not 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.

Setting up locally:

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.

Reduce testbot fails noise

: 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

Let the public services

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).

Make it easy to run single test rather than full test suite.

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.

droplet’s picture

Issue summary: View changes

Not sure what it is that you're suggesting here, but I *think* you might be saying "lets use TravisCI or CircleCI instead of DrupalCI".

Not 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.

Do you mean when somebody submits a bad patch and it notifies everybody on the issue?

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.

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.

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.

dawehner’s picture

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.

This 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:

  • Download Drupal core
  • Work on stuff
  • composer run localtest (filename-to-test.php)
  • This internally asks you to install vagrant, downloads drupalci_testbot and sets up everything needed

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.

jibran’s picture

Maintain popular CI presets to improve developer experience

First 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.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.6 was released on August 1, 2018 and is the final bugfix release for the Drupal 8.5.x series. Drupal 8.5.x will not receive any further development aside from security fixes. Sites should prepare to update to 8.6.0 on September 5, 2018. (Drupal 8.6.0-rc1 is available for testing.)

Bug reports should be targeted against the 8.6.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.6.x-dev » 8.8.x-dev

Drupal 8.6.x will not receive any further development aside from security fixes. Bug reports should be targeted against the 8.8.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.9.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.7 was released on June 3, 2020 and is the final full bugfix release for the Drupal 8.8.x series. Drupal 8.8.x will not receive any further development aside from security fixes. Sites should prepare to update to Drupal 8.9.0 or Drupal 9.0.0 for ongoing support.

Bug reports should be targeted against the 8.9.x-dev branch from now on, and new development or disruptive changes should be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.2.x-dev

Drupal 8 is end-of-life as of November 17, 2021. There will not be further changes made to Drupal 8. Bugfixes are now made to the 9.3.x and higher branches only. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.15 was released on June 1st, 2022 and is the final full bugfix release for the Drupal 9.3.x series. Drupal 9.3.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.4.x-dev branch from now on, and new development or disruptive changes should be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.9 was released on December 7, 2022 and is the final full bugfix release for the Drupal 9.4.x series. Drupal 9.4.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.5.x-dev branch from now on, and new development or disruptive changes should be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

andypost’s picture

Version: 9.5.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 11.x-dev » main

Drupal core is now using the main branch as the primary development branch. New developments and disruptive changes should now be targeted to the main branch.

Read more in the announcement.