tlr/frb-cli

Fortrabbit CLI 工具(非官方)。

v0.0.1 2018-09-05 11:20 UTC

This package is auto-updated.

Last update: 2024-09-13 05:02:30 UTC


README

仍在开发中 - 目前请勿使用!

一个用于自动化 git 部署和构建的 CLI 工具,与 Fortrabbit 配合使用。专为大多数 PHP 应用程序(Laravel、Symfony、WordPress 等)构建。目前仅在 Fortrabbit 的“通用栈”上进行了测试。

用法

安装

将 CLI 项目添加到您的系统中的某个位置

git clone git@github.com:tedslittlerobot/frb-cli.git
cd frb-cli
composer install

然后添加一个别名到您的 rc 文件(~/.zshrc~/.bashrc) - 例如:

alias frb='/{user-home}/projects/frb-cli/frb'

要更新,只需进入目录并运行

git fetch
git pull
composer update

注意。理想情况下,这将可以通过 composer 安装,但在与其他一些常见的全局项目一起安装时,我遇到了一些依赖问题。(依赖问题在 illuminate 的支持和 illuminate 的集合的开源版本之间)。

项目设置

然后,在您的项目根目录中,您可以使用 frb init staging production 来设置 .deploy 文件夹,并放入一些用于 staging 和生产的示例配置文件 - 您可以更改不同部署环境的名称。

编辑配置文件,输入您的 Fortrabbit 应用程序名称和其他详细信息(有关选项的解释,请参阅下面的配置部分)

部署!

对于第一次使用 Fortrabbit 运行 git 部署,您需要运行

frb deploy:first production

从那时起,您就可以运行

frb deploy production

配置文件

在首次引导项目时可以创建配置文件 - frb init staging production 将创建 staging 和生产配置文件。

或者,您可以使用 frb make:env 命令将一个示例文件添加到您的配置目录中。

注意。还有一些尚未记录的配置选项 - 主要用于处理“专业”和“通用”应用程序之间的差异。

示例配置文件如下所示

name               : project_name
frb_zone           : deploy.eu2.frbit.com
target_branch      : origin/master
remote_branch      : master

before :
  - php artisan down
  - run : ls -al
    on : local

after :
  - php artisan migrate
  - php artisan up


build_commands :
  - make
  - run: make build
    in: assets/js

build_output :
  - public/build
  - public/build.json

name

这是在 Fortrabbit 中的应用程序名称。

frb_zone

这是应用程序的部署位置。您可以从 git 地址的后半部分获取它(例如,my_app@deploy.eu2.frbit.com:my_app.git)

target_branch

您要部署的本地分支名称。默认值为 origin/master,这意味着它将只部署已接受到 GitHub(或您的主仓库 - GitLab、BitBucket 等)远程 origin 仓库的 master 分支上的代码。

例如,如果您使用的是分叉模型,则这可能为 upstream/master。或者,用于 staging 站点的 upstream/develop

remote_branch

在大多数情况下,不应更改此设置。Fortrabbit 使用远程仓库上的 master 分支。如果您知道自己在做什么,并且出于某种原因要更改它,可以在这里更改。但在 99% 的情况下,我们不推荐更改默认部署分支。

build_commands

要运行以生成网站资源的构建命令列表。您还可以指定运行命令的目录 - 例如:

build_commands :
  - yarn
  - yarn run production
  - run: yarn run && yarn run production
    in: web/app/themes/MyTheme

build_directories

由构建命令生成的目录列表。这些将被 scp 传输到服务器。例如

build_directories :
  - public/\_css
  - public/\_js
  - public/\_fonts

build_files

由构建命令生成的文件列表。这些将被 scp 传输到服务器。例如

build_files :
  - public/manifest.json

命令

frb init [...环境1,环境2,等等]

设置 .deploy 目录,并添加适当的git ignore文件(用于忽略日志和其他你不想提交的文件)

接受任意数量的由空格分隔的环境名称,并为每个创建一个示例环境文件。

frb make:env [新环境名称]

在 .deploy 目录中创建一个示例环境文件。

frb ssh [环境]

通过SSH连接到给定环境的服务器。

frb deploy [环境]

对给定环境运行完整的部署。

frb deploy:first [环境]

对给定环境运行初始部署。必须在运行 frb deploy 之前运行。

frb deploy:touch [环境]

对给定环境运行仅代码的部署。不会构建或推送任何资产。

frb deploy:assets [环境] [--scp-only] [--build-only]

运行仅资产的部署 - 在远程服务器上构建和推送资产。

frb remote:reset [环境]

在远程服务器上运行重置命令。警告 - 这是一个破坏性命令!

待办事项

  • 添加远程命令钩子(在部署期间的维护模式?)
  • 检测远程服务器状态,如果需要则运行 :first...
  • 检测(isFile())构建推送的目标,并运行相应类型的目录/文件任务
  • 向重置命令添加确认
  • E 添加远程:run命令用于运行单个命令
  • 添加适当的输出日志记录
  • 更好的错误处理
  • 在开始时对有效的分支进行Git检查,以及清除暂存区
  • E 从FRB命令获取机密
  • E 数据库备份命令?
  • 将现有的构建目录下载/备份到 .deploy/tmp,然后在失败时重新推送它们
  • N init : 引导项目 .deploy 文件夹
  • N make:env : 创建环境文件
  • E ssh : 连接到服务器
  • E deploy : 部署到环境
  • E deploy:first : 运行首次部署
  • E deploy:touch : 部署但不上传任何资产
  • E deploy:assets : 仅推送资产 (--scp-only --build-only)
  • E remote:reset : 重置远程FRB实例