avirdz / hookdeploy
该包已被废弃,不再维护。未建议替代包。
用于将git仓库部署到Web服务器的PHP脚本
v1.2.5
2017-02-07 01:34 UTC
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2020-06-11 00:26:38 UTC
README
hookdeploy是一个用于bitbucket git仓库的PHP部署脚本。它还与composer、npm、bower和gulp有基本的集成。
使用composer安装
composer create-project avirdz/hookdeploy
要求
- 您需要bitbucket账户的ssh访问权限。
- 如果您启用了composer、npm、bower或gulp,它们必须可通过www-data访问。
- www-data需要git_dir和分支路径的写权限。
- www-data需要访问配置的私钥。
资源
- SSH密钥生成:https://confluence.atlassian.com/bitbucket/configure-multiple-ssh-identities-for-gitbash-mac-osx-linux-271943168.html
- 添加部署密钥:https://confluence.atlassian.com/bitbucket/use-deployment-keys-294486051.html
- Webhook管理:https://confluence.atlassian.com/bitbucket/manage-webhooks-735643732.html
- 修复NPM权限:https://docs.npmjs.net.cn/getting-started/fixing-npm-permissions
全局配置
添加新文件config.php,复制config.example.php文件的内容并做出更改。
键 | 值 | 描述 |
---|---|---|
git | (字符串) 默认: git | git命令(*) |
composer | (字符串) 默认: composer | composer命令(*) |
composer_home | (字符串) 默认: /usr/local/bin | composer home环境变量 |
npm | (字符串) 默认: npm | npm命令(*) |
gulp | (字符串) 默认: gulp | gulp命令(*) |
bower | (字符串) 默认: bower | bower命令(*) |
create_dirs | (布尔值) 默认: false | 自动创建所有必要的目录,需要不同目录的写权限 |
hookdeploy_settings_dir | (字符串) 默认: /var/www/.hookdeploy_settings | composer、npm和bower缓存文件夹创建于此。 |
http_test | (布尔值) 默认: false | 如果为true,您可以通过直接访问脚本在浏览器中进行测试,必须禁用IP限制 |
bg_command | (字符串) 默认: /dev/null 2>&1 & | 运行所有其他命令的命令的一部分 |
quiet | (字符串) 默认: -q | 运行composer、npm和bower的静默模式参数 |
debug | (字符串) 默认: null | 运行composer、npm和bower的调试模式参数,此参数通过浏览器测试启用 |
(*) 避免权限错误,通过设置这些命令的完整路径。
项目配置
键 | 值 | 描述 |
---|---|---|
full-project-name | (数组) | 将键名替换为您的完整项目名称 |
- private_key | (字符串) | ssh私钥的完整路径
- git_dir | (字符串) | 本地克隆仓库的完整路径
- remote_repository | (字符串) | 远程仓库路径ssh格式
- 分支(数组)| 待部署的分支 |||
'branch_name' => 'deployment path'
常见环境分支,如 master(生产),develop(开发) - 发布版本(数组)| 待部署的发布版本 |||
'deploy' => false,
部署发布版本 |||'name_regex' => '/^release\/v?[0-9]+\.[0-9]+(?:\.[0-9]+)?$/i',
发布版本名称的正则表达式 |||'path' => '/var/www/myproject-latest'
部署最新发布版本的路径 - run_composer | (布尔值) 默认:false | 运行 composer install 命令
- run_npm | (布尔值) 默认:false | 运行 npm install 命令
- run_bower | (布尔值) 默认:false | 运行 bower install 命令
- run_gulp | (布尔值) 默认:false | 运行 gulp 任务命令
- gulp_task | (字符串) 默认:live | 要运行的任务名称
- valid_gulp_tasks | (数组) | 可以通过提交消息运行的有效的 gulp 任务
通过提交消息运行 gulp 任务
您可以通过提交消息运行 gulp 任务,只需在您的最后一条提交消息中添加以下格式
#gulp <task>#
将 <task> 替换为项目配置中 valid_gulp_tasks 键上的有效任务。
提交示例
Removed some unused files #gulp clear:all#
测试
测试您的私钥并将 bitbucket 添加到 known_hosts
sudo -Hu www-data ssh -i ~/.ssh/myPrivateKey -T git@bitbucket.org
通过浏览器测试
这是测试您的设置的最好方法。
将 hookdeploy 配置为通过浏览器设置全局配置 "http_test" 键为 true 来运行脚本。然后暂时禁用 .htaccess 中的 IP 限制。在浏览器中输入 hookdeploy 脚本的 URL,使用以下 GET 参数
键 | 值 | 描述 |
---|---|---|
run | empty|composer|npm|bower|gulp | 此参数必须设置,以便运行 HTTP 测试,您可以设置任何其他命令进行测试,例如:composer(这将运行 composer install 命令),您可以通过逗号或其他分隔符分隔多个命令来运行多个命令,例如:composer,npm |
bg | 任何值 | 如果您想禁用命令的静默模式并激活调试输出以获取更多信息,则必须设置此参数,命令将正常运行(背景和静默模式)如果此参数不存在 |
r | 完整项目名称 | 要测试的项目,来自 $p 配置的完整项目名称,斜杠必须用 "%2F" 编码,如果此参数不存在,则脚本将取您的 $p 配置中的第一个项目 |
b | 分支名称 | 要测试的分支,如果此参数不存在,则脚本将取您的项目配置中的第一个分支 |
示例测试 URL
http://my-host/hookdeploy.php?run=composer&bg=1&r=myuser%2Fmyproject&b=develop
许可证
MIT