繁体   English   中英

Jenkins PollScm用于特定存储库

[英]Jenkins PollScm for specific repository

我想使用两个Git存储库构建一个项目。 其中一个包含源代码,而另一个包含构建和部署脚本。

我正在使用Jenkins管道来构建我的项目。 管道脚本位于Jenkins管道存储库中,而源代码位于中间件存储库中。 由于我的管道脚本位于Jenkins-管道存储库中,因此我使用来自Jenkins-管道存储库的Jenkinsfile配置管道。

这是我正在使用的Jenkins文件:

pipeline {
agent any
parameters {
    string(name: 'repo_branch', defaultValue: 'development', description: 'The branch to be checked out')
    string(name: 'git_repo',  defaultValue: 'ssh://git@my-server.com/middleware.git' description: 'Git repository from where we are going to checkout the code')

}
options {

    buildDiscarder(logRotator(numToKeepStr: '5'))
    disableConcurrentBuilds()
    timeout(time: 10, unit: 'MINUTES')
}
triggers {
    pollSCM('* * * * *')
}
stages {
    stage('Checkout git repo') {
        steps {
            git branch: "${params.repo_branch}", url: "${params.git_repo}", credentialsId: 'git-credentials'
        }
    }
    stage('Build binary') {
        steps {
            sh "./gradlew clean build -x test"
        }
    }
}
}

现在,正如我们所看到的,我在Jenkinsfile中克隆的存储库是不同的,而我保留jenkinsfile的存储库是不同的。

现在的问题是:
在Jenkins文件中,只要存储库中有新的提交,我就使用pollScm触发我的Jenkins作业,但是我已经为该作业配置了两个存储库,因此

  1. 源代码存储库(middleware.git)
  2. 管道脚本存储库(Jenkins-pipeline.git)

因此,只要这些存储库中的任何一个提交,我的Jenkins工作都会被触发,这是我不想要的! 我想仅在源代码存储库中有新提交时才触发我的Jenkins构建,并且在Jenkins-管道存储库中有提交时不应该触发构建。 我怎么做?

更新

我在Jenkinsfile中使用共享库,这些库也位于另一个存储库中。 当我在共享库存储库中提交某些内容时,也会触发Jenkins作业,并且我在多个作业中使用共享库,因此,所有的作业都被触发了,这是我不想要的。

PS:由于我的Jenkins在专用网络中,因此我无法使用webhook来触发我的Jenkins构建!

答案很简单。 Jenkinsfile始终属于源代码存储库的根目录。 您必须将Jenkinsfile签入中间件存储库。

管道支持两种语法:声明式(在管道2.5中引入)和脚本化管道。 两者都支持建立连续的交付管道。 两者都可以用于在Web UI或Jenkinsfile中定义管道,尽管通常认为创建Jenkinsfile并将文件检入源代码控制存储库是最佳做法。

更新 - 跳过共享库触发器

自2.9版的管道共享Groovy库插件开始,存在禁用变更日志的选项:

@Library(value="mylib", changelog=false) 

要使库不包含在更改检查中,请取消选中相关库的“系统配置”页面中的“在作业最新更改中包括@Library更改”复选框,或在其中设置新的可能参数“ changelog = false”管道“ @Library”指令。

对于不包含在“ pull scm”中的管道本身,它会比较棘手。 一种选择是将Jenkinsfile包含在代码存储库中,但是如果Jenkinsfile本身将被更改,那么也会触发构建,因此并不需要它。

另一个选择是,在管道的开始部分中检查触发该作业的更改是在源存储库中还是在管道存储库中,如果不在源存储库中,则停止构建。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM