推送Bitbucket服务器后触发管道

时间:2019-05-07 14:50:42

标签: jenkins jenkins-pipeline bitbucket

我正在基于jenkins上的管道创建此新Job。我希望我的jenkinsfile位于bitbucket仓库中:假设我的配置文件位于bitbucket.org/config.git

工作任务是干净安装项目bitbucket.org/myProject.git

如何配置管道,以便在bitbucket.org/myProject.git中进行任何推送并遵循bitbucket.org/config.git中定义的步骤时触发它?

我不想创建多分支管道,也不想让我的jenkins文件与要编译的项目位于同一存储库中。

我当前的配置是:

pipeline {
    agent any
    parameters {
        string(defaultValue: '', description: 'URL', name: 'GIT_URL')
        string(defaultValue: '', description: 'Credential', name: 'CREDENTIAL_ID')
    }

    stages {
        stage ('Initialize') {
            steps {
                git branch: 'develop', credentialsId: "${params.CREDENTIAL_ID}", url:                     "${params.GIT_URL}"
            }
        }

        stage ('Build') {
            steps {
                sh 'mvn clean install '
                echo 'build'
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您可以在Jenkins中使用共享库。您的代码中仍然需要一个Jenkinsfile,但这将不包含任何逻辑。它只会引用共享库并传递git repo path之类的任何参数。

有关共享库的更多信息,请参考此链接https://jenkins.io/doc/book/pipeline/shared-libraries/

要触发构建,可以在管道中定义一个触发器。示例:

triggers {
      pollSCM('H/5 * * * *')
} 

或如果不想轮询则使用webhooks。

答案 1 :(得分:0)

实际上,我设法使其正常运行。 在我的詹金斯管道中,我激活了“将更改推送到BitBucket时进行构建”。

    node {
    checkout([$class: 'GitSCM', 
    branches: [[name: 'feature/test-b']], 
    doGenerateSubmoduleConfigurations: false, 
    extensions: [[$class: 'SubmoduleOption', disableSubmodules: false, 
    parentCredentials: false, recursiveSubmodules: true, reference: '', 
    trackingSubmodules: false]], submoduleCfg: [], 
    userRemoteConfigs: [[credentialsId: 'admin', 
    url: 'http://localhost:7990/scm/bout/boutique-a.git']]])
    }

当在“功能/测试-b”分支中的Boutique-a中进行更改时,我的工作被触发,这很酷。

现在我有另一个问题,在功能/ * 中进行更改时如何触发 好像我不在多分支管道中时,我无法访问env.BRANCH_NAME