如何使用Jenkins Pipeline插件启用SCM轮询

时间:2016-03-04 20:05:11

标签: docker jenkins jenkins-pipeline

这是与How to make SCM polling work with the Jenkins Workflow plugin相关的问题。该线程回答了如何在管道脚本中使用SCM轮询一旦 SCM轮询已启用但未涵盖如何启用 SCM轮询。

例如,如果您想使用mulit-branch pipeline plugin使用Jenkins文件自动创建作业,我不知道在作业中启用“轮询SCM”选项。这使得难以配置按需环境,例如创建从头开始设置作业的docker容器。因为您必须登录Jenkins并转到配置并在容器启动后选择“Poll SCM”选项。 Cloudbees提供template plugin来帮助解决此问题。

然而,Jenkins无法使用免费版本。在Jenkins的免费版本上有没有针对用户的解决方法或解决方案?

4 个答案:

答案 0 :(得分:21)

  

如果您想使用多分支管道插件使用Jenkins文件自动创建作业,我不知道在作业中启用“轮询SCM”选项

也不需要。 Multibranch项目具有可配置的轮询间隔,用于整个分支索引,也可用作每个分支构建触发器,并且还将自动接收webhook。

答案 1 :(得分:10)

要回答如何启用SCM轮询的问题,您需要执行以下操作。

使用Pipeline语法生成器和“属性:设置作业属性”,您可以生成以下内容,以启用SCM轮询。

properties([pipelineTriggers([pollSCM('H * * * *')])])

然而,正如Jesse Glick指出Multibranch管道一样,您不需要启用SCM轮询。

答案 2 :(得分:2)

我正在考虑同样的问题。

如果您使用的是GithubBitbucket等在线Git服务,我认为您可以使用他们的Webhooks功能来解决此问题。我还没有能够测试解决方案,但它应该工作。

Multibranch Pipeline配置中,启用Trigger builds remotely选项。

然后,您需要使用路径(如Jenkins配置描述中所述)在您的存储库上启用Github / Bitbucket Webhook:JENKINS_URL/job/test/build?token=TOKEN_NAME

答案 3 :(得分:0)

为了使我的Bitbucket连接到Web挂钩,我必须在声明性管道中添加以下内容:

pipeline {
    stages {
        stage('Initialize') {
            steps {
                //enable remote triggers
                script {
                    properties([pipelineTriggers([pollSCM('')])])
                }
                //define scm connection for polling
                git branch: BRANCH_NAME, credentialsId: 'my-credentials', url: 'ssh://git@stash.server.fqdn/stash/my-project.git'
            }
        }
    }
}

这允许重建分支,而无需扫描整个 multibranchiverse 。当使用Bitbucket Project / Github Team-multibranch项目时,这特别有价值。一旦您有几个回购/分支,扫描可能需要几分钟。

通过直接挂钩,您可以更快地获得构建结果,并且没有任何副作用。

注意:在声明性管道中,必须使用脚本块包装属性调用。