我有以下 Jenkins 作业定义:
- scm:
name: some-project
scm:
- git:
url: git@gitlab.****/some-project.git
credentials-id: some-ssh-username-with-private-key
branches:
- origin/master
- project:
name: some-project
jobs:
- '{name}':
triggers:
gitlab:
trigger-push: true
trigger-merge-request: false
trigger-open-merge-request-push: never
现在这个作业可以上传到 Jenkins,不会出现错误,但是如果我进入 Jenkins Web UI 中 some-project
的 Configure
页面,我可以看到 未启用触发器部分中将更改推送到 GitLab
时进行构建。 GitLab 存储库已正确配置 - 此作业的源代码管理部分有 git@gitlab.****/some-project.git
和 some-ssh- username-with-private-key
凭证和分支 origin/master
配置。但如果没有有效的触发器,这是没有用的。
我做错了什么?
请注意,我不是询问如何配置 GitLab WebHooks 来触发 Jenkins 作业。我可以手动执行此操作并且效果很好。但我们希望使用 Jenkins 作业构建器来管理 Jenkins 作业,以避免通过 Web UI 配置它们的过程中容易出错的过程,并跟踪作业配置的更改 - 我们正在使用 Jenkins 作业定义创建 git 存储库。
最佳答案
我怀疑您可能需要将触发器
放在job
本身中,而不是在/project/jobs
.
使用project
键下的触发器,我遇到了与您相同的症状。
我的触发器都没有在 Jenkins 中创建。将 triggers
部分移动到 job
中解决了我的问题。
此 yaml 将构建一个名为 builder-test
的 jenkins 作业,并选中“将更改推送到 GitLab 时构建”复选框:
- scm:
name: gitlab
scm:
- git:
url: https://gitlab.com/user/repo-name.git
branches:
- origin/master
- job:
name: builder-test
project-type: freestyle
description: "builder-test desc"
scm:
- gitlab
triggers:
- gitlab:
trigger-push: true
- project:
name: builder-test-project
jobs:
- 'builder-test'
使用 GitLab 插件 1.5.1 和 JJB 1.6.2 在 Jenkins 2.32.3 上进行测试
关于git - Jenkins 作业生成器 gitlab 触发器被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47201966/