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

How to run a git command with SSH key on jenkins using batch?

我的 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"

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

这很有效,当我使用 http link 而不是 SSH link 作为我的 repo

我还需要能够处理 SSH link。 为此,我研究了 SSH 私钥,结果发现 jenkins 凭证有一个特定的字段:SSH Username with private key

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

但是现在我在如何创建一个与上面使用 http link.

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

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

SSH URL 就像:

git@bitbucket.psr.io/scme/ci/ci.git

但您可能想要使用专用插件,例如 publish over SSH, which you can include in a pipeline

你的情况:

git remote set-url --push origin git@bitbucket.psr.io/scme/ci/ci.git

使用 SSH agent plugin

node {
  sshagent (credentials: ['myKey']) {
    sh 'git push git@bitbucket.psr.io/scme/ci/ci.git aTag'
  }
}

假设您有 ,作为名为“myKey”的条目。

使用withCredentials, as shown here, assuming Git 2.10+ for GIT_SSH_COMMAND

withCredentials([sshUserPrivateKey(credentialsId: "myKey", keyFileVariable: 'key')]) {
        //auth to git here then do some commands for example:
        sh 'git commmit -am "hello my commit message'
        sh 'GIT_SSH_COMMAND = "ssh -i $key"'
        sh 'git push git@bitbucket.psr.io/scme/ci/ci.git aTag'
    }