tlr / frb-cli
Fortrabbit CLI 工具(非官方)。
Requires
- guzzlehttp/guzzle: ~6.0
- illuminate/support: ^5.6
- symfony/console: ~3.0|~4.0
- symfony/filesystem: ~3.0|~4.0
- symfony/finder: ^4.1
- symfony/process: ~3.0|~4.0
- symfony/yaml: ^4.1
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实例