torzer / gitlab-flow
Laravel 包,包含控制台命令,帮助开发者使用全面的流程与 Gitlab 交互
Requires
- php: >=5.6.4
- torzer/gitlab-client: ^0.1
README
此 Laravel 包旨在帮助开发者更容易地采用 Gitlab 的特性分支流程,并减少使用时的操作时间。
安装
使用 composer 安装它
composer require torzer/gitlab-flow
在 config/app.php 中注册 ServiceProvider
Torzer\GitlabFlow\GitlabFlowServiceProvider::class,
配置
在 .env 文件中,您必须设置以下变量
GITLAB_API_URL=your-gitlab-instance GITLAB_API_TOKEN=your-gitlab-token GITLAB_DEFAULT_PROJECT_ID=project-id-on-gitlab GITLAB_DEFAULT_MR_TARGET_BRANCH=dev
- GITLAB_API_URL 这是可选的,只有在其与默认值不同时才需要设置。是访问 Gitlab API 的基本 URL,默认是 'https://gitlab.com/api/v4/'。您可以将其更改为您自己的自托管实例;
- GITLAB_API_TOKEN 是您访问 Gitlab API 的私有 API Token;
- GITLAB_DEFAULT_PROJECT_ID 是 Gitlab 上的项目 ID,您可以在设置菜单中找到它;
- GITLAB_DEFAULT_MR_TARGET_BRANCH 是打开合并请求的默认目标分支名称。如果未设置此变量,则默认使用
dev名称。
创建合并请求
最常用的命令是从当前分支创建合并请求。如果您输入以下命令
php artisan gitlab:mr
将在 Gitlab 项目上创建一个合并请求,使用分支名称作为标题。如果您使用的是解决问题的特性分支名称,以分支解决的 issue 号码开头,则命令会在描述中注入 Closes #issue。
默认命令将确认是否必须执行 git push 作为流程的第一步,然后要求您从项目中选择分配者和里程碑。
要更改行为,请使用以下选项之一
- --source[=SOURCE] - 源分支的名称,默认为当前分支
- --target[=TARGET] - 创建合并请求的目标分支名称,默认由项目 Gitlab 配置设置
- -D, --description[=DESCRIPTION] - 合并请求的长文本描述
- -T, --title[=TITLE] - 合并请求的短文本描述(标题)
- --no-assignee - 设置此选项,则不设置分配者,否则将要求您选择分配者用户
- --no-milestone - 设置此选项,则不设置里程碑,否则将要求您选择里程碑
- --wip - 设置此选项,则创建 WIP 合并请求
- --no-push : 在打开合并请求之前不将当前分支推送到远程仓库
- --remove-source - 在合并请求后使用,将接受设置为删除源
- --tag-after[=TAG-AFTER] - 在合并请求后使用,检出目标源,将其拉取并标记
- --merge - 设置此选项,则创建合并请求并合并它
一些用法
没有默认源和目标的 MR
这将要求您提供分配者和里程碑,设置从 dev 分支到 stage 分支的 MR 的标题。
默认命令将确认是否必须执行 git push 作为流程的第一步。
php artisan gitlab:mr --source dev --target stage -T 'Staging milestone 3'
在打开之前不推送最后更改的 MR
在打开合并请求(MR)之前,不会将最后的提交推送到仓库。
php artisan gitlab:mr --no-push
MR 后跟合并接受
在打开MR之前,将最后的提交推送到仓库,打开MR,列出更改并将其合并到目标分支,打上标签,将本地分支切换到目标分支并从仓库拉取。
php artisan gitlab:mr --no-assignee --no-milestone --push --remove-source --merge --tag-after 0.0.3
查看下面的合并请求以了解上述命令的合并行为。
接受合并请求
此命令用于通过其ID创建并接受合并请求。如果您输入以下命令
php artisan gitlab:mr-merge 99
它将检查MR状态,列出您选择的项目的成员,列出您选择的里程碑,如果确认,则列出更改并执行MR !99(通过更改此数字来接受您想要的MR ID)的合并。
您可以使用以下一些选项来更改此行为
- -m, --message[=MESSAGE] - 在MR接受中设置要插入的消息
- --remove-source - 合并后删除源分支
- --no-push : 不要在合并之前将当前分支推送到远程以插入到当前分支的MR
- --update-local - 合并后检出目标源并拉取
- --tag-after[=TAG-AFTER] - 合并后在本地检出目标源,拉取并标记
- -y, --yes - 不要交互式列出提交和问题或请求确认
自动化流程
通过在Laravel应用的根目录中设置名为.gitlab-flow的文件,可以“自动化”调用流程。
此文件应使用ini格式,其中部分名称是流程名称,每个选项/参数在一行中。command选项是必需的。请参见以下示例
.gitlab-flow
[default] command=mr --no-assignee --merge=1 --update-local=1 --remove-source=1 [stage-deploy] command=mr --source=dev --target=stage --title="Deploy, from DEV to STAGE" --merge=1 --update-local=1 --tag-after=ask
注意,要启用选项,必须将其设置为数字1(一个)。
如果命令未传递任何流程名称,则调用default部分。
调用默认流程
php artisan gitlab:run
调用示例中的阶段部署部分
php artisan gitlab:run stage-deploy
查看.gitlab-flow文件中的流程
php artisan gitlab:run --show-config