Skip to content
This repository was archived by the owner on Mar 5, 2025. It is now read-only.

Commit 3a00f9f

Browse files
bobbygryzyngergrasmash
authored andcommitted
Add multisite support during deploy and local setup tasks (#736)
* Run Drupal and Drush setup per multisite * Make multisite.name into an array * apply drupal settings setup to all multisites * fix typos * Apply settings copy for each multisite
1 parent 219287a commit 3a00f9f

File tree

3 files changed

+34
-20
lines changed

3 files changed

+34
-20
lines changed

phing/build.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,9 @@ git:
7474

7575
multisite:
7676
# The docroot/sites/default directory is used by default.
77-
name: default
77+
name:
78+
- default
79+
# - another_site
7880

7981
reports:
8082
localDir: ${repo.root}/reports

phing/tasks/deploy.xml

+10-8
Original file line numberDiff line numberDiff line change
@@ -114,19 +114,21 @@
114114

115115
</target>
116116

117-
<target name="deploy:copy" description="Copy required files from /docroot/sites to /deploy/docroot/sites." hidden="true">
118-
<!-- Make sites/default writable so that we can copy files. -->
119-
<!-- @todo Support multisite. -->
120-
<chmod file="${docroot}/sites/default" mode="0777" />
117+
<target name="deploy:copy:site" description="Copy required files from /docroot/sites to /deploy/docroot/sites." hidden="true">
118+
<!-- Make sites/${multisite.name} writable so that we can copy files. -->
119+
<chmod file="${docroot}/sites/${multisite.name}" mode="0777" />
121120

122121
<exec dir="${repo.root}" command="rsync -a --no-g --delete --delete-excluded --exclude-from=${deploy.exclude_file} ${repo.root}/ ${deploy.dir}/ --filter 'protect /.git/'" logoutput="true" checkreturn="true" level="${blt.exec_level}" passthru="true"/>
123122

123+
<!-- Set sites/${multisite.name} back to 755 permissions. -->
124+
<chmod file="${docroot}/sites/${multisite.name}" mode="0755" />
125+
</target>
126+
127+
<target name="deploy:copy" description="Copy required files from each /docroot/sites to /deploy/docroot/sites." hidden="true">
124128
<!-- Use our own .gitignore -->
125129
<copy file="${deploy.gitignore_file}" tofile="${deploy.dir}/.gitignore" overwrite="true"/>
126-
127-
<!-- Set sites/default back to 755 permissions. -->
128-
<!-- @todo Support multisite. -->
129-
<chmod file="${docroot}/sites/default" mode="0755" />
130+
<!-- Perform settings copy for each multisite. -->
131+
<foreach list="${multisite.name}" param="multisite.name" target="deploy:copy:site"/>
130132
</target>
131133

132134
<target name="deploy:prepare-dir" description="Delete the existing deploy directory and re-initialize as an empty git repository." hidden="true">

phing/tasks/setup.xml

+21-11
Original file line numberDiff line numberDiff line change
@@ -60,31 +60,31 @@
6060
<target name="setup:settings" depends="setup:drupal:settings, setup:drush:settings" description="Creates settings files for Drupal and drush.">
6161
</target>
6262

63-
<target name="setup:drupal:settings" description="Create local settings files using default settings files.">
64-
<echo>Making ${docroot}/sites/default writable.</echo>
65-
<chmod mode="0755" file="${docroot}/sites/default" failonerror="false" verbose="true" />
63+
<target name="setup:drupal:settings:site" description="Create local settings files using default settings files for an individual site." hidden="true">
64+
<echo>Making ${docroot}/sites/${multisite.name} writable.</echo>
65+
<chmod mode="0755" file="${docroot}/sites/${multisite.name}" failonerror="false" verbose="true" />
6666

6767
<!-- Ensure that settings.php exists and that it requires BLT settings files. -->
6868
<if>
69-
<not><available file="${docroot}/sites/default/settings.php"/></not>
69+
<not><available file="${docroot}/sites/${multisite.name}/settings.php"/></not>
7070
<then>
7171
<if>
72-
<not><available file="${docroot}/sites/default/default.settings.php"/></not>
72+
<not><available file="${docroot}/sites/${multisite.name}/default.settings.php"/></not>
7373
<then>
7474
<echo level="verbose">Downloading scaffold files so that default.settings.php is available...</echo>
7575
<exec dir="${repo.root}" command="composer drupal-scaffold" logoutput="true" checkreturn="true" level="${blt.exec_level}" passthru="true" />
7676
</then>
7777
</if>
7878

7979
<echo>Generating settings.php from default.settings.php...</echo>
80-
<copy file="${docroot}/sites/default/default.settings.php" tofile="${docroot}/sites/default/settings.php" verbose="true"/>
80+
<copy file="${docroot}/sites/${multisite.name}/default.settings.php" tofile="${docroot}/sites/${multisite.name}/settings.php" verbose="true"/>
8181
</then>
8282
</if>
83-
<echo>Making ${docroot}/sites/default/settings.php writable...</echo>
84-
<chmod mode="0644" failonerror="false" file="${docroot}/sites/default/settings.php"/>
83+
<echo>Making ${docroot}/sites/${multisite.name}/settings.php writable...</echo>
84+
<chmod mode="0644" failonerror="false" file="${docroot}/sites/${multisite.name}/settings.php"/>
8585
<echo>Ensuring that blt.settings.php is required by settings.php...</echo>
86-
<exec dir="${docroot}/sites/default" command="grep vendor/acquia/blt/settings/blt.settings.php settings.php || echo 'require DRUPAL_ROOT . &quot;/../vendor/acquia/blt/settings/blt.settings.php&quot;;' >> settings.php" logoutput="true" checkreturn="true" level="${blt.exec_level}"/>
87-
<exec dir="${docroot}/sites/default" command="grep trusted_host.settings.php settings.php || echo '// require DRUPAL_ROOT . &quot;/sites/default/settings/trusted_host.settings.php&quot;;' >> settings.php" logoutput="true" checkreturn="true" level="${blt.exec_level}"/>
86+
<exec dir="${docroot}/sites/${multisite.name}" command="grep vendor/acquia/blt/settings/blt.settings.php settings.php || echo 'require DRUPAL_ROOT . &quot;/../vendor/acquia/blt/settings/blt.settings.php&quot;;' >> settings.php" logoutput="true" checkreturn="true" level="${blt.exec_level}"/>
87+
<exec dir="${docroot}/sites/${multisite.name}" command="grep trusted_host.settings.php settings.php || echo '// require DRUPAL_ROOT . &quot;/sites/${multisite.name}/settings/trusted_host.settings.php&quot;;' >> settings.php" logoutput="true" checkreturn="true" level="${blt.exec_level}"/>
8888

8989
<echo>Generating local settings files.</echo>
9090

@@ -111,8 +111,13 @@
111111
</then>
112112
</if>
113113
</target>
114+
115+
<!-- Run Drupal settings setup for each multisite. -->
116+
<target name="setup:drupal:settings">
117+
<foreach list="${multisite.name}" param="multisite.name" target="setup:drupal:settings:site"/>
118+
</target>
114119

115-
<target name="setup:drush:settings" description="Create local drush settings files.">
120+
<target name="setup:drush:settings:site" description="Create local drush settings files for an individual site." hidden="true">
116121
<if>
117122
<not><available file="${docroot}/sites/${multisite.name}/local.drushrc.php" type="file" /></not>
118123
<then>
@@ -140,6 +145,11 @@
140145
<!-- @todo Add multisite support. -->
141146
<phpVariable file="${repo.root}/drush/drushrc.php" variable="options[uri]" outputProperty="local_url" />
142147
</target>
148+
149+
<!-- Run Drush settings setup for each multisite. -->
150+
<target name="setup:drush:settings">
151+
<foreach list="${multisite.name}" param="multisite.name" target="setup:drush:settings:site"/>
152+
</target>
143153

144154
<target name="setup:drupal:install"
145155
description="Installs a specific Drupal site."

0 commit comments

Comments
 (0)