1

我有一个 SpringBoot API 应用程序,它在 CI/CD 的 Jenkins 管道中配置。该过程是使用当前驻留在源代码库根目录中的 Jenkinsfile 定义的。现在需要将此 Jenkinsfile 移动到将存储库与源存储库分开。这是我的管道的 SCM 和构建配置的当前设置的图像。

在此处输入图像描述

请注意,Build Configuration的 Mode 下拉列表仅提供“by Jenkinsfile”选项。我怎样才能做到这一点?任何答案、想法或建议将不胜感激。

请注意,我是 Jenkins 配置的新手。因此,如果有人可以提供代码片段或示例要点,我们将不胜感激。

谢谢

4

3 回答 3

1

您所要做的就是创建一个包含Jenkinsfile. 然后你必须改变你的工作才能Jenkinsfile从新的存储库中获取。

然后您必须编辑您的管道以从源所在的旧存储库中获取源:

checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], gitTool: 'Default', submoduleCfg: [], userRemoteConfigs: [[url: 'ssh://git@git-pull-url']]])

您可以在此处生成此代码和平:

<your.jenkins.url>/jenkins/job/<your-pipeline-job>/pipeline-syntax/

然后选择checkout: Check out from version control作为示例步骤。

于 2020-01-17T14:41:35.007 回答
1

Jenkinsfile您可以为下设置存储库 URL Advanced Project Options -> Pipeline -> Definition -> SCM -> Repositories -> Repository URL。您可以在此处指定不同的存储库。

于 2020-01-17T05:37:21.017 回答
0

我想出了一种将 Jenkins 管道与 Jenkinsfile 分开并从 Jenkinsfile 传递项目特定参数的方法

然后 Jenkinsfile 看起来像这样,

#!groovy

def args = [
        appName: 'app-name',
        appSpace: 'app-space',
        jenkinsSlavelabel: 'jenkinsSlavelabel'
]

node('jenkinsSlaveLabel') {
    deleteDir()

    checkout scm

    def jenkinsBuilder = fileLoader.fromGit('groovy-file-name.groovy', 'git-url', 'branch-filter', 'git-repo-credentials-id', 'jenkinsSlavelabel')
    jenkinsBuilder(args)
}
于 2020-02-26T02:56:47.293 回答