如何使用Jenkins多配置进行微服务构建流程?

问题描述

作为背景,我们有近 20 个微服务,每个服务都有自己的 Jenkinsfile。尽管每个微服务可能会在其构建中执行一些额外的步骤,例如构建额外的 docker 镜像,但这些步骤中的大部分在所有微服务中都是相同的,唯一不同的是每个步骤的参数,例如存储库路径等。

现在看看 Jenkins 的多配置项目,拥有其中一项工作并将构建步骤应用于所有这些项目似乎是完美的。但是,我有一些疑问:

  • 我们能否使用多配置为每个微服务创建多分支作业?
  • 当多配置生成通用步骤时,我们是否能够支持每个微服务可能具有的额外步骤?

为了更清楚,让我举个例子。

micro-service-one:
|__ Jenkinsfile
   |___ { step1: maven build
          step2: docker build
          step3: docker build (extra Dockerfile)
        }

micro-service-two:
|__ Jenkinsfile
   |___ { step1: maven build
          step2: docker build
        }

现在我想的是我的多配置看起来像这样:

轴:

name: micro-service-one micro-service-two
docker_repo: myrepo.com/micro-service-one myrepo.com/micro-service-two

DSL 脚本:

multibranchPipelineJob("folder-build/${name}") {
    branchSources {
        git {
            id = 'bitbucket-${name}'
            remote('git@bitbucket.org:myproject/${name}.git')
            credentialsId("some_cred_id")
        }
    }
    orphanedItemStrategy {
        discardOldItems {
            daysToKeep(2)
            numToKeep(10)
        }
        defaultOrphanedItemStrategy {
            pruneDeadBranches(true)
            daysToKeepStr("2")
            numToKeepStr("10")
        }
    }
    triggers {
        periodic(5)
    }
}

但我不确定如何为每个应用程序使用 Jenkinsfile 中的轴变量?甚至可以让多配置生成 Jenkinsfile 吗?

注意:你可能会问我为什么需要这个。要回答这个问题,就是减少我们花在修改或更新这些 Jenkinsfiles 上的时间。当需要更改时,我们需要检查近 20 个或更多存储库,并随着环境的发展和需要的新功能或修复程序一一修改

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)