-
Notifications
You must be signed in to change notification settings - Fork 1
DevOps Tool
A unique and robust devops and developer toolset is needed for the ImageX InstallKit. This tool must allow for the following listed items below as well as be built using Drush to enable deep integration with already existing Drupal development tools.
- Project Initialization and Setup
- Development (on-going)
- QA & Testing
- Deployment
- On-going deployment and above.
This tool will work in conjunction with a single Git repository.
- /working-dir
-- /.ops: Stores local "cache" information of the build
-- /backups: Contains complete backup instances
-- *settings.php: A PHP settings file for handling common configuration for this instance.
-- /releases: This is where live "releases" live
-- /release-[date-time]
-- /source: Contains a copy of the working codebase
-- /shared: Contains a copy of the shared assets (files, etc.)
-- /database: Contains a database dump able to be used for restore
-- /dev: This is where active development goes.
-- /public: This is the directory in which is web accessible
-- Symlinks to "important" things such as the codebase; ignores commonly shared things like sites/*/files and sites/*/settings.php
Initializes a new installkit instance for active development.
Builds a particular instance's codebase and performs an installation for the specified instance's [name]. If [name] is not specified, then this command must be executed within an already existing working directory structure.
Performs a complete environment update (e.g. fetching latest codebase, executing any required make commands, performing a drush updb, cache clearing (if required) and so on).
Creates a new release locally that is available to be deployed to environment instances.
Performs a complete backup.
Destroys a complete working instance locally and potentially remote instances if --remote flag is specified.
Deploys a specified release to production or another environment if specified by the --environment flag. During deployment, the remote environment's deployed instance will go into maintenance mode during this time and be taken out of maintenance once deployment is completed.
Performs a synchronization of shared and common assets (database, files, etc.) from production to local environment.
Perform a complete test (e.g. execute unit tests, behat tests, etc.) on the current and local working dev environment.
<?php
This tool must allow for project specific hooks to be executed. Such hooks may include: pre-deployment (execute on local or remote), post-deployment, pre-build, post-build, pre-update, post-update, and so on. This will allow each project to be able to execute specific code or commands to ensure the operation has executed fully. Manually having to execute such things has a high probability of incorrect order or just simply forgetting to perform a specific set of operations.
Host environment considerations are needed to be taken for commonly used Drupal only hosting service provides such as Pantheon and Acquia. Unique workflows and releases need to be handled appropriately. For example, Pantheon does not allow for subdirectories containing local Git repositories (.git directories) as the top level parent is also a Git repository which indicates that the subdirectory is a submodule.