I had postponed upgrading to Yosemite because of all the horror stories about 24-hour delays while the installation program copied all homebrew files from /usr/local to hell and back, and things running slowly afterwards, and, well, what always happens when you upgrade.
But I am progressive by nature and there were several things I wanted to install that required Yosemite and that was going to be a thing too. My great surprise was first that perhaps because I have a solid state drive on my MacBook Air, there was a delay, but not that much. And secondly, everything was snappy as all getout after the upgrade. I felt like I had a new computer running!
MacVim has long been my standard Mac text editor, and gvim on Linux, although now Atom with the vim mode and markdown plugins is vying for that position (make sure it's always running to avoid delays in loading), along with LightPaper for Mac for markdown. Imagine my chagrin when I attempted to open a text file on Yosemite with MacVim, only to find that while the application launched, the window didn't. No go.
This article explains what I did to remedy the situation completely on my MacBook and bring MacVim back to the contender status it deserves.
This is the second in a series of articles involving the writing and launching of my DurableDrupal Lean ebook series website on platform.sh. Since it's a real world application, this article is for real world website and web application developers. If you are starting from scratch but enthusiastic and willing to learn, that means you too. I'm fortunate enough to have their sponsorship and full technical support, so everything in the article has been tested out on the platform. A link will be edited in here as soon as it goes live.
Diving right in I setup a Trello Kanban Board for Project Inception as follows:
Both Vision (Process, Product) and Candidate Architecture (Process, Product) jobs have been completed, and have been moved to the MVP 1 column. We know what we want to do, and we're doing it with Drupal 7, based on some initial configuration as a starting point (expressed both as an install profile and a drush configuration script). At this point there are three jobs in the To Do column, constituting the remaining preparation for the Team Product Kickoff. And two of them (setup for continuous integration and continuous delivery) are about to be made much easier by virtue of using platform.sh, not only as a home for the production instance, but as a central point of organization for the entire development and deployment process.
Beginning Continuous Integration Workflow
What we'll be doing in this article:
- Overcoming the confusion between Continuous Integration and Continuous Delivery
- Create Ansible playbook to create local development VM suitable for working with platform.sh
- Clone the playbook from GitHub into a workspace on local dev box and vagrant up
- ssh into the local dev box, log into platform.sh and manage ssh keys
- Get the project and sync the platform server and local databases
- Configure local dev virtual host and bring up website
- Exercise CI workflow by doing an upgrade and pushing via repo to platform
When he says the Drupal 8 Configuration Management system is only listening to one use case?
One reason no-one listens to Nedjo Rogers on this subject is that what he's saying is not that simple to understand. But I assure you it's well worth the effort. He's saying that the Drupal 8 Configuration Management system is built around a single use case that favors a certain enterprise need, namely that of single site configuration stabilization and propagation to other environments, principally live.
In his initial article on this subject (Bibliography #4, Nedjo Rogers) Nedjo wrote that the fact that “Sites own their configuration, not modules” (as stated in Bibliography #3, Alex Pott) constitutes nothing less than “a seismic shift in Drupal that's mostly slipped under the radar”. Nedjo first reviews the history of exportable configuration in Drupal, and correctly highlights the fact that there are two main use cases involved:
To share and distribute configuration among multiple sites.
To move configuration between multiple versions of a single site.
“By and large, the two use cases serve different types of users. Sharing configuration among multiple sites is of greatest benefit to smaller, lower resourced groups, who are happy to get the benefits of expertly developed configuration improvements, whether through individual modules or through Drupal distributions. Moving configuration between different instances of the same site fits the workflow of larger and enterprise users, where configuration changes are carefully planned, managed, and staged....”
“If anything, the multiple site use case was a driving force behind the development and management of configuration exports. The Features module and associated projects - Strongarm, Context, and so on - developed configuration exporting solutions specifically for supporting distributions, in which configuration would be shared and updated among tens or hundreds or thousands of sites.”
“For Drupal 8, however, the entire approach to configuration was rewritten with one use case primarily in mind: staging and deployment. The confiugration system "allows you to deploy a configuration from one environment to another, provided they are the same site."
If this is the case, then we really need to get to the bottom of this issue. The objective of this article is to briefly summarize the whole debate (see Bibliography), remove any items that are blurring or clouding the issue, and then underline three times those points that really deserve not being kept “off the radar” and which I hope others will delve into so that we can get a clear picture of perspectives and solutions (many of which Nedjo himself, and others, are spearheading already in third party modules; see below). It's an important question: what's in store for us in terms of industry-wide best practices for Configuration Management in Drupal 8, taking into account all important use cases? And it's a question that Nedjo took the trouble to raise in the Drupal Community as far back as January, 2012. But no-one listened.
I want to share some exciting things I'm only just finding out about Platform.sh (the “Develop, Deploy, Rinse, Repeat” continuous delivery cloud platform for Drupal, Symfony and PHP based projects) that look as if they might have a lot to do with folks finding a straightforward way of enabling a truly Lean process applied to website and web application projects. We'll cover five things I didn't know about Platform.sh: