Evgeniy Maslovskiy (@Spleshka)
Planned development 5 years ahead
Resulting architecture should have had ~15 microservices
Experienced massive development overhead
After 1 year of development we threw the old architecture away and rewrote the application
The most obvious & most flexible local dev choice
Problems: devs need to learn Docker
Problems: real life is different from Hello World samples
Problems: too long commands / arguments
Old School Linux tool
Ships out of the box in Linux* & Mac
One file to rule them all
One command project installation [make install]
One command code checks & fixes [make code:check]
Open source projects
Removes entrance complexity
https://github.com/systemseed/drupal_reactjs_boilerplate
https://github.com/systemseed/falcon
Set up at the beginning of the project
Aim for simple make code:check and make code:fix
Make code check in Git pre-commit hook
Make code check first step in CI
Unit / Functional? Yes, if connected to Drupal API & Database
End to end? Yes, but only for business critical parts
Runs the same commands as developers locally
Guarantees working commands at all times
Makes CI process transparent for the developers
Eventually has very positive efficiency boost
Runs the same set of tests as locally
Unit / Functional tests are invoked within CI container
End to end tests must be checked against real hosting env
First, [make code:check]
Then, [make install]
After that [make tests:run functional]
Fail fast (3-5 mins)
If all good, deploy to the clone of Production environment
Finally, [make tests:run acceptance]
Every feature is branched from stage branch
When feature is accepted, Pull Request gets merged into stage
Stage acts as hands-off dev environment
At the end of stage CI job, it opens PR to master & merge it
Master CI job makes backup & deploys code to Production