一尘不染

Jenkins管道git命令子模块更新

jenkins

我想更新git clone上的子模块。

有没有办法用詹金斯管道Git命令来做到这一点?

目前我正在这样做…

git branch: 'master',
    credentialsId: 'bitbucket',
    url: 'ssh://bitbucket.org/hello.git'

但是,一旦克隆,它就不会更新子模块


阅读 590

收藏
2020-07-25

共1个答案

一尘不染

使用当前的Git插件,您甚至不需要它。

GIT插件支持带有子模块的存储库,而子模块本身又具有子模块。
但是,必须将其打开:

在“作业配置”->“源代码管理”,“ Git”->“高级按钮”(在要构建的分支下)->“递归更新”子模块中

但是OP正在使用管道。

因此,一个简单的第一步就足够了:

git submodule update --init --recursive

但是,OP添加了:

是的,但是如果我正在使用sh 'git submodule update --init --recursive',这会$HOME/id_rsa正确吗?如果可能,我想为此命令传递私钥。

可能的是:在Pipeline语法中,您可以定义环境变量
这意味着您可以设置GIT_SSH_COMMAND(使用Git2.10+)。
这样您就可以引用自己的私钥。

pipeline {
    agent any

    environment {
        GIT_SSH_COMMAND = 'ssh -i /path/to/my/private/key'
    }

    stages {
        stage('Build') {
            steps {
                sh 'printenv'
                sh 'git submodule update --init --recursive'
            }
        }
    }
}

如果任何克隆涉及ssh url,则该ssh克隆将使用正确的私钥。

2020-07-25