我知道 GitLab 和 Jenkins 都有彼此的集成点,但是由于我无法控制的原因,我无法使用它们。
很容易将参数传递给作业,告诉它哪个分支,甚至哪个提交要构建。但是,我似乎无法将其调整为正确的配置,它将构建我作为参数传入的合并请求编号。
我需要使用 Jenkins 中开箱即用的“git”功能来做到这一点。(不能使用 GitLab Merge Request 插件,因为它需要对 repo 进行轮询。)此作业必须手动启动,并通过参数指定合并请求编号。我也不会使用 GitLab 的 webhook 来触发它。此要求是特定合并请求的手动和按需构建。
有可能吗,我只是遗漏了一些(不)明显的东西?
所以没有其他人必须忍受自己解决这个问题......是的......Jenkins可以立即构建一个GitLab合并请求,没有疯狂的插件。
在 Jenkins 的Source Code Management部分中,单击Advanced,并将 设置Refspec为:
+refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*
Run Code Online (Sandbox Code Playgroud)
然后,在Branch Specifier现场,使用这个:
origin/merge-requests/${MR}
Run Code Online (Sandbox Code Playgroud)
其中 ${MR} 是传递给构建的参数 - 要获取的合并请求的编号。
其他答案现在似乎已经过时(2016年和2018年)并且对我不起作用(但是为我指明了正确的方向)。
\n使用gitlabMergeRequestId给了我一些奇怪的巨大 ID 来合并请求,它甚至不存在于我的存储库中(我不知道它来自哪里)&MR似乎是 2016 年的旧占位符(?)。
这对我有用:
\n+refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*\nRun Code Online (Sandbox Code Playgroud)\n+refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*\nRun Code Online (Sandbox Code Playgroud)\n注意 gitlabMergeRequest Iid不是拼写错误并且与 gitlabMergeRequest Id不同
\n通过上述操作,结帐成功,但您仍然需要指定管道脚本将使用哪个分支。
\n使用gitlabSourceBranch环境变量,它在 Git 插件的脚本中起作用(对于分支说明符 \xe2\x80\x8d\xe2\x99\x82\xef\xb8\x8f 对我来说不起作用)。
origin/merge-requests/${gitlabMergeRequestIid}\nRun Code Online (Sandbox Code Playgroud)\nPS,如果占位符再次更改或不起作用,请检查https://github.com/jenkinsci/gitlab-plugin#define-variables
\n| 归档时间: |
|
| 查看次数: |
10148 次 |
| 最近记录: |