使用凭据签出Jenkins文件中的git子模块的git repo
我的Jenkins文件中有一个阶段如下所示:使用凭据签出Jenkins文件中的git子模块的git repo,git,jenkins-pipeline,git-submodules,Git,Jenkins Pipeline,Git Submodules,我的Jenkins文件中有一个阶段如下所示: stage('Pull Source Code') { steps { script { git branch: "master", credentialsId: 'myCredentialId', url: "${GIT_URL}" } sh 'git submodule update --
stage('Pull Source Code') {
steps {
script {
git branch: "master",
credentialsId: 'myCredentialId',
url: "${GIT_URL}"
}
sh 'git submodule update --recursive'
}
}
我想为git git子模块更新步骤提供凭据,因为它会出现以下错误:
+ git submodule update --recursive
Cloning into 'submodule-destination-folder'...
fatal: could not read Username for 'https://tfsgit.mycompany.com': No such device or address
fatal: clone of 'https://tfsgit.mycompany.com/submodule-repo' into submodule path 'submodule-destination-folder' failed
有没有办法向git子模块更新提供Jenkins凭据?其中一种方法是在UI中使用“高级子模块行为” 在Jenkins文件中有下面的代码
stage('Pull Source Code') {
steps {
checkout scm
}
}
您可以这样做:
stage('Pull Source Code') {
steps {
script {
git branch: "master",
credentialsId: 'myCredentialId',
url: "${GIT_URL}"
}
def submodulesList = sh(script:"git submodule init", returnStdout:true).split("\n")
for (String submodule : submodulesList) {
def submoduleName = submodule.split("'")[1]
def submoduleGitRepoUrl = submodule.split("\\(")[1].split("\\)")[0]
dir(submoduleName){
git url: submoduleGitRepoUrl, branch: "master", credentialsId: 'myCredentialId'
}
}
}
}