Gitlab 合并请求具有标签值,可以通过编程和手动(由审阅者)添加和删除。
Gitlab 有一个 Jenkins 集成设置,它向 Jenkins 发送一个包含标签的 JSON blob:
"labels": [
{
"id": 2132,
"title": "blocked",
"color": "#ffbb00",
"project_id": 29634,
"created_at": "2019-11-01 14:32:22 UTC",
"updated_at": "2020-05-12 15:52:22 UTC",
"template": false,
"description": "MR cannot be merged; rationale should be described in-line.",
"type": "ProjectLabel",
"group_id": null
},
{
"id": 1909,
"title": "ready for review",
"color": "#5843AD",
"project_id": 29634,
"created_at": "2019-08-19 23:59:00 UTC",
"updated_at": "2019-08-19 23:59:00 UTC",
"template": false,
"description": "",
"type": "ProjectLabel",
"group_id": null
}
],
Jenkins Gitlab 插件拦截该 JSON blob 并开始测试。
我猜这个 JSON blob 被写出到我可以在脚本化管道 Jenkinsfile 中访问的数据结构,但我找不到任何关于如何从中提取值的文档。我希望能够检查存在的标签,然后根据分配的标签采取不同的测试操作。
如何在脚本化管道 Jenkinsfile 中提取 Gitlab JSON 数据?
答案 0 :(得分:0)
这里我们必须小心,当使用脚本化管道时,有两种可能性。 TL:博士;对于多分支管道作业,您确实有环境变量,而对于普通管道作业则没有。
在正常管道作业中,第一种方法是利用 jenkins gitlab plugin。使用此插件无法获取标签,到目前为止,有一个拉取请求已开放 2 年而没有交互。
第二种方式,如果您使用的是多分支管道,则最有可能使用 gitlab branchsource 插件。它提供了更多的环境变量,如 here 所述。
特别有趣的应该是以下内容
其中 GITLAB_LABELS_COUNT
将返回您的数量,通过索引您可以解析所有这些。
例如。我创建了一个带有 Doing
和 To Do
标签的合并请求,并收到了以下环境变量
GITLAB_LABEL_TITLE_1=To Do
GITLAB_LABEL_TITLE_0=Doing
GITLAB_LABEL_GROUP_ID_0=<group id>
GITLAB_LABEL_GROUP_ID_1=<group id>
GITLAB_LABEL_ID_0=<label id 0>
GITLAB_LABEL_ID_1=<label id 2>
GITLAB_LABELS_COUNT=2
GITLAB_LABEL_TEMPLATE_1=false
GITLAB_LABEL_TEMPLATE_0=false
GITLAB_LABEL_COLOR_0=#5CB85C
GITLAB_LABEL_COLOR_1=#F0AD4E
# i skipped the Date fields