Jenkins CI/CD - 将 Jenkinsfile 保存在我想要构建的单独存储库中

问题描述 投票:0回答:3

我有一个 SpringBoot API 应用程序,它在 Jenkins 管道中配置为 CI/CD。 该流程是使用 Jenkinsfile 定义的,该文件当前位于源存储库的根目录中。 现在需要将此 Jenkinsfile 移至源存储库中的单独存储库。这是我的管道 SCM 和构建配置的当前设置的图像:

请注意,Build Configuration的模式下拉列表仅提供“by Jenkinsfile”选项。我怎样才能实现这个目标?

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

git jenkins continuous-integration jenkins-pipeline multiple-repositories
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
作为示例步骤。


0
投票

您可以在

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


0
投票

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

然后 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)
}
© www.soinside.com 2019 - 2024. All rights reserved.