royopa/phploy

PHPloy - 支持子模块、多个服务器和回滚的增量 Git (S)FTP 部署工具。

v3.0.16-stable 2015-02-28 10:39 UTC

This package is auto-updated.

Last update: 2024-08-29 03:47:22 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

版本 3.0.16-stable

PHPloy 是一个增量 Git FTP 和 SFTP 部署工具。通过跟踪远程服务器(们)的状态,它只部署自上次部署以来提交的文件。PHPloy 支持子模块、子子模块、部署到多个服务器和回滚。

要求

  • PHP 5.3+ 命令行解释器 (CLI)

Windows 用户可以选择 下载 AnsiCon 以在命令提示符中显示颜色。通过在命令提示符或 "运行" 窗口中运行 ansicon -i 来安装它。

安装和使用

该包可在 Composer 上获得。

如果您使用 Composer 来管理依赖项,可以使用

composer require "royopa/phploy"

或者

与任何脚本一样,您可以从 bin 目录全局使用 PHPloy,或从项目目录本地使用

在本地使用 PHPloy(按项目)

  1. phploy.phar 放入您的项目中。
  2. 创建 deploy.ini 文件。
  3. 在终端中运行 php phploy.phar

在 Linux 中全局使用 PHPloy

  1. phploy.phar 放入 /usr/local/bin 并通过运行 sudo chmod +x phploy 使其可执行。
  2. 在您的项目文件夹内创建 deploy.ini 文件。
  3. 在终端中运行 phploy

在 Windows 中全局安装 PHPloy

  1. 将 PHPloy 文件提取或克隆到您选择的文件夹中
  2. 确保 phploy.bat 可以找到 php.exe 的路径,方法如下:
    • 将 php.exe 的路径添加到系统路径
    • 手动将路径添加到 phploy.bat 内
  3. 将 phploy 文件夹添加到系统路径
  4. 从命令提示符(从您的仓库文件夹)运行 phploy

将文件夹添加到您的 系统路径 意味着您可以从任何文件夹中执行应用程序,而无需指定其完整路径。要添加文件夹到您的系统路径:

  1. 按 WINDOWS + PAUSE 打开控制面板 > 系统屏幕
  2. 单击 "高级系统设置"
  3. 单击 "环境变量"
  4. 在 "系统变量" 下,应该有一个名为 "Path" 的变量。选择此变量并单击 "编辑"。
  5. 保留现有的路径,在末尾添加一个分号 ;,然后输入适当文件夹的位置。空格是可以的,不需要引号。
  6. 单击确定

deploy.ini

deploy.ini 文件包含您的凭据,并且它必须在项目的根目录中。使用您需要的任意数量的服务器和您偏好的任意配置类型。

; This is a sample deploy.ini file. You can specify as many
; servers as you need and use normal or quickmode configuration.
;
; NOTE: If a value in the .ini file contains any non-alphanumeric 
; characters it needs to be enclosed in double-quotes (").

[staging]
scheme = sftp
user = example
pass = password
host = staging-example.com
path = /path/to/installation
port = 22
passive = true
; Files that should be ignored and not uploaded to your server, 
; but still tracked in your repository
skip[] = 'src/*.scss'
skip[] = '*.ini'

[production]
quickmode = ftp://example:password@production-example.com:21/path/to/installation
passive = true
; Files that should be ignored and not uploaded to your server, 
; but still tracked in your repository
skip[] = 'libs/*'
skip[] = 'config/*'
skip[] = 'src/*.scss'

如果您的密码在 deploy.ini 文件中缺失,PHPloy 将交互式地要求您输入密码。

第一次执行时,PHPloy 将假设您的部署服务器是空的,并将上传您的项目中的所有文件。如果远程服务器已经包含文件的副本,您可以使用 --sync 命令(见下文)指定它所在的版本。

多个服务器

PHPloy 允许您在部署文件中配置多个服务器,并且可以轻松地将文件部署到任意一个服务器。

默认情况下,PHPloy 将部署到所有指定的服务器。如果您的服务器配置中存在名为 'default' 的条目,PHPloy 将默认使用该服务器配置。要指定单个服务器,请运行

phploy -s servername

或者

phploy --server servername

servername 是您在 deploy.ini 配置文件中为服务器指定的名称。

如果您已配置“默认”服务器,可以通过运行以下命令来指定部署到所有配置的服务器:

phploy --all

回滚

警告:目前--rollback选项不能正确更新您的子模块。在解决这个问题之前,我们建议您检出您想要部署的修订版,更新您的子模块,然后运行phploy。

PHPloy允许您在需要时回滚到早期版本。回滚操作非常简单。

要回滚到上一个提交,只需运行:

phploy --rollback

要回滚到您想要的任何提交,运行:

phploy --rollback="commit-hash-goes-here"

当您运行回滚时,您的工作副本中的文件将临时回滚到您正在部署的回滚版本。当部署完成后,一切将恢复原状。

注意,没有--rollback的简写版本。

列出已更改的文件

PHPloy允许您在实际上传/删除之前查看将要上传/删除的文件。只需运行:

phploy -l

或者

phploy --list

上传其他文件

要上传所有文件,即使是不由git跟踪的文件(例如,Composer的vendor目录),运行:

phploy -o

或者

phploy --others

请注意,除了在deploy.ini中排除的文件外,所有文件都将被上传。

更新或“同步”远程修订版

如果您想更新服务器上的.revision文件以匹配您的当前本地修订版,运行:

phploy --sync

如果您想将其设置为以前的提交修订版,只需指定修订版如下:

phploy --sync="your-revision-hash-here"

子模块

子模块受支持,但默认情况下是关闭的,因为您不期望它们经常更改,并且您只是偶尔更新它们。要运行带有子模块扫描的部署,请将--submodules参数添加到命令中。

phploy --submodules

清除

在许多情况下,我们需要在部署后清除目录的内容。这可以通过在deploy.ini中指定目录来实现,如下所示:

; relative to the deployment path
purge[] = "cache/"
; absolute path
purge[] = "/public_html/wp-content/themes/base/cache/"

工作原理

PHPloy在您的服务器上存储一个名为.revision的文件。该文件包含您已部署到服务器的提交的哈希值。当您运行phploy时,它将下载该文件,并比较其中包含的提交引用与您尝试部署的提交,以确定要上传的文件。

PHPloy还为您的存储库中的每个子模块存储一个.revision文件。

贡献

如果您对PHPloy有任何建议、问题或其他事项,请在此创建问题

鸣谢

将PHPloy带给您的人们有:

版本历史

v3.0.0-alpha (2014年8月9日)

  • 添加了SFTP支持
  • Composer包
  • 添加了Phar文件

v2.0.0-beta3 (2014年5月26日)

  • 彩色控制台输出现在是可选的,默认情况下在Windows上禁用,除非检测到Ansicon。(可以通过--no-colors命令行选项禁用颜色。)
  • ANSI颜色功能已移至单独的类,并且现在也在GitHub上是一个单独的项目

v2.0.0-beta2 (2014年4月11日)

  • 添加了更多ANSI颜色到输出
  • 添加了--debug选项,它提供了更详细的输出
  • 添加了--help选项,它显示readme.md文件
  • 输出现在清楚地指示是否在--list模式下运行
  • 上传过程现在显示队列中的文件数(例如,“52个中的1个”)
  • 内部:ANSI 颜色现在通过类似 HTML 的简单标签表达,如 ,等。
  • 内部:git 和控制台命令现在从中央函数运行,以减少代码重复和潜在的错误。
  • 虚构:现在 phploy 可以在长时间部署期间为你制作咖啡。

v2.0.0-beta(2014 年 4 月)

  • 通过
    • 移除不兼容的 UTF 字符来添加对 Windows 机器的支持。
    • 添加了 phploy.bat
  • 添加了一些额外的控制台输出,并对一些输出的字符串进行了格式化,以提高可读性。
  • 添加了命令行选项 --skip-subsubmodules