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”
答案 0 :(得分:4)
我在这方面浪费了两天的时间,因为以前的解决方案都不适合我。 :-(
最终,我在另一个论坛上找到了解决方案:
问题是,如果您使用存储在GitHub中的Jenkinsfile及其项目源,则必须在Jenkinsfile本身中配置此触发器,而在Jenkins或项目配置中 not 进行配置。 >
因此,将这样的触发器{}块添加到您的Jenkinsfile中:
pipeline {
agent any
triggers {
githubPush()
}
stages {
...
}
}
然后...
下一次推送应最终触发自动构建!
答案 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不会戳它。如果构建失败,则永远无法再次触发作业。