sparkison/cmsmove

CMSMove - 自动化 CMS 部署。


README

为流行的内容管理系统提供自动化部署

目前支持的系统

我们已经在上述框架中广泛使用。如果您遇到任何问题,请告知我们,以便我们可以将其修复。

要求

  • Composer (如果选择使用 发布 标签中的预编译 phar 文件,则为可选)

安装说明

  1. 确保 ~/.composer/vendor/bin 可在您的终端 PATH 中使用。

    1. sudo nano ~/.bash_profile
    2. 确保您有一行类似于以下内容:export PATH="~/.composer/vendor/bin:$PATH"
  2. 使用以下命令全局要求 cmsmove

    composer global require sparkison/cmsmove

  3. 切换到项目目录,例如 ~/Sites/mysite.dev,然后运行 cmsmove config <框架>,其中 <框架> 是 cmsmove 配置的 CMS 之一*

*有关更多信息,请参阅下方的 使用

使用

入门

安装 phar 文件或使用全局 composer 安装后,请确保您可以从命令行运行 cmsmove

要使用 cmsmove,您必须首先添加一个配置文件和一个忽略文件。为此,请将 cd 进入您的项目根工作目录,并运行

  • cmsmove config <框架>,其中 <框架> 是支持的 CMS 系统之一
    • 目前支持的 <框架> 选项包括 craftlaravel53wordpressee2ee3

这将生成所需的 moveConfig.jsonrsync.ignore 文件。moveConfig.json 文件将包含推送和拉取所需的所有变量。rsync.ignore 文件将包含要忽略的文件/文件夹列表。根据需要添加项目。

配置 moveConfig.json

这是一个 JSON 文件,用于获取访问本地安装和数据库以及配置的远程主机所需的变量

示例配置文件

{
  "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"
    }
  }
}
配置说明

必需:以下字段是必需的

  • type 告诉 cmsmove 正在使用哪个框架。
  • mappings 包含有关本地设置的详细信息;此部分通常是特定于框架的
    • app 应用程序主文件夹
    • www 公共文件夹
    • 此列表中剩余的项目是特定于框架的
  • environments 各种环境(例如本地、预发布、生产)
    • local 这是访问本地数据库的唯一必需环境,所有其他环境都是可选的,可以命名任何您喜欢

应用不在根目录:如果应用和公共文件夹相同,只需将 mappings.www 设置为空字符串,并将 mappings.app 设置为公共文件夹。此外,将 environments.<your_environment>.root 设置为远程主机公共文件夹,并将 environments.<your_environment>.public 设置为空字符串。

添加自定义目录进行同步:在配置文件的 mappings.custom 数组中添加一个 key => array 映射,用于您的自定义目录。自定义目录必须包含两个键/值对:typedirectory

运行 cmsmove push staging custom 将显示您配置的自定义目录供您选择。例如:

...
    "custom": {
      "uploads": {
        "type": "public",
        "directory": "uploads"
      },
      "assets": {
        "type": "public",
        "directory": "dist"
      }
    }
...

使用上面的例子,运行 cmsmove push staging custom 将显示类似于以下提示

[0] uploads
[1] assets
>

在提示下输入 0 将从本地将 "uploads" 目录推送到远程配置的公共目录。而输入 1 将推送资产目录。此外,您可以使用以下语法指定特定的文件而不是目录

...
    "custom": {
      ...
      "env": {
        "type": "root",
        "file": "y",
        "directory": ".env"
      }
      ...
    }
...

请注意,file 参数只需要是一个 "真值" 变量。例如 "yes","y" 和 "true" 都是有效的。

更新

只需运行以下命令:composer global update sparkison/cmsmove 要查看当前安装的版本,请运行:cmsmove --version

贡献

拉取请求、贡献、问题和功能请求总是受欢迎……虽然我更倾向于为新功能提交拉取请求…… ;)