wearebase/base-bash-bosh

此软件包已被弃用,不再维护。未建议替代软件包。

B.O.S.H 是一套编排和同步脚本,可用于部署预构建代码,同步或备份数据库和资源。

v1.0.27 2015-11-26 17:17 UTC

README

B.O.S.H 是一套编排和同步脚本,可用于部署预构建代码,同步或备份数据库和资源。

我们将其构建为一个解决问题的工具,对我们来说效果很好。然而,它只被用于少数项目,因此可能仍存在一些错误。我们不建议在生产环境中使用,直到它在类似非生产环境中经过测试。如果您发现任何问题,请为我们提出问题。

先决条件

  • 您的机器上需要以下内容 sshpass git

      ubuntu: sudo apt-get install sshpass git
    

安装

运行以下命令(检查最新版本)

composer require wearebase/bosh:~1.0.23
composer install

安装

./bin/bosh install

在运行安装命令之前,无法运行其他命令。这将复制示例配置和环境文件到您的项目的根目录。

设置

安装后,您的项目根目录下将有一组配置文件。 config/bosh-config 包含脚本的键设置。 config/environments/ 包含 .env 文件,这些文件是 bosh 脚本用作参数的环境。例如,生产环境使用 config/environments/production.env 文件中的设置。

环境 local 不需要用户/主机名/项目目录(有关示例,请参阅 config/environments/local.env)。

一个示例 config/environments 文件夹可能包含

local.env
vagrant.env
development.env
staging.env
production.env

安装到服务器

一旦为服务器配置了配置,您就可以运行以下命令来设置项目目录以进行部署。有关更多信息,请参阅部署步骤。

./bin/bosh install-remote <environment-name>

脚本需要一个参数。这是您希望在服务器上设置文件夹结构的环境的名称。它根据 config/environments/<environment-name>.env 中的定义创建 PROJECT_DIR 文件夹及其所需的文件夹。

通用用法

从命令行,可以以类似上述安装脚本的方式运行各种脚本

./bin/bosh <command> <parameters>

部署

构建(如果已定义构建脚本)并将提交的代码部署到服务器

./bin/bosh deploy <environment-name> <git-branch-or-tag>

脚本使用两个参数调用。第一个是您希望部署到的环境的名称。配置可以在 config/environments/<environment-name>.env 中找到。第二个是要部署的 git 哈希、标签或分支名称。只有已提交的代码才会被部署。

它做了什么

首先,代码库将从git克隆,使用您在本地做出的提交(而不是远程git服务器)。这个克隆将临时放置在./dist中。

此部署脚本将调用构建脚本(其位置在bosh-config文件中定义。该位置位于您项目的根目录中)以准备部署站点。这意味着所有非源控制的依赖项、预编译文件、压缩脚本以及其他任何内容都将放置在./dist目录中,与您的源控制代码并列。如果您想调用位于项目根目录外的构建脚本,您需要创建一个内部脚本,然后通过该内部脚本代理外部脚本。

然后,该代码将被压缩,移动到远程服务器,解压并放置在部署时的timestamp目录下的发行版文件夹中。任何在shared-paths.sh中定义的共享目录(如非源控制的用户上传文件)将被符号链接到发行版文件夹中,并且指向当前发行的符号链接将被更新,以便current现在指向您的新发行版。

bosh-config文件中,有PRE_PUBLISHPOST_PUBLISH命令的数组,这些命令在更新符号链接current之前和之后运行。这是运行单元测试和其他检查工具的地方。如果脚本中的任何部分失败,则脚本将退出。

注意事项

您必须提交构建所需的任何代码。这包括构建脚本本身,例如Makefile。

同步数据库

此脚本将备份、复制和从一台服务器导入数据库到另一台。

./bin/bosh sync-db <origin-environment> <destination-environment>

脚本使用两个参数调用。第一个是要从中复制的环境名称。第二个也是环境名称 - 您要将数据库复制到的环境。

有一个可选参数-b--backup,它将跳过导入步骤。

~~您不能同步到production。更新:现在可以了!它使用您的本地机器作为代理。

它做什么

FROM服务器的导出简单地运行mysqldump命令并执行整个数据库转储。然后将此文件复制到指定的TO服务器。然后导入数据库并应用bosh-config文件中的POST_IMPORT_DB_COMMAND项中的sql命令。这些命令会更改数据库值,将应用程序从生产状态转换为开发状态,例如更改电子邮件地址和沙盒支付网关。

重要提示:取消脚本不会停止在远程服务器上运行的所有进程。您需要让这些进程完成或手动将其终止,例如通过登录远程服务器。

同步上传文件(仅限Wordpress)

从一台服务器复制上传文件到另一台。

./bin/bosh sync-uploads <origin-environment> <destination-environment>

脚本使用两个参数调用。第一个是要从中复制的环境名称。第二个也是环境名称 - 您要将数据库复制到的环境。

上传文件夹的位置可能因您的Wordpress设置而异,因此这些位置必须在config/environments/中的相应环境文件中定义。

您不能同步到production。您只能同步到或从vagrantlocal

重要提示:取消脚本不会停止在远程服务器上运行的所有进程。您需要让这些进程完成或手动将其终止,例如通过登录远程服务器。