10

在此处输入图像描述我使用以下脚本创建了一个名为“pipelinejob”的詹金斯管道作业:

pipeline {
    agent any

    stages {

        stage ('Setup'){
            steps{
                //echo "${BRANCH_NAME}"
                echo "${env.BRANCH_NAME}"
                //echo "${GIT_BRANCH}"
                echo "${env.GIT_BRANCH}"
            }
        }
    }
}

1)在General下,我选择了“GitHub项目”,并以如下形式插入我公司的github:

https://github.mycompany.com/MYPROJECTNAME/MY_REPOSITORY_NAME/

2)在构建触发器下,我检查了“GitHub hook trigger for GITScm polling

3) 我创建了一个名为“simplejob”的简单作业,其配置与 1) 和 2) 相同

4) 在我公司的 Github 中,我创建了一个类似“jenkins_url/jenkins/github-webhook/”的 webhook

5) 我对“MY_REPOSITORY_NAME”中的“mybranch”进行了更改

6)我的简单作业“simplejob”被触发并成功构建

7)我的管道作业“pipelinejob”没有被触发

8) 在 Jenkins 日志中,我看到以下内容:

Sep 12, 2019 2:42:45 PM INFO org.jenkinsci.plugins.github.webhook.subscriber.DefaultPushGHEventSubscriber$1 run
Poked simplejob

与我的“管道作业”无关。

您能否指出我下一步要检查的正确方向?

PS我已经成功手动执行了我的“pipelinejob”

4

4 回答 4

16

我为此浪费了两天的时间,因为以前的解决方案都不适合我。:-(
最终我在另一个论坛上找到了解决方案:
问题是,如果您使用存储在 GitHub 中的 Jenkinsfile 以及您的项目源,那么这个触发器必须在 Jenkinsfile 本身中配置,而不是在 Jenkins 或项目中配置。
因此,将这样的触发器 {} 块添加到您的 Jenkinsfile 中:

pipeline {
  agent any
  triggers {
    githubPush()
  }
  stages {
...
  }
}

然后...

  • 将您的 Jenkinsfile 推送到 GitHub
  • 手动运行一个构建,让 Jenkins 知道您使用此触发器的意愿。
    你会注意到“GitHub hook trigger for GITScm polling”复选框最后会被选中!
  • 重启詹金斯。

下一次推送应该最终触发自动构建!

于 2020-05-15T17:01:38.190 回答
5

在管道作业的左侧窗格中,单击GitHub Hook log。如果它说“轮询尚未运行”,您将需要在 Jenkins 注册它以戳接收钩子之前手动触发管道作业一次。

此后,该作业应在 GitHub 推送事件上自动触发。

于 2019-09-12T18:24:15.043 回答
2

我用脚本化的管道文件找到了这个问题的答案。我们需要在 Jenkins 文件中声明 Github 推送事件触发器,如下所示。

properties([pipelineTriggers([githubPush()])])

node {
        git url: 'https://github.com/sebin-vincent/Treasure_Hunt.git',branch: 'master'
        stage ('Compile Stage') {

            echo "compiling"
            echo "compilation completed"
        }

        stage ('Testing Stage') {

            echo "testing completed"
            echo "testing completed"
        }
        stage("Deploy") {

                echo "deployment completed"
                        }
            }
}

声明应该在第一行。

git url:应该触发管道的 URL。

branch:应该触发管道的分支。当您将分支指定为主分支并对开发或 QA 等其他分支进行更改时,不会触发管道。

希望这可以帮助到这里来解决与 Jenkins 脚本管道相同的问题的人:-(。

于 2020-10-08T04:53:33.440 回答
-1

问题是,每当您为 git push 创建由 github-webhook 触发的管道作业时,首先您需要手动构建管道作业一次。如果它构建成功,那么 Jenkins 会注册它以戳接收钩子。从下一次 git push 开始,您的管道作业将自动触发。

注意:还要确保第一次手动构建的管道作业应该构建成功,否则Jenkins不会戳它。如果构建失败,您将永远无法再次触发该作业。

于 2020-02-27T17:31:13.687 回答