我们希望使用与Stash类似的合并请求审批,在Stash中,一个人创建一个PR,并可以分配多个审批者,审批者可以批准或拒绝。只有当N个审批者批准时,才可以合并PR(每个存储库可配置)。这个特性似乎只在GitLab EE中提供,是吗?有没有免费或便宜的替代方案来从CE迁移到EE?也许是一个自定义的GitLab分支或插件?
cngwdvgl1#
我们理解,但我们只在GitLab EE中提供这个功能,因为我们认为通常锁定工作流对大型组织来说更有趣。在一个小团队中,在某个工作流上达成一致要容易得多,因此拥有一个严格的工具就不那么重要了,而拥有一个灵活的工具就更有利了。在您的团队中,您可以考虑使用“thumbsup”(通过书写:+1:)作为批准的计数器,并在您自己之间商定一个最小值。+1将在MR中求和。©乔布·货车德沃特
更新2020年9月现在Core中有合并请求批准-Introduced in GitLab 13.2
但它们是可选的。您不能将其分配给某个用户。
umuewwlo2#
据我所知,你不能从CE迁移到EE,因为CE是免费的,而EE不是。但你能做的是:1.使用 GitLab.com,在那里你可以免费获得所有的EE特性;
我不知道这是不是你想要的答案,但我希望能有所帮助。
w9apscun3#
这是目前不可能的。我不知道任何插件来实现它。你可以用“竖起大拇指”的React来投票(并订阅)已经存在的问题和关于该问题的讨论:https://gitlab.com/gitlab-org/gitlab-ce/issues/42096
vpfxa7rd4#
虽然合并请求审批不是免费GitLab层的一部分,但合并请求用户界面上仍然提供该功能,API中也提供数据,因此 * 作为一种解决方案 *,您可以创建一个GitLab CI作业,执行审批数量检查,如果数量不足则失败。首先,确保在项目的合并请求设置中启用了Pipelines must succeed。然后在.gitlab-ci.yml中创建一个新作业,该作业将在合并请求批准不足时失败:
Pipelines must succeed
.gitlab-ci.yml
code_approved: rules: - if: $CI_MERGE_REQUEST_ID script: - apt-get update - apt-get install -y jq curl - > curl --header "JOB-TOKEN: $CI_JOB_TOKEN" "$CI_API_V4_URL/projects/$CI_PROJECT_ID/merge_requests/$CI_MERGE_REQUEST_IID/approvals" | jq -e '.approved_by[0]'
apt-get ...
curl
jq
curl -H "JOB-TOKEN: $CI_JOB_TOKEN"
"$CI_API_V4_URL/projects/$CI_PROJECT_ID/merge_requests/$CI_MERGE_REQUEST_IID/approvals"
approved_by
| jq -e '.approved_by[0]'
-e
'.approved_by[1]'
演示:https://gitlab.com/blaisekal/mr-approvals/-/merge_requests此解决方法的最大缺点是您需要运行作业来确定已批准状态,如果批准数发生变化,则必须手动重新运行作业,并且您团队中的恶意成员可能会在合并之前删除配置项作业。
4条答案
按热度按时间cngwdvgl1#
我们理解,但我们只在GitLab EE中提供这个功能,因为我们认为通常锁定工作流对大型组织来说更有趣。
在一个小团队中,在某个工作流上达成一致要容易得多,因此拥有一个严格的工具就不那么重要了,而拥有一个灵活的工具就更有利了。
在您的团队中,您可以考虑使用“thumbsup”(通过书写:+1:)作为批准的计数器,并在您自己之间商定一个最小值。+1将在MR中求和。
©乔布·货车德沃特
更新2020年9月现在Core中有合并请求批准-Introduced in GitLab 13.2
但它们是可选的。您不能将其分配给某个用户。
umuewwlo2#
据我所知,你不能从CE迁移到EE,因为CE是免费的,而EE不是。
但你能做的是:
1.使用 GitLab.com,在那里你可以免费获得所有的EE特性;
我不知道这是不是你想要的答案,但我希望能有所帮助。
w9apscun3#
这是目前不可能的。我不知道任何插件来实现它。
你可以用“竖起大拇指”的React来投票(并订阅)已经存在的问题和关于该问题的讨论:
https://gitlab.com/gitlab-org/gitlab-ce/issues/42096
vpfxa7rd4#
虽然合并请求审批不是免费GitLab层的一部分,但合并请求用户界面上仍然提供该功能,API中也提供数据,因此 * 作为一种解决方案 *,您可以创建一个GitLab CI作业,执行审批数量检查,如果数量不足则失败。
首先,确保在项目的合并请求设置中启用了
Pipelines must succeed
。然后在
.gitlab-ci.yml
中创建一个新作业,该作业将在合并请求批准不足时失败:apt-get ...
:安装curl
和jq
二进制文件。curl -H "JOB-TOKEN: $CI_JOB_TOKEN"
:验证呼叫。"$CI_API_V4_URL/projects/$CI_PROJECT_ID/merge_requests/$CI_MERGE_REQUEST_IID/approvals"
GitLab API端点返回当前合并请求的批准数据。请注意,在GitLab Free上,此资源返回的许多数据丢失或具有误导性,但approved_by
已正确填充。| jq -e '.approved_by[0]'
通过管道将输出传输到jq
,尝试从列表中提取第一个approved_by
项。-e
可确保在找不到该项时,命令将返回错误退出状态,这将导致CI作业失败,进而导致选项合并被阻止。如果需要两个审批,请使用jq
筛选器'.approved_by[1]'
。演示:https://gitlab.com/blaisekal/mr-approvals/-/merge_requests
此解决方法的最大缺点是您需要运行作业来确定已批准状态,如果批准数发生变化,则必须手动重新运行作业,并且您团队中的恶意成员可能会在合并之前删除配置项作业。