Comments (2)
The use-case for having a usable pr multidev might be better served by simply using a ci-BUILD_NUMBER multidev to run all tests, and make a pr-PULL_REQUEST_ID multidev only for agency use -- never for test running.
I've often said that we're using these environments as both MultiDev and MultiTest. (Dev being an environment for working on a branch/PR over time and Test being an environment for reviewing tag/commit)
This question highlights how those overlapping usages don't always play well together. Making both pr-N
and ci-N
could help resolve that tension.
But it also has a high likelihood of increasing confusion for Pantheon customers overwhelmed by the number of moving pieces in this set up. I'd rather not cross that bridge right now if we don't have to. Such a decision feels to me like one that is best answered by a focus group of developers using these repos on real projects.
Though we do already have a precedent for a commit building to two environments. Commits on master build to ci-N
and master
on Pantheon.
For this specific issue, I'd like us to find a mechanism that can be configured per site. Yes, the starting point of the WordPress and Drupal repos should be the same. But if an individual team wants to restore after testing or not, it should be easy to switch.
One way we could do that would be by putting the mechanism for restoring/recloning into the running of ./vendor/bin/behat
itself, perhaps with an exec()
from an @afterSuite
method in a `FeatureContext.php.
IMO a 30 or 70 line bash file wrapping ./vendor/bin/behat
is a problem to be solved. When I do Jump Starts and walk people through running Behat tests for the first time it is a pain to explain which lines need to be copy/pasted out of those files so that ./vendor/bin/behat
can be run from a local machine.
But maybe I'm being short sited by only thinking about this question of multidev mutability from the perspective of Behat.
I think there is a good chance that real projects will add more testing jobs that have the potential to change data (performance tests, load tests, visual regression tests). For instance, I can imagine that a project would want a Circle job to add 1000 pieces of content and make assertions about data coming from New Relic. The team would probably want those 1000 dummy posts gone before sending the multidev url to the client.
That team might ask us "So, when all of the build steps are done and every Circle job has run, will the Multidev be exactly how Dev would be if we click merge on the pull request?" I think the answer to the question probably should be "yes".
So all that to say, for teams that want it, a restore/reclone should run at the end of build_deploy_and_test
or in a separate job following (not in the Behat bash wrapper). My hesitation at this point is that I'm concerned about the overall complexity of the build process and doing the same thing (setting up one multidev) twice in one run feels like a net increase in complexity.
from example-drops-8-composer.
doing the same thing (setting up one multidev) twice in one run feels like a net increase in complexity.
Yeah, it's hard to cover all of these use-cases without some increase in complexity. Backup/restore has more hidden complexity (works fine until you don't notice the tests erased a db change).
Another thing we might consider is the previous idea of running the ci-*
tests on Circle instead of Pantheon. The on-circle tests wouldn't have the same fidelity as the on-Pantheon tests, but they'd run faster. If a subset of the tests ran in parallel on Circle (for pr-*
builds as well), you'd get an early warning for some failures.
Of course, this does not satisfy the needs of anyone who wants to run a destructive test that only runs on Pantheon. If we used a Lando docker image on Circle, that might help some.
from example-drops-8-composer.
Related Issues (20)
- Use build:comment:add:pr instead of build:comment:add:comment
- Update drupalextension to version 4 HOT 4
- Consider Removing Local Drush from Upstream HOT 2
- Update settings.php to latest Drupal 8.8.0 recommendations. HOT 9
- Update to using PHP Unit 6.5 HOT 1
- Error: Your requirements could not be resolved to an installable set of packages. HOT 2
- Drush updatedb command unable to run HOT 1
- config_installer is obsolete; use core feature instead HOT 1
- Installing drupal 8 distribution on pantheon
- pantheon_advanced_page_cache
- Drops 8 Scaffolding Failing HOT 1
- Can not call drupal-scaffold script
- Please use a more contemporary php version on composer.json HOT 2
- Use Drupal\MinkExtension instead of Behat default HOT 1
- Documentation: Note that drush_version must be specified in pantheon.yml if not using Drush 8 HOT 11
- CircleCI error [RuntimeException] The .git directory is missing HOT 2
- Static tests fail when using drupal/core:^9 HOT 2
- Github Actions not deploying new builds HOT 8
- Could not scan for classes inside "web/core/lib/Drupal/Core/Http/InputBag.php" which does not appear to be a file nor a folder HOT 2
- Pushing back VR test results - link no longer works HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from example-drops-8-composer.