Package Data | |
---|---|
Maintainer Username: | sparkison |
Maintainer Contact: | hello@brightmindedmedia.com (Shaun Parkison @ Bright Minded Media) |
Package Create Date: | 2016-11-10 |
Package Last Update: | 2022-06-21 |
Language: | PHP |
License: | GPL |
Last Refreshed: | 2024-11-19 03:00:50 |
Package Statistics | |
---|---|
Total Downloads: | 97 |
Monthly Downloads: | 2 |
Daily Downloads: | 0 |
Total Stars: | 3 |
Total Watchers: | 2 |
Total Forks: | 1 |
Total Open Issues: | 3 |
Automated deployment for popular content management systems
Currently supported systems:
laravel53
config command however.We've been using extensively for the frameworks mentioned above. If you run into any issues please let us know so that we can get them fixed.
Ensure that the ~/.composer/vendor/bin
is available in your terminal PATH.
sudo nano ~/.bash_profile
export PATH="~/.composer/vendor/bin:$PATH"
Require cmsmove
globally by using this command:
composer global require sparkison/cmsmove
Change to a project directory, such as ~/Sites/mysite.dev
, and run cmsmove config <framework>
where <framework>
is one of the configured CMS for cmsmove*
*See Usage below for more information
After installing either the phar
file or using the global composer
install, ensure you can issue the cmsmove
from the command line.
To use cmsmove you must first add a config file and an ignore file. To bootstrap these items, cd
into your projects root working directory and issue:
cmsmove config <framework>
where <framework>
is one of the supported CMS systems
<framework>
are craft
, laravel53
, wordpress
, ee2
and ee3
This will generate the required moveConfig.json
and rsync.ignore
files. The moveConfig.json
file will contain all the needed variables for pushing and pulling. The rsync.ignore
file will contain a list of files/folders to ignore. Add items to this list as needed.
This is a JSON
file use to get the needed variables for accessing the local installation and database as well the configured remote hosts
Example config file:
{
"type": "craft",
"mappings": {
"app": "craft",
"www": "public",
"config": "config",
"plugins": "plugins",
"templates": "templates",
"custom": {
"uploads": {
"type": "public",
"directory": "uploads"
},
"assets": {
"type": "public",
"directory": "dist"
}
}
},
"environments": {
"local": {
"root": "/Users/MY_USER_NAME/Sites/mysite.dev",
"db": "local_db_dev",
"dbHost": "localhost",
"dbUser": "root",
"dbPass": "root",
"dbPort": "3306"
},
"staging": {
"host": "REMOTE HOST OR IP",
"root" : "/home/user",
"public": "public_html",
"user": "SSH USER NAME",
"password": "SSH PASSWORD",
"keyfile": "SSH KEY FILE (takes precedence over the password field)",
"port": "22",
"db": "REMOTE DATABASE NAME",
"dbHost": "localhost",
"dbUser": "REMOTE DATABASE USER",
"dbPass": "REMOTE DATABASE PASSWORD",
"dbPort": "3306"
},
"production": {
"host": "",
"root" : "/home/mysite",
"public": "public_html",
"user": "",
"password": "",
"keyfile": "",
"port": "22",
"db": "",
"dbHost": "localhost",
"dbUser": "",
"dbPass": "",
"dbPort": "3306"
}
}
}
Required: The following fields are required:
type
tells cmsmove what framework is being used.mappings
contains information for the local setup; this section is typically framework specific
app
the application main folderwww
the public folderenvironments
the various environments (e.g. local, staging, production)
local
this is the only required environment for accessing the local database, all other environments are optional, and can be named whatever you likeApp not above root: If the app and public folder are one in the same simply set mappings.www
as an empty string, and set mappings.app
as the public folder.
Additionally, set the environments.<your_environment>.root
to your remote host public folder and leave environments.<your_environment>.public
as an empty string.
Adding custom directories for syncing:
Within the mappings.custom
array of the config file add a key => array
mapping for your custom directory.
The custom directory must contain two key/value pairs: type
and directory
.
Issuing cmsmove push staging custom
will present you with a prompt of your configured custom directories to choose from
E.g.
...
"custom": {
"uploads": {
"type": "public",
"directory": "uploads"
},
"assets": {
"type": "public",
"directory": "dist"
}
}
...
Using the example above, issuing cmsmove push staging custom
will give a prompt similar to the following:
[0] uploads
[1] assets
>
Entering 0 at the prompt would push the "uploads" directory from the local to the remote configured public directory. While entering 1 would push the assets directory. Additionally, you can specify a specific file as apposed to a directory using the following syntax:
...
"custom": {
...
"env": {
"type": "root",
"file": "y",
"directory": ".env"
}
...
}
...
Note that the file
parameter just needs to be a "truthy" variable. For example "yes", "y" and "true" are all valid.
Simply issue the following command: composer global update sparkison/cmsmove
To view the currently installed version issue: cmsmove --version
Pull requests, contributions, issues and feature requests are always welcome... Although I would prefer a pull request for new features... ;)