使用声明式管道的基于提交的作业

时间:2019-08-22 07:46:14

标签: jenkins jenkins-pipeline

我是新詹金斯。我能够使用Freestyle作业配置基于提交的作业触发器。这样,对GitHub的任何新提交都会触发给定的工作。

但是当涉及到管道工作时,我无法实现同样的目标。请帮忙。

在管道的Build Triggers部分中,我启用了GitHub hook trigger for GITScm polling

pipeline{
    agent {
        node 'npm-linux'
    }

    options {
        timeout(time: 15, unit: 'MINUTES')
        disableConcurrentBuilds()
    }

    stages {
        stage('build') {
            steps {
                sh 'git clone link'
                sh 'mvn clean install'
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

由于您能够成功地看到在提交时触发了自由式作业,因此我们确定GitHub已正确配置。现在,要解决声明性管道问题,您必须在管道代码中使用http://www.ocf.berkeley.edu/~wwu/cgi-bin/yabb/YaBB.cgi?board=riddles_cs;action=display;num=1316188034

例如,

pipeline {
    agent any

    triggers {
        // Instead of '* * * * *', you may use 'H/2 * * * *' which will check for source code changes every two minutes
        pollSCM '* * * * *'
    }

    stages {
        stage ('Echo') {
            steps {
                echo 'Hello, World!'
            }
        }
    }
}

注意:

  • 在作业配置的Build Triggers部分中,您 still 必须保持选中GitHub hook trigger for GITScm polling的复选框
  • 即使在上述设置之后,当我推送提交时,声明性管道作业也不会自动触发。当我手动完成一次工作时,此后一切正常。所有后续提交都触发了管道作业。 So, just manually trigger the job once and things should be fine
  • 还要记住,轮询是资源密集型的,因此使用它通常不是一个好主意。但是,在这种情况下,如果您使用的是GitHub,我不确定是否可以使用 GitHub Webhooks 以外的任何其他方式配置post-commit功能。遗憾的是,仅在启用GitHub Webhooks的情况下,pipeline的工作不会在没有triggers指令帮助的情况下触发。