我在脚本化的Jenkins管道中有一个sh
步骤,依次要求git通过SSH(这是一个处理GitHub上托管的依赖项的依赖项管理系统)来克隆私有GitHub存储库的步骤。管道本身是通过GitHub Organization Plugin执行的。它包含一个checkout scm
命令,该命令也访问一个私有存储库,从日志中我看到它利用GIT_SSH
环境变量将登录信息传递到该步骤(可以正常工作)。有没有办法将相同的信息也传递到另一个步骤,即我的sh "install_dependencies.sh"
步骤?请注意,withCredentials
将使我可以通过环境变量访问凭据,但是如何将它们传递给git? GIT_SSH
是ssh包装脚本的路径,我不知道该如何使用withCredentials
生成。还有另一种通过环境变量将凭据传递给git的方法吗?
最小的Jenkinsfile
如下所示:
node {
checkout scm // successfully accesses github credentials
withCredentials([
// what to put here?
]) {
// install python dependencies
sh 'pip install -r requirements.txt'
}
sh 'pytest'
}
文件requirements.txt
列出了相关性,其中包含一行格式
-e git+ssh://git@github.com/some_private/repo@dev#egg=egg_name
指示pip
通过git
获取需求。
可能可以使用另一个Jenkins checkout scm
步骤来手动检出代码,然后从Jenkinsfile中安装它。但是,这将使requirements.txt
成为需求的唯一事实来源的目的无法实现。
答案 0 :(得分:0)
我刚刚找到了问题,根据文档,对我有用的是
withCredentials([sshUserPrivateKey(credentialsId: 'Credential-id', keyFileVariable: 'CERT')]) {
sh 'cp -prf $CERT ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa'
}
这会将证书从其位置复制到本地docker证书存储区。 这比我在进行依赖项拉取时可以克隆