如何配置 Jenkins 2 管道,以便 Jenkinsfile 使用预定义的变量



我有几个使用Jenkinsfile的项目,这实际上是相同的。唯一的区别是它必须签出的 git 项目。这迫使我每个项目都有一个 Jenkinsfile,尽管它们可以共享同一个:

node{
    def mvnHome = tool 'M3'
    def artifactId
    def pomVersion
    stage('Commit Stage'){
        echo 'Downloading from Git...'
        git branch: 'develop', credentialsId: 'xxx', url: 'https://bitbucket.org/xxx/yyy.git'
        echo 'Building project and generating Docker image...'
        sh "${mvnHome}/bin/mvn clean install docker:build -DskipTests"
    ...

有没有办法在创建作业期间将 git 位置预配置为变量,以便我可以重用相同的 Jenkinsfile?

...
    stage('Commit Stage'){
        echo 'Downloading from Git...'
        git branch: 'develop', credentialsId: 'xxx', url: env.GIT_REPO_LOCATION
    ...

我知道我可以这样设置它:

此项目参数化 -> 字符串参数 -> GIT_REPO_LOCATION,默认 = http://xxxx,并使用 env 访问它。GIT_REPO_LOCATION。

缺点是用户被提议使用默认值开始构建或更改它。我需要它对用户是透明的。有没有办法做到这一点?

您可以使用 Pipeline Shared Groovy Library 插件拥有一个所有项目在 git 存储库中共享的库。在文档中,您可以详细阅读有关它的信息。

如果你有很多管道大多相似,全局变量机制提供了一个方便的工具,用于构建捕获相似性的更高级别的DSL。例如,所有 Jenkins 插件都以相同的方式构建和测试,因此我们可以编写一个名为 buildPlugin 的步骤:

// vars/buildPlugin.groovy
def call(body) {
    // evaluate the body block, and collect configuration into the object
    def config = [:]
    body.resolveStrategy = Closure.DELEGATE_FIRST
    body.delegate = config
    body()
    // now build, based on the configuration provided
    node {
        git url: "https://github.com/jenkinsci/${config.name}-plugin.git"
        sh "mvn install"
        mail to: "...", subject: "${config.name} plugin build", body: "..."
    }
}

假设脚本已作为全局共享库加载 或作为文件夹级共享库,生成的 Jenkinsfile 将是 简单得多:

Jenkinsfile (Scripted Pipeline(

buildPlugin {
    name = 'git'
}

该示例显示了 jenkinsfile 如何将 name = git 传递给库。我目前使用类似的设置,并且对此非常满意。

与其在每个 Git 存储库中都有一个 Jenkinsfile,

不如拥有一个额外的 git 存储库,从中获取通用的 Jenkinsfile - 这在使用管道类型作业并从 SCM 中选择管道脚本选项时有效。这样,Jenkins 在签出用户存储库之前会签出您拥有公共 Jenkinsfile 的存储库。

如果作业可以自动触发,您可以在每个 git 存储库中创建一个接收后钩子,该钩子以存储库作为参数调用 Jenkins 管道,这样用户就不必手动运行将存储库作为参数输入的作业 (GIT_REPO_LOCATION(。

如果作业无法自动触发,我能想到的最不烦人的方法是使用带有存储库列表的 Choice 参数而不是 String 参数

相关内容

  • 没有找到相关文章

最新更新