如何使用批处理在 jenkins 上运行带有 SSH 密钥的 git 命令?

Ely*_*ian 4 git ssh batch-file jenkins

我有一个在我的詹金斯管道上运行的bat脚本。

它用于标记我的分支的特定提交,并将其推送回 git。看起来像这样:

"scriptCommand": https://%C_USERNAME%:%C_PASSWORD%@bitbucket.psr.io/scme/ci/ci.git\ngit push origin TAG1\ngit remote set-url --push origin https://bitbucket..psr.io/scme/ci/ci.git"
Run Code Online (Sandbox Code Playgroud)

该命令是使用变量 C_USERNAME、C_PASSWORD 和 TAG1 进行的。前两个取自 usernamePassword 类型的 jenkins 凭证,并注入到字符串中,TAG1 是一个 simple 字符串,应该用于标记我的 git 分支

当我为我的存储库使用 http 链接而不是 SSH 链接时,这是有效的

我还需要能够处理 SSH 链接。为此,我研究了 SSH 私钥,结果发现 jenkins 凭证有一个特定的字段:带有私钥的 SSH 用户名

我使用我的私钥和用户名在詹金斯中创建了一个这样的凭证

但现在我在如何创建一个与上面带有 http 链接的批处理行相同的批处理行时遇到了麻烦。

不用说,我在这件事上的经验是0。

有人可以帮我解决这个问题吗?感谢您抽出时间。

Von*_*onC 5

SSH URL 类似于:

git@bitbucket.psr.io/scme/ci/ci.git
Run Code Online (Sandbox Code Playgroud)

但您可能想使用专用插件,例如通过 SSH 发布,您可以将其包含在管道中

在你的情况下:

git remote set-url --push origin git@bitbucket.psr.io/scme/ci/ci.git
Run Code Online (Sandbox Code Playgroud)

使用SSH 代理插件

git@bitbucket.psr.io/scme/ci/ci.git
Run Code Online (Sandbox Code Playgroud)

假设您已在 Jenkins 全局凭证(无限制)中将您的私钥注册为名为“ ”的条目myKey

使用withCredentials,如下所示,假设Git 2.10+GIT_SSH_COMMAND

git remote set-url --push origin git@bitbucket.psr.io/scme/ci/ci.git
Run Code Online (Sandbox Code Playgroud)