我正在编写一个Jenkins声明性管道,该管道将合并一个仓库中的分支(在我的示例中为Test)到另一个仓库中的分支(在我的示例中为TestDownStream)。但是,我遇到了一个问题,其中Git卡在了获取步骤上(使用凭据的git checkout可以正常工作)。我将我的git帐户的凭据存储在Jenkin的凭据管理器中。我的代码如下:
pipeline{
agent any
stages{
stage("Source Control CheckOut"){
steps{
echo "Pulling from Source Control"
git (branch: 'master',
credentialsId: 'JenkinsGit',
url: 'http://testgit.company.com/JenkinsGit/TestDownStream.git')
bat 'git remote add Test http://testgit.company.com/MyRepo/Test.git'
bat 'git fetch Test'
bat 'git merge Test/master'
bat 'git push'
bat 'git remote rm Test'
}
}
}
}
我的猜测是,获取操作是在Jenkins服务帐户下运行的,而不是ID JenkinsGit指定的凭据。有没有办法使所有批处理命令都可以与上述示例中的git checkout命令在相同的凭据(JenkinsGit)下运行?
此外,如果我尝试将git remote add命令的任何错误重定向到nul,构建仍然会失败,并显示错误“脚本返回退出代码128”。日志没有显示任何错误。 git remote add命令如下:
bat 'git remote add Test http://testgit.company.com:3000/MyRepo/Test.git 2> nul'
Jenkins服务器正在Windows上运行。