2

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

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

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

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

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 由 Multi Configuration 生成吗?

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

4

0 回答 0