我有一个Git存储库,其中包含Jenkinsfile和其他源文件。我的Jenkins作业被配置为“SCM中的管道脚本”,它在Git存储库中运行Jenkinsfile。Jenkinsfile定义了一个脚本管道,该管道运行一个groovy脚本(从共享库“sampleLibrary”导入),该脚本扫描存储库中的源文件。
#!/usr/bin/env groovy
library identifier: '[email protected]', retriever: modernSCM([
$class: 'GitSCMSource',
remote: "https://git.google.com/sampleLibrary.git"
])
node('someWorker') {
stage('work') {
sampleGroovy()
}
}
字符串
现在,我必须创建一个单独的Git存储库来克隆源存储库,并运行groovy脚本来扫描存储库。
#!/usr/bin/env groovy
library identifier: '[email protected]', retriever: modernSCM([
$class: 'GitSCMSource',
credentialsId: '***',
remote: "https://git.google.com/sampleLibrary.git"
])
node('someWorker') {
stage('work') {
deleteDir()
checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: "master"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'https://git.google.com/scm/sourceRepo.git', credentialsId: '***']]]
sampleGroovy()
}
}
型
然而,groovy脚本并没有检测到被克隆到Jenkins工作区的源存储库。(即当我在Jenkinsfile中运行“ls”时,它不会列出Git存储库中的源文件),同时仍然能够运行扫描源文件的groovy脚本。因此,对于新的Jenkins作业,我必须将克隆的存储库放在原始Jenkins作业中存储源文件的位置。
当Jenkins脚本管道被配置为“来自SCM的管道脚本”时,Git源文件存储在哪里?
1条答案
按热度按时间bqujaahr1#
Jenkins在控制器上 checkout 管道源代码。它会进入作业工作区文件夹下的
@script
子文件夹。如果您为管道源选择“轻量级 checkout ”,它可能根本不会克隆整个仓库,只需获取管道源代码文件。