Github push上的触发工作流程 - Pipeline插件 - Multibranch配置

时间:2016-03-03 19:58:49

标签: jenkins jenkins-workflow

我们正在为我们的CD使用具有多分支配置的管道插件。 我们检查了Jenkins文件,它可以使用git。

git url: "$url",credentialsId:'$credentials'

作业正常,但在将更改推送到github时不会自动触发。 我已正确设置GIT Web挂钩。

有趣的是,当我进入multibranch作业的一个分支并点击" View Configuration"时,我看到"当一个更改被推送到Github"未经检查。没有办法检查它,因为我无法修改作业的配置(因为它来自父级)并且父级中没有相同的选项。

任何想法如何解决这个问题?

7 个答案:

答案 0 :(得分:6)

对于声明式管道,请尝试:

pipeline {
    ...
    triggers {
        githubPush()
    }
    ...
}

对我来说,这启用了复选框“ GITScm轮询的GitHub挂钩触发器”,但实际上并不需要轮询。这需要GitHub插件。

答案 1 :(得分:5)

我找到了一种检查复选框的方法"将更改推送到Github"时构建。

这条线就行了:

properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('H/15 * * * *')])])

我认为需要进行民意调查以使其发挥作用。如果不需要民意调查会很好。

这是一个Jenkinsfile示例,实现了这个:

#!/usr/bin/env groovy

node ('master'){
    stage('Build and Test') {
        properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('H/15 * * * *')])])
        checkout scm
        env.PATH = "${tool 'Maven 3'}/bin:${env.PATH}"
        sh 'mvn clean package'
    }
}

答案 2 :(得分:1)

如果您使用Stash作为示例,您可以注册一个Post-Receive WebHook,您必须在其中插入您的URL表格Jenkins,如:http://jenkinsHost:9090/git/notifyCommit?url=ssh://git@gitHost:1234/test.git

在你的jenkins工作中,你必须至少设置Build触发器" Poll SCM"。 并设置例如5分钟的轮询时间。 这还可以为您的multibranch项目配置启用自动分支索引。

答案 3 :(得分:1)

使用轮询会增加延迟 - 构建开始所需的时间,从而完成回馈结果。

在我看来,基本的插件具有较低的抽象级别,所以我切换到Github Organization Folder插件,这取决于所有插件并设置组织挂钩以触发构建分支和/或拉请求。

答案 4 :(得分:1)

对于声明性管道,请尝试以下操作:

pipeline {
    agent any
    triggers {
        pollSCM('') //Empty quotes tells it to build on a push
    }
}

答案 5 :(得分:0)

在开始之前,我想强调一下,到目前为止我还没有Jenkins的经验,因此可能会有一堆更好的解决方案。

简而言之,我想要实现的目标:

  • 每次推送到Bitbucket repo(test2)后,在每个分支上,
    从同一个中拉出并构建另一个Bitbucket repo(test1) 分支名称和之后,使用test1作为
    生成test2 依赖性。

我是如何实现这一目标的?

  • 我开始使用类型' Multibranch Pipeline'
  • 开展新工作
  • 我将以下Jenkins文件添加到test2:



pipeline {
    agent any
    stages {
        stage('build') {
            steps {
                dir('test1') {
                    git branch: BRANCH_NAME, url: 'git@bitbucket.org:user/test1.git', credentialsId: 'credentials_id'
                }
                sh('build_process')
            }
        }
    }
}




  • 我遇到的问题是您无法为管道设置Bitbucket挂钩

  • 我向Jenkins添加了Bitbucket Branch Source Plugin

  • 我在分支来源'中选择了Bitbucket。在设置工作时

  • 我添加了凭据并勾选了自动注册webhook

  • 扫描多分支流水线触发器'如果不以其他方式运行,我会勾选一个复选标记,间隔为1分钟

  • 我在我的Bitbucket仓库中添加了一个webhook

  • 我更新了所有插件,重新启动了Jenkins并准备好了

我安装的其他插件:Bitbucket Plugin,Pipeline插件。希望这对某些人有帮助,在没有Bitbucket Branch Source插件的情况下经过几个小时的努力,我确实设法解决了这个问题。

答案 6 :(得分:-2)

node{
stage('Build and Test') {
    properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('* * * * *')])])
    checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxx-xxx-xxxx[your credentails Id]', url: 'https://github.com/git']]])
    echo 'Build and Test has been done'
}

}