opsone/wp-cli-deploy

使用ssh将本地WordPress数据库或上传目录部署到远程服务器。

安装次数: 60

依赖者: 0

建议者: 0

安全: 0

星标: 4

关注者: 5

分支: 25

类型:wp-cli-package

v1.3.3 2018-01-16 10:00 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:41:04 UTC


README

2017年1月

WP-Cli Deploy

当前版本: 1.2.0

部署本地WordPress数据库或上传目录。

该工具需要在您的wp-cli.yml文件中定义一组值。常量应以前缀为环境处理程序命名,您将使用该处理程序作为您所需子命令的第一个参数。以下是一个“dev”环境的示例配置

@dev:
  path: /path/to/the/wp/dir/on/the/server
  url: the-remote-website-url.com
  host: ssh_host
  ssh_user: ssh_user
  port: ssh_port
  writable_path: /path/to/a/writable/dir/on/the/server
  uploads_path: /path/to/the/remote/uploads/directory
  themes_path: /path/to/the/remote/themes/directory
  plugins_path: /path/to/the/remote/plugins/directory
  db_host: the_remote_db_host
  db_name: the_remote_db_name
  db_user: the_remote_db_user
  db_password: the_remote_db_password
  excludes:
    - ".env"
    - "file_to_exclude.php"
    - ...

=> wp deploy push dev ...

并非所有命令/子命令都需要定义所有常量。要测试子命令需要哪些常量,请使用不存在的环境处理程序执行它。例如:wp deploy dump dev

您可以定义尽可能多的常量组,以适应您希望拥有的部署环境数量。

示例

# Deploy the local db to the staging environment
wp deploy push staging --what=db

# Pull both the production database and uploads
wp deploy pull production --what=db && wp deploy pull production --what=uploads

# Pull both the production themes and plugins
wp deploy pull production --what=themes && wp deploy pull production --what=plugins

# Dump the local db with the siteurl replaced
wp deploy dump production

配置依赖

子命令根据不同的常量才能正常工作。以下是依赖列表

  • wp deploy push: 为了将内容推送到服务器,您需要定义SSH凭据和服务器上可写目录的路径。无论传递给push子命令的参数如何,都需要这些常量

    • %%ENV%%_SSH_USER
    • %%ENV%%_HOST
    • %%ENV%%_WRITABLE_PATH
  • wp deploy push %%env%% --what=db: 为了将数据库部署到您的服务器,您需要定义WordPress网站的URL、服务器上WordPress代码的路径以及服务器上数据库的凭据

    • %%ENV%%_URL
    • %%ENV%%_PATH
    • %%ENV%%_DB_HOST
    • %%ENV%%_DB_NAME
    • %%ENV%%_DB_USER
    • %%ENV%%_DB_PASSWORD
  • wp deploy push %%env%% --what=uploads: 为了推送上传目录,您需要定义服务器上上传目录的路径

    • %%ENV%%_UPLOADS_PATH

wp deploy pull: 为了将内容拉取到您的服务器,您需要定义SSH凭据常量。无论传递给pull子命令的参数如何,都需要这些常量: * %%ENV%%_USER * %%ENV%%_HOST

  • wp deploy pull %%env%% --what=db: 为了从您的服务器拉取数据库,您需要定义远程WordPress网站的URL、服务器上WordPress代码的路径以及服务器上数据库的凭据

    • %%ENV%%_WRITABLE_PATH
    • %%ENV%%_URL
    • %%ENV%%_PATH
    • %%ENV%%_DB_HOST
    • %%ENV%%_DB_NAME
    • %%ENV%%_DB_USER
    • %%ENV%%_DB_PASSWORD
  • wp deploy push %%env%% --what=uploads: 与push命令一样,为了拉取远程服务器上的上传,我们需要服务器上的路径。

    • %%ENV%%_UPLOADS_PATH
  • wp deploy push %%env%% --what=themes: 与push命令一样,为了拉取远程服务器上的主题,我们需要服务器上的路径。

    • %%ENV%%_THEMES_PATH
  • wp deploy push %%env%% --what=themes --themename=mytheme: 与push命令一样,为了拉取远程服务器上的特定主题,我们需要服务器上的路径。

    • %%ENV%%_THEMES_PATH
  • wp deploy push %%env%% --what=plugins: 与push命令一样,为了拉取远程服务器上的插件,我们需要服务器上的路径。

    • %%ENV%%_PLUGINS_PATH
  • wp deploy push %%env%% --what=core: 与push命令一样,为了拉取远程服务器上的核心,我们需要服务器上的路径。

    • %%ENV%%_PATH
  • wp dump %%env%%: 此子命令仅需要目标WordPress路径及其URL。

%%ENV%%_POST_HOOK

您可以可选地定义一个常量,其中包含在子命令执行结束时调用的bash代码。

您可以使用占位符来引用环境变量。一些可用的环境变量包括

  • env:环境句柄
  • command:子命令(目前为pushpulldump)。
  • what:对pushpull子命令的what参数值。
  • wd:部署命令的工作目录路径。这是数据库被拉取的目录,以及其他临时文件被创建的目录。
  • timestamp:使用“Y_m_d-H_i”格式化的日期。
  • tmp_path:部署工具使用的临时文件目录的路径。
  • bk_path:部署工具使用的备份目录的路径。
  • local_uploads:本地WordPress实例上传目录的路径。
  • ssh:以user@host格式表示的ssh服务器句柄。

示例

以下是一个DEV_POST_HOOK的示例,在执行pullpush操作后,使用HipChat REST API(https://github.com/hipchat/hipchat-cli)向HipChat房间发送消息。对于push操作,它还会清除缓存。

<?php
$hipchat_message = "http://%%url%%"
	. "\njeandoe has successfully %%command%%ed %%what%%";
$command = "if [[ '%%command%%' != 'dump' ]]; then "
		. "echo '$hipchat_message' | %%abspath%%/hipchat-cli/hipchat_room_message -t 1245678 -r 123456 -f 'WP-Cli Deploy';"
	. "fi;"
	. "if [[ '%%command%%' == 'push' ]]; then "
		. "curl -Ss http://example.com/clear_cache.php?token=12385328523;"
	. "fi;";
define( 'DEV_POST_HOOK', $command );

致谢