我有一个 SpringBoot API 应用程序,它在 Jenkins 管道中配置为 CI/CD。 该流程是使用 Jenkinsfile 定义的,该文件当前位于源存储库的根目录中。 现在需要将此 Jenkinsfile 移至源存储库中的单独存储库。这是我的管道 SCM 和构建配置的当前设置的图像:
请注意,Build Configuration的模式下拉列表仅提供“by Jenkinsfile”选项。我怎样才能实现这个目标?
请注意,我是 Jenkins 配置的新手。因此,如果有人可以提供代码片段或示例要点,我们将不胜感激。
您所要做的就是创建一个包含
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
作为示例步骤。
您可以在
Jenkinsfile
下设置Advanced Project Options -> Pipeline -> Definition -> SCM -> Repositories -> Repository URL
的存储库URL。您可以在此处指定不同的存储库。
我找到了一种将 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)
}