sh、bat和powershell的Git凭据绑定

目标:从Jenkins管道允许更多的Git灵活性必威国际有限公司

地位:积极的

团队

细节

抽象的

允许Jenk必威国际有限公司ins管道用户在sh、bat和powershell中运行经过身份验证的git命令。

该项目的想法建议实现两个新的凭据绑定,将文件和环境变量贡献为SH,BAT和PowerShell步骤,以便它们可以使用命令行Git来执行经过身份验证的操作。请求支持对经过身份验证的GIT操作(Jenkins-28335)的JIRA问题是最高投票的Jenkins增强请求之一。必威国际有限公司

这两个凭据绑定将是gitsshprivatekey.GitUserName密码.它们将在Git插件中实现,自动测试以确认绑定在GIT插件支持的广泛命令行Git版本和操作系统上表现在预期。

根本原因

Jenk必威国际有限公司ins git插件使用Jenkins凭据获取存储库并签出分支以执行自由式、管道和多分支管道作业。它还能够使用Jenkins凭据从自由式作业推送标记并提交回存储库。它支持范围广泛的命令行git版本,从git 1.8.3(CentOS 7)到当前发布的命令行git(2.30.0、Debian测试、Windows等)。它支持ssh协议身份验证的ssh私钥(带或不带密码),并支持用于https协议身份验证的用户名、密码或API令牌。

git插件无法从管道作业或多分支管道作业推送标记或提交。它无法执行其他需要身份验证的git操作,如远程分支创建或删除。git插件也不提供对最新版本的命令行git提供的所有命令行选项的身份验证访问。例如,git插件中不支持- single-branch.选择或者--递归子模选项。

使用git凭据绑定,管道用户将能够从管道作业推送合并结果、提交和标记。他们将能够创建和删除远程分支。他们将能够使用自己选择的git命令行选项,包括- single-branch.--递归子模。用户将能够在Jenkins管道中运行经过身份验证的git命令,而无需修改git插件。必威国际有限公司

执行

两个都GitUserName密码gitsshprivatekey.绑定依赖于凭证插件使用凭据API检索用户的凭证。

这个凭据绑定插件用于使用脚本(sh、bat、powershell)/终端命令绑定特定于Git的环境变量,具体取决于系统上安装的当前CLI Git版本,该系统用于执行需要身份验证的Git操作。

绑定仅为命令行Git实现提供身份验证支持。git客户端插件中的其他git实现如jgit.JGIT使用Apache HTTP客户端不支持。为用户提供了一个dropbox,其中列出了Jenkins中配置的CLI Git的所有Git工具实现必威国际有限公司全局系统配置.

两个绑定代表用户都代表用户提供Git身份验证支持,如果将凭据传递给命令行git,则不复杂的步骤。

笔记

如果中没有CLI Git实现的Git工具可用全局系统配置默认情况下,将使用JGit实现的Git工具。

git用户名和密码绑定

这个GitUserName密码实现使用通过凭证API检索的Jenkins用户名必威国际有限公司和密码值通过网络访问远程存储库超文本传输协议协议。绑定使用git_askpass.环境变量提供管道作业/自由式项目中git操作请求的凭据。可执行脚本(sh、bat、powershell)已附加/绑定到git_askpass.变量,HTTP服务器在请求用户凭据时调用该变量。

管道作业

在管道作业中使用Git用户名和密码绑定

在管道作业中git用户名和密码
自由式项目

在Freestyle-Project中使用Git用户名和密码绑定

FreeStyle项目中的Git用户名和密码
两个可变绑定git_username.GIT_密码分别提供用户名和密码。使用时也可以访问这些变量绑定JGIT / JGIT使用Apache HTTP客户端Freestyle项目和管道作业中的Git-Tool实现。

Git-SSH私钥绑定

这个gitsshprivatekey.实现提供Git身份验证支持s协议使用用户的私钥和密码凭据。绑定根据最小CLI-Git版本使用两个Git特定环境变量

  • git_ssh_command.- 如果版本大于或等于2.3,则Git_ssh_command环境变量提供了SSH命令,包括必要的选项:私钥和主机密钥检查的路径,要在不使用可执行脚本的情况下验证和连接到Git服务器。

  • SSH_ASKPASS- 如果版本小于2.3,则将可执行脚本连接到可变的变量,该变量提供包括必要选项的SSH命令:私钥和主机密钥检查的路径,以进行身份​​验证和连接到Git服务器

支持私钥格式

  • 通过Jenkins插件支持以下关键格式必威国际有限公司

    • Bouncycastle API插件- 支持PKCS#8 PEM编码和PEM私钥的解密。

    • SSHD插件-提供一个可传递的依赖项,即Apache SSHD Core v2.7.0,它支持对OpenSSH/RFC4716格式的私钥进行解密。

对加密算法的支持

  • 以上讨论的各种格式支持以下加密算法

    • RSA

    • DSA.

    • ecdsa.

    • ED25519

私钥解密

Packphrase受保护的私钥需要在它用于执行Git认证操作之前解密s协议,如果未解密,则会向用户显示提示,询问当前作业/项目中使用的私钥的密码短语,这不是预期的行为,因为该密码短语已由用户通过Jenkins提供必威国际有限公司凭证插件.

为了解决这个问题,使用BouncyCastle API插件和SSHD插件来为上述各种私有格式提供解密支持。

管道作业

在管道作业中使用Git SSH私钥

管道作业中的Git SSH私钥
自由式项目

在FreeStyle项目中使用Git SSH私钥绑定

Git SSH私钥在Freestyle项目中
笔记

与GitusernAmePassword绑定不同,GitsshprivateKey绑定不支持变量绑定。

工作时间

办公时间安排为每周三和周五2:00 UTC,每周两次,定期会议记录可供任何人阅读。

链接