在我的Jenkins管道工作中,我通常在工作开始时就克隆git repo
cleanWs()
git branch: 'master', credentialsId: 'SSH_GIT', url: 'git@myserver.com:myrepo'
请注意,我需要凭据。
为了减少执行时间和减少数据下载量,我想使用git archive
代替git clone
。
sh("git archive --format=tar --remote git@myserver.com:myrepo master |tar xf -")
如果我完成了正确的ssh-key配置,则先前的命令有效。我的服务器上不是这种情况,因此我需要使用凭据。
如何使用Jenkins定义的凭证归档而不是克隆存储库? Git安装在gitolite服务器上
答案 0 :(得分:0)
没有一种简单的方法可以在自动化脚本中为ssh
使用用户名和密码。 OpenSSH仅在TTY上提示输入用户名和密码,除非您使用expect
之类的东西,否则您不会在自动脚本中输入用户名和密码。而且,即使您可以执行此操作,大多数Git服务器也只会接受SSH密钥以通过SSH进行身份验证。
您尚未说明正在使用的Git服务器,因此我无法提供更多有用的详细信息,但您的选择实际上是使用SSH密钥或使用必须访问的HTTPS API接口的凭据。您的Git服务器获取存档供您使用。例如,如果您使用GitHub或GitHub Enterprise,则有an API URL to fetch tarballs。
或者,您可以尝试浅表克隆(例如git clone --depth 1
)。如果要托管自己的Git服务器实例,请注意,尽管浅克隆可能会占用大量计算资源,所以如果您使用大量克隆,则可能最终对实例进行DoSing。
答案 1 :(得分:0)
解决方案是在Jenkins Pipeline中使用共享功能
sshagent(['SSH_JENKINS_CREDENTIALS_FOR_GIT']) {
sh("git archive --format=tar --remote git@myserver.com:myrepo master |tar xf -")
}