【问题标题】:Trigger Jenkins pipeline from Gitlab webhook从 Gitlab webhook 触发 Jenkins 管道
【发布时间】:2017-02-09 09:00:59
【问题描述】:

刚开始使用 Jenkins,我似乎不知道如何为管道正确配置 SCM,因为那里没有 SCM 配置选项卡。我在我的 gitlab 项目中添加了一个 webhook,带有 URL

http://my-jenkins-server.com/git/notifyCommit?url=https://my-gitlab-server.com/my-repo.git

但是当我访问那个 URL 时,Jenkins 会告诉我

No Git consumers using SCM API plugin for: https://my-gitlab-server.com/my-repo.git

这是有道理的,因为我没有明确告诉 Jenkins 我的管道与这个 repo 相关联,只是隐含在 Jenkins 脚本中:

stage('Build'){
    git url: 'https://my-gitlab-server.com/my-repo.git', branch: 'master', credentialsId: '<some-hash>'
    sh 'cd linux-native; make clean all'
}

那么我如何告诉 Jenkins PIPELINE 与特定的 repo 相关联?或者,如何为我的管道找到正确的 notifyCommit url?

【问题讨论】:

    标签: git jenkins


    【解决方案1】:

    假设您已启用 Poll SCM 选项,Git webhook 应该像在 Freestyle 作业中一样运行。

    但您需要手动运行管道至少一次,/git/notifyCommit 挂钩才会起作用。

    对于 Freestyle 项目,Jenkins 可以相当轻松地检查作业配置并查看配置了哪个 SCM。对于脚本化流水线,Jenkins 在实际执行流水线之前无法确定您正在使用的 SCM(如果有的话)。

    【讨论】:

    • @embedded_crysis 您是否启用了轮询 SCM 触发器?我刚刚创建了一个新作业,启用了该触发器并添加了一个简单的 GitLab 管道:node { git 'https://gitlab.com/…' }。第一次运行完成后,我可以使用/git/notifyCommit
    • 它仍然对我不起作用 - 但是,我还没有成功构建。也许这与它有关?
    • 现在尝试了另一个管道,构建成功。它仍然没有将 repo 注册到管道。
    【解决方案2】:

    我必须明确取消选中“轻量级结帐”(在“管道”下)才能使第一个 git checkout 正常工作并启动管道。

    【讨论】:

      猜你喜欢
      • 2022-06-11
      • 2020-06-14
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 2022-01-09
      • 2019-04-25
      相关资源
      最近更新 更多