gpt4 book ai didi

jenkins - 如何通过 Gitlab 推送在 Jenkins 中使用参数进行构建?

转载 作者:行者123 更新时间:2023-12-02 15:20:44 25 4
gpt4 key购买 nike

我的 GitLab 社区版 8.15.2 使用 Webhook 成功触发了 Jenkins 2.32.1 中的管道项目。我希望gitlab推送触发带有参数的构建,但是当它通过时参数值为空,因此构建失败。

gitlab webhook 看起来像:

http://jenkins.server:8080/project/project-a/buildWithParameters?MYPARAM=foo

在我的管道项目中,我回显参数值

回显“MYPARAM:${MYPARAM}”

并且它没有设置任何内容。关于我哪里出错了有什么想法吗?

更新

我在管道中使用的实际代码是:

node {
try {
echo "VM_HOST: ${VM_HOST}"
echo "VM_NAME: ${VM_NAME}"
stage('checkout') {

deleteDir()
git 'http://git-server/project/automated-build.git'
}
stage('build') {

bat 'powershell -nologo -file Remove-MyVM.ps1 -VMHostName %VM_HOST% -VMName "%VM_NAME%" -Verbose'
}
...
}
}

参数 VM_HOST 有默认值,但 VM_NAME 没有。在 Jenkins 的控制台输出中我可以看到:

[Pipeline] echo
VM_HOST: HyperVHost
[Pipeline] echo
VM_NAME:

最佳答案

我已经为此苦苦挣扎了好几个星期。我曾经让它工作过一次,但直到今天我才让它再次工作。当然,解决方案是显而易见的……

对于每个管道作业,我自动勾选了以下框:

Build when a change is pushed to GitLab. GitLab CI Service URL: http://jenkins.dev:8080/project/MyProject

然后,我从 GitLab 使用 webhook 来触发上述内容。像你一样我尝试添加 /buildWithParameters并尝试了许多其他不起作用的方法。

问题是,我勾选了错误的复选框!由于我从 GitLab webhook 触发构建,因此根本不需要选中上面的复选框(当 a... 时构建)。需要检查的是:

Trigger builds remotely (e.g., from scripts)

该复选框为您提供了一个新的 URL:

Use the following URL to trigger build remotely: JENKINS_URL/job/MyProject/build?token=TOKEN_NAME or /buildWithParameters?token=TOKEN_NAME

就像我附带的所有文档一样,正如您所看到的,URL 现在不再以 /project 开头。 ,但带有 /job 相反!

所以勾选该框并相应地更改您的网址:

http://jenkins.server:8080/**job**/project-a/buildWithParameters?token=TOKEN_NAME&MYPARAM=foo

至少我想提一下 token :在 GitLab webhook 中,有一个单独的“token”字段,其中指出:

Use this token to validate received payloads. It will be sent with the request in the X-Gitlab-Token HTTP header.

因此,此处提供的 token 将作为 HTTP header 随请求一起发送。这是可以在 Jenkins 设置中全局提供的 token 。勾选框 Use the following URL to trigger build remotely 时您必须在 Jenkins 作业中提供的 token 必须作为 GET 参数在 URL 中发送,就像示例所示。

最后一点:就我个人而言,我从来没有完全做到这一点,因为我没有摆脱 Jenkins CSRF 保护。禁用它会给我另一个错误。不过,希望上述内容能够解决您和其他人的问题。

关于jenkins - 如何通过 Gitlab 推送在 Jenkins 中使用参数进行构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41533970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com