git凭据为sh,蝙蝠和powershell绑定

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

地位:积极的

团队

细节

抽象的

允许詹金斯管必威国际有限公司道用户运行经过验证的Git命令在SH,蝙蝠,和PowerShell。

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

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

理由

詹金斯g必威国际有限公司it的插件使用詹金斯凭据来获取信息库并检出一个分支自由泳,管道和多分支管道的工作。它也可以使用詹金斯凭据推标签和提交从自由泳作业必威国际有限公司中备份到存储库。它支持广泛的命令行版本的Git的,从Git的1.8.3版本(CentOS 7)通过命令行的git(2.30.0,Debian的测试,窗户,...)的当前版本。它支持具有和不具有用于密码短语SSH协议验证和支撑用户名和密码或API令​​牌https协议认证SSH私钥。

git的插件是无法从管道作业或管道多分支推动工作标签或提交。它是不是能够执行需要像远程分支创建或删除认证等git的操作。git的插件也没有提供身份验证访问所有与最新版本的命令行的git所提供的命令行选项。例如,在Git插件可用于不支持- single-branch.选择或者--recurse,子模块选项。

随着git的凭证装订,管道用户将能够从管道的工作推动合并结果,提交和标记。他们将能够创建和删除远程分支机构。他们将能够使用自己选择的git的命令行选项,其中包括- single-branch.--recurse,子模块。用户将能够在不修改git的插件运行在他们的詹金斯管道认证Git命令。必威国际有限公司

执行

两个都gitUsernamePasswordgitsshprivatekey.绑定依赖于凭据插件使用凭据API检索用户的凭据。

凭据绑定插件用于绑定GIT中特定的环境变量与脚本(肩峰,蝙蝠,的powershell),这取决于安装在其上用于执行需要认证的git操作系统中的电流CLI-git的版本/终端的命令。

绑定仅为命令行Git实现提供身份验证支持。git客户端插件中的其他git实现如jgit.JGIT使用Apache HTTP客户端不受支持。用户提供了上面列出了所有针对Git工具实现CLI-的Git在詹金斯配置保管箱必威国际有限公司全局系统配置

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

笔记

如果没有CLI-的Git Git的实现工具是可用全局系统配置那么在默认情况下JGit实现的Git工具将被使用。

git用户名和密码绑定

gitUsernamePassword实现使用通过凭据API检索的詹金斯的用户名和密码必威国际有限公司值,来访问远程仓库过http.协议。绑定使用git_askpass.环境变量以提供一个git操作流水线作业/自由泳项目要求的凭证。可执行的脚本(肩峰,蝙蝠,的powershell)附连/结合至git_askpass.可变的,当被问及通过HTTP服务器的用户的凭据被调用。

流水线作业

使用Git用户名和密码在流水线作业绑定

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

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

Git的用户名和自由式项目密码
两个可变绑定git_username.GIT_PASSWORD分别提供的用户名和密码。这些变量绑定使用的时候也可以访问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插件- 提供一个传递依赖即阿帕奇SSHD核V2.7.0,它支持的OpenSSH / RFC4716的解密格式化私钥。

加密算法的支持

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

    • RSA

    • DSA.

    • ecdsa.

    • ED25519

私钥解密

Packphrase受保护的私钥需要在它用于执行Git认证操作之前解密s协议,如果没有则解密的提示被显示给请求的私有密钥的口令的用户在当前的工作/项目,因为该密码由用户通过詹金斯已经提供这是不期望的行为正在使用必威国际有限公司凭据插件

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

流水线作业

在流水线作业中使用Git的SSH私钥

Git的SSH私钥流水线作业
自由式项目

使用Git SSH私钥绑定在自由泳项目

Git SSH私钥在Freestyle项目中
笔记

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

工作时间

每周两次办公时间安排每个星期三和星期五下午2:00 UTC,定期会议说明可供任何人阅读。

链接