詹金斯的简单管道不是由github push触发的

时间:2019-09-12 15:51:32

标签: jenkins github jenkins-pipeline github-webhook

enter image description here我使用以下脚本创建了一个名为“ pipelinejob”的詹金斯管道作业:

react-native-app-folder/android

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

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

2)在“构建触发器”下,我已选中“用于GITScm轮询的GitHub钩触发器

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

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

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

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

7)我的管道作业“ pipelinejob”未触发

8)在詹金斯日志中,我看到以下内容:

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

与我的“ pipelinejob”无关。

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

P.S。我已经成功手动执行了“ pipelinejob”

4 个答案:

答案 0 :(得分:4)

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

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

然后...

  • 将您的Jenkinsfile推送到GitHub
  • 手动运行一个版本,以让Jenkins知道您使用此触发器的意愿。
    您会注意到,“ GITScm轮询的GitHub钩子触发器”复选框将最后被选中!
  • 重新启动詹金斯。

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

答案 1 :(得分:3)

在管道作业的左侧窗格中,单击 GitHub Hook日志。如果显示“轮询尚未运行”,则您将需要手动触发一次管道作业,然后Jenkins将其注册以戳入接收钩子。

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

答案 2 :(得分:1)

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

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。

分支:应在其上触发管道的分支。当您将分支指定为master并更改其他分支(例如development或QA)时,不会触发管道。

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

答案 3 :(得分:-1)

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

注意:另外,请确保应该成功构建首次手动构建的管道作业,否则Jenkins不会戳它。如果构建失败,则永远无法再次触发作业。