| 1 |
NOTE: This module is currently in an alpha state, and many aspects of it remain
|
| 2 |
in the proof-of-concept realm. Please do not use it for any production purposes
|
| 3 |
until such a time as a 1.0 is released.
|
| 4 |
|
| 5 |
The deployment framework is a series of modules which are designed to allow
|
| 6 |
developers to easily stage Drupal data from one site to another. It is designed
|
| 7 |
to have three parts that work together:
|
| 8 |
|
| 9 |
* Deployment API - This implements the concept of a deployment plan. You create
|
| 10 |
a deployment plan and add objects to it which will be deployed (content types,
|
| 11 |
views, etc.) When the time comes these items are pushed to a server you specify
|
| 12 |
via XMLRPC with an API key. The data stored about each item is extremely minimal,
|
| 13 |
relying largely on the implementers to implement object-specific knowledge.
|
| 14 |
Currently this is deploy.module
|
| 15 |
|
| 16 |
* Deployment Implementers - Individual modules implement the deployment API to
|
| 17 |
add the data they need to a deployment plan, and expose that ability to the front
|
| 18 |
end. Currently I have content_copy_deploy.module and system_settings_deploy.module.
|
| 19 |
|
| 20 |
* Deployment Services - Services modules which contain the knowledge to receive
|
| 21 |
deployed data and do what is appropriate on the destination server. Currently I
|
| 22 |
have content_copy_service.module and system_settings_service.module.
|
| 23 |
|
| 24 |
Installation instructions can be found in INSTALL.txt
|
| 25 |
|
| 26 |
USAGE
|
| 27 |
-----
|
| 28 |
In order for deployments to work, your source server must be able to reach your
|
| 29 |
destination server on port 80.
|
| 30 |
|
| 31 |
1) Surf to admin/deploy and click "Add a new deployment plan". All a deployment
|
| 32 |
plan needs is a name by which you can identify it. Enter that name and submit
|
| 33 |
the form. You should be returned to the deployment plan listing with your plan listed.
|
| 34 |
|
| 35 |
2) Surf to admin/deploy/servers and click "Add a new server". You will need to
|
| 36 |
enter a name for the server, a path to the destination servers XMLRPC Server
|
| 37 |
implementation (usually http://<yoursite>/services/xmlrpc) and the destination
|
| 38 |
server's API Key as created in the installation instructions. Submit the form.
|
| 39 |
|
| 40 |
3a) If you have enabled Content Copy Deployment - Surf to /admin/content/types.
|
| 41 |
Click the "Deploy" tab. Choose a deployment plan and content type you want to
|
| 42 |
export (this should be a content type that does not exist on the destination
|
| 43 |
server). Submit the form.
|
| 44 |
|
| 45 |
3b) If you have enabled System Settings Deployment - Surf to a page that
|
| 46 |
implements system_settings_form (example: admin/settings/date-time). At the bottom
|
| 47 |
of the form you can choose a deployment plan. Choose one and submit the form.
|
| 48 |
|
| 49 |
4) Return to admin/deploy and click the name of your deployment plan. You should
|
| 50 |
see the items above listed.
|
| 51 |
|
| 52 |
5) Now you can click "Push this plan live"
|
| 53 |
|
| 54 |
6) In theory you should now be able to go to your destination server and your
|
| 55 |
settings/content types should appear there.
|
| 56 |
|
| 57 |
CAVEATS
|
| 58 |
-------
|
| 59 |
- Content types are currently hardcode only to create on the destination server,
|
| 60 |
not update. Therefore is a content type of the same name exists on the destination
|
| 61 |
server, the push of this type will fail.
|
| 62 |
|
| 63 |
- The appropriate modules must be enabled (for instance, a content type push will
|
| 64 |
fail if Content Copy is not enabled on the destination server)
|
| 65 |
|
| 66 |
- If the Drupal/module versions differ between the source and destination servers,
|
| 67 |
system settings may not transfer properly.
|
| 68 |
|
| 69 |
- Content Copy has some bugs which prevent some content types from being imported
|
| 70 |
properly. These content types will also fail when being deployed. If you can Export
|
| 71 |
and then Import a content type, then it will work here too.
|