Allows your developers to integrate their code easily.
This is the base of what Continuous Integration is built around.
Build Automation
A single command should have the capability of building a system.
Should be buildable from a fresh checkout.
Allows rapid development with a fast repeatable automated process.
Automate Deployment
Build an environment on a trigger.
Automated process is faster than manual.
Less mistakes, always the same.
Usually provides an automated contingency plan if it fails.
Jenkins
Self-testing Build
When a build is created, tests should run to confirm that it behaves the way developers expect it to.
PHPUnit
Popular unit testing software.
Allows functional and other types of testing.
Can be used with other software like Selenium or curl to facilitate other testing.
Testing in a Clone of Production
Environmental changes can lead to failures.
If a copy cannot be provided, a scalable version reduces risk.
Use configuration management tools to configure all builds.
Chef
One thing that makes Vagrant configurable.
Allows version controlled configuration!
Use to build like environments and quickly discern differences
Frequent Commits
Makes debugging easier.
Better history.
Easier to merge, move, add, and remove changes.
Makes Code Consolidation easier.
Code Consolidation
Every user should commit to a baseline once a day.
Helps tests catch problems early.
Less problems merging code.
Developers should expect broken features. (process can manage this)
Fast Builds
Developers shouldn't be kept waiting.
Resources on automatic builds shouldn't be kept waiting.
Build Availability
It is more time effective to have environments prebuilt and "checked out" than building on the fly.
Builds available for Stakeholders is a must.
Everyone should be able to access/use the latest build.
Test Result Availability
Confidence in product.
Provides a "Warranty".
Developers can find problems earlier.
Okay, we admit,
we do have cool toys.
Chef
version controlled configuration
build like environments and dicern differences
Checkout our Drupal cookbook:
https://github.com/promet/drupal_cookbook
Vagrant
build a system in a single command
rapid development with a fast repeatable automated process
Behat
Behavior driven development
develop against user stories
Like so:
@api @javascript
Feature: View news.
In order learn more about the business,
As an anonymous user,
I need be able to view the latest news.
Background:
Given I am an anonymous user
And "article" nodes:
| title | field_article_subtitle | body |
| Article One | This is a subtitle. | This is a description. |
Scenario: Navigate to products from the front page and see all residential products.
Given I am on the homepage
When I click "Latest news"
Then I should see the heading "Latest News"
And I am at "/news"
And I should see the text "Article One"