Developing with Drupal
Here, we’ll see how to make code changes to an environment.
You should never be working on your default branch since it’s supposed to be your production environment.
Make sure you’re on a working environment. In this example we’re on the sprint1 branch:
$ git checkout sprint1
Now that you’re set up on your working branch, you can start developing on your website by making code changes and pushing those changes to Platform to test them live.
There are three common ways you will be making code changes to Platform:
- Add contributed modules, themes, distributions, third-party libraries in the make file
- Create custom code (modules, themes, profiles, libraries) and commit them to your Platform codebase
- Modify the services grid configuration
Each time you push a commit, Platform.sh rebuilds your environment and run the Drush make command if a proper make file has been found.
Each Drupal module you want to install on your project should be included in the make file.
For example, if you want to add Drupal Commerce, you need to add the following lines to your
; Modules projects[addressfield][version] = "1.0-beta4" projects[addressfield][subdir] = "contrib" projects[ctools][version] = "1.3" projects[ctools][subdir] = "contrib" projects[commerce][version] = "1.8" projects[commerce][subdir] = "contrib" projects[entity][version] = "1.2" projects[entity][subdir] = "contrib" projects[rules][version] = "2.6" projects[rules][subdir] = "contrib" projects[views][version] = "3.7" projects[views][subdir] = "contrib"
You’d do the same if you want to add a theme.
Add the following lines to your
; Zen Theme projects = zen
You’d do the same if you want to add a third-party library.
In this example, you add the HTML5 Boilerplate library.
Add the following lines to your
; Libraries libraries[html5bp][download][type] = "file" libraries[html5bp][download][url] = "http://github.com/h5bp/html5-boilerplate/zipball/v3.0.2stripped"
To commit your custom modules, themes, or libraries,
you need to commit them under a
libraries folder at the root of your Git repository.
$ ls libraries/ modules/ project.make themes/
When you push your code, Platform will build your environment and move your modules, themes, and libraries
to the correct location on your site (usually
You can change and define the topology of the services used in an environment, by modifying the configuration files.
This means that you’re able to define and configure the services you want to use.
When you’re done, commit your changes to test them on your online environment.
$ git add . $ git commit -m "Made changes to my make file." $ git push
You will see that Platform has found a make file and is starting to rebuild your environment.
When it’s completed, you can see your changes on your site by clicking
View this website
under the name of Sprint1 environment on the Platform.sh management console.
The Drush Make processing doesn’t create any file in your Git repository.
Your Git repository is the input of the process and not the output.
You can see the directory structure that has been created by connecting to the environment via SSH.
See the information in the
Access information below the title of the environment.
Once you’ve got a branch with some changes,
you’ll want to be able to push those changes up to your live environment.
Platform.sh has a great button called
Merge that you can click
and it will push the appropriate changes to your production environment.
A dialog box appears that provides commands to execute future merges from the command line using the Platform.sh CLI.
Just click on the “Merge” button again and all of the commits you made on your branch are merged into the production environment.
The easiest way to do that is to use Drush and the sql-sync command.
You’ll need to have Drush aliases for both your
Platform.sh site and your local site. If you are using the CLI and
platform get [platform_id] for a project, then your Drush
aliases have already been set up.
With the Drush aliases (depending on how yours are set up), you could use a command similar to this:
$ drush sql-sync @platform.main @platform._local
An alternate method that’s appropriate for larger databases is to use a pipe (
|) to stream the data instead of making copies.
$ drush @platform.main sql-dump | drush @platform._local sqlc