florianmoser/bedrock-deployer

Roots Bedrock 的 Deployer 脚本

1.24.0 2024-06-28 08:04 UTC

This package is auto-updated.

Last update: 2024-09-28 08:42:04 UTC


README

Deployer 的脚本,用于 Roots Bedrock,也支持 Roots SageRoots Trellis 的设置。

Trellis 提供了强大的 Ansible 部署。但如果你只想运行自定义过程时部署 Bedrock,Deployer 是一个快速简单的替代方案。

也许你甚至正在尝试将 Bedrock 部署到共享主机。根据你的主机环境,这可能可行。查看 florianmoser/plesk-deployer

注意:在尝试部署脚本之前,请确保你有本地以及远程文件的备份。当你提供错误路径时,文件可能会轻易被覆盖!你使用这里提供的脚本是唯一负责的。

谁需要这个

希望使用 Deployer 部署 Bedrock 应用程序的 PHP 开发者。

安装

使用 Composer

$ composer require florianmoser/bedrock-deployer

脚本

此包提供几个脚本,帮助您部署 Bedrock。根据需要需要每个包。

这些是可用的脚本

Bedrock 数据库

提供任务以从服务器导出数据库并导入到您的开发机器,反之亦然。

有 Trellis / Vagrant 以及 Valet+ 环境的脚本。

Trellis / Vagrant 环境

要求

  • 在本地机器上运行的 Vagrant(或当然 Trellis)
  • 在 Vagrant 以及远程机器上运行的 WP CLI

通过以下方式将内容加载到您的 deploy.php 文件中

require 'vendor/florianmoser/bedrock-deployer/recipe/bedrock_db.php';

需要设置以下 Deployer 环境变量

  • local_root: 本地主机上网站根目录的绝对路径
  • vagrant_dir: 包含 .vagrantfile 的目录的绝对路径
  • vagrant_root: Vagrant 机器内部网站的绝对路径(应与 local_root 相匹配)

示例

set( 'local_root', dirname( __FILE__ ) );
set( 'vagrant_dir', dirname( __FILE__ ) . '/../trellis' );
set( 'vagrant_root', '/srv/www/domain.com/current' );

Valet+ 环境

要求

  • Valet+ 上运行的 Bedrock

通过以下方式将内容加载到您的 deploy.php 文件中

require 'vendor/florianmoser/bedrock-deployer/recipe/bedrock_valetplus_db.php';

需要设置以下 Deployer 环境变量

  • local_root: 本地主机上网站根目录的绝对路径

示例

set( 'local_root', dirname( __FILE__ ) );

任务 pull:db

从服务器导出数据库并将其导入到本地 Vagrant 数据库,同时删除旧数据。在导入新数据之前,在 local_root 目录中创建本地数据库的备份。

导入后,将 WordPress 网址从服务器网址转换为本地网址,因此您的 WordPress 安装在导入后将继续工作。

数据库凭据和网址从远程和本地 .env 文件中读取。因此,请确保这些文件是最新的。

任务 push:db

从本地 Vagrant 数据库导出数据库并将其导入到远程服务器,同时删除旧数据。在导入新数据之前,在当前发布目录的服务器上创建远程数据库的备份。

导入后,将 WordPress 网址从本地网址转换为远程网址,因此您的 WordPress 安装在导入后将继续工作。

数据库凭据和网址从远程和本地 .env 文件中读取。因此,请确保这些文件是最新的。

Bedrock .env

提供管理服务器上的 .env 文件的任务。

通过以下方式将内容加载到您的 deploy.php 文件中

require 'vendor/florianmoser/bedrock-deployer/recipe/bedrock_env.php';

不需要设置特殊的 Deployer 环境变量。

任务 bedrock:env

尝试从上一个版本复制到当前版本的 .env 文件。如果没有上一个版本或没有可用的 .env 文件,将创建 .env 文件并提示用户输入凭据。

在创建新的 .env 文件时,此任务还会生成 WordPress 密钥。

Bedrock 其他

提供各种 Bedrock 任务。

通过以下方式将内容加载到您的 deploy.php 文件中

require 'vendor/florianmoser/bedrock-deployer/recipe/bedrock_misc.php';

不需要设置特殊的 Deployer 环境变量。

任务 bedrock:vendors

在您的服务器上为 Bedrock 运行 composer install

常见

提供常见的部署任务。

要求

  • 在 Vagrant 以及远程机器上运行的 WP CLI

通过以下方式将内容加载到您的 deploy.php 文件中

require 'vendor/florianmoser/bedrock-deployer/recipe/common.php';

不需要设置特殊的 Deployer 环境变量。

任务 activate:plugins

在远程服务器上激活所有插件。

文件传输

提供从/到同步目录上传/下载文件的任务。

通过以下方式将内容加载到您的 deploy.php 文件中

require 'vendor/florianmoser/bedrock-deployer/recipe/filetransfer.php';

需要设置以下 Deployer 环境变量

  • sync_dirs: 数组路径,将与 $absoluteLocalPath => $absoluteRemotePath 同时更新。如果路径有尾随斜杠,则只会传输其内容,而不会传输目录本身。

示例

set( 'sync_dirs', [
    dirname( __FILE__ ) . '/web/app/uploads/' => '{{deploy_path}}/shared/web/app/uploads/',
] );

任务 pull:files

将从每个 $absoluteRemotePath 拉取所有文件到每个 $absoluteLocalPath。新文件将被添加,现有文件将被更新,但只有本地存在的文件不会被删除。

为确保不丢失任何文件,每个 $absoluteLocalPath 及其内容都将备份到 zip 文件中,该 zip 文件将被添加到 $absoluteLocalPath。之前拉取的现有备份不包括在新备份中。

如果您希望在不进行备份的情况下拉取文件,请考虑使用任务 pull:files-no-bak

任务 push:files

将每个 $absoluteLocalPath 中的所有文件推送到每个 $absoluteRemotePath。新文件将被添加,现有文件将被更新,但只有远程服务器上存在的文件不会被删除。

为确保不丢失任何文件,每个 $absoluteRemotePath 及其内容都将备份到 zip 文件中,该 zip 文件将被添加到 $absoluteRemotePath。之前推送的现有备份不包括在新备份中。

如果您希望在不进行备份的情况下推送文件,请考虑使用任务 push:files-no-bak

Sage

提供部署 Roots Sage 主题的任务。

要求

  • Roots Sage 10(也支持 Sage 9,有关如何与 Sage 9 一起使用,请参阅包含的 /examples/deploy.full-example.php)

通过以下方式将内容加载到您的 deploy.php 文件中

require 'vendor/florianmoser/bedrock-deployer/recipe/sage.php';

需要设置以下 Deployer 环境变量

  • theme_path: 主题路径,相对于 release_path
  • local_root: 本地主机上网站根目录的绝对路径

示例

set( 'local_root', dirname( __FILE__ ) );
set( 'theme_path', 'web/app/themes/theme-name' );

任务 sage:vendors

在 Sage 主题目录中运行 composer install

任务 sage:assets

在本地机器上编译 Sage 资产,然后将其上传到远程服务器上的主题目录(覆盖之前的资产!)

Trellis

您可能不想使用这些配方来部署 Trellis。Trellis 有自己的强大部署过程。但是,您可以使用 Trellis 进行开发,并仅使用这些配方来部署 Bedrock。

这种方法的不利之处在于,您将在存储库中有一个 /site 以及一个 /trellis 目录。因此,这两个目录都将被克隆到服务器。

此任务处理这种情况

任务 trellis:remove

将删除远程 /trellis 目录,并将 /site 的内容移动到 /。在执行符号链接更改之前,完成部署后使用此任务。