当前位置: 首页 > 面试题库 >

Jenkins管道git命令子模块更新

廉宇
2023-03-14
问题内容

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

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

目前我正在这样做…

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

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


问题答案:

使用当前的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克隆将使用正确的私钥。



 类似资料:
  • 问题内容: 我正在使用Jenkins的“高级子模块行为”,并选中了“递归更新子模块”选项。但是我只能在旧版本中获得子模块。我希望始终拥有子模块的总修订版。我在“高级子模块行为”中找到了另一个选项,称为“将跟踪子模块更新到分支的尖端”。这似乎使用 –remote选项。这样可以解决问题吗? 有任何想法吗? 问题答案: 根据子模块的文档页面,似乎应该可以正常工作。您需要具有git 1.8.2或更高版本。

  • 问题内容: 我有一个git repo,其中有一个子模块。两者都属于BitBucket上的团队。我的jenkins机器是带有git插件的AWS Windows服务器。我正在使用SSH密钥进行身份验证。我有三个詹金斯工作。一个克隆主仓库。这是成功的。一个将自己克隆第二个存储库(该存储库将用作子模块)。这也是成功的。在我的第三个构建工作中,我告诉jenkins递归更新子模块。这将失败并显示公钥错误。如果

  • 问题内容: 我在詹金斯的一个项目中有一个子模块。我已启用高级设置以递归方式更新子模块。 运行构建时,我看到工作空间中包含子模块中的文件。问题是,这似乎是子模块的第一个修订版。当我推送更改(托管在GitHub上的存储库)时,Jenkins似乎没有更新子模块以获取正确的更改。有人看过吗? 问题答案: 看来我找到了解决方案: 我添加了一个构建步骤来执行以下shell命令:

  • 问题内容: 在groovy脚本中(用于jenkins管道):如何运行命令而不是命令? 我尝试了以下方法: 在通话中致电“ ” : 将呼叫替换为呼叫: 附加信息: 我的命令比命令更复杂。 问题答案: 您提供的Groovy脚本正在将结果脚本中的第一行格式化为空白行。shebang告诉脚本使用/ bin / bash而不是/ bin / sh运行,它需要位于文件的第一行,否则它将被忽略。 因此,您应该这

  • bl_update 源代码: systemcmds/bl_update 从文件烧写引导程序的实用程序 用法 bl_update [参数...] setopt 设置可选位来解锁FLASH(仅在锁定状态时需要) <file> 引导程序的二进制文件 config 源代码: systemcmds/config 配置传感器驱动器(采样率、发布频率以及范围等等) 用法

  • 文件管理 1.查看文件信息:ls 简介: ls 是英文单词 list 的简写,其功能为列出目录的内容,是用户最常用的命令之一。 Linux 文件或者目录名称最长可以有 265 个字符,“.” 代表当前目录,“..” 代表上一级目录,以 “.” 开头的文件为隐藏文件,需要用 -a 参数才能显示。 ls常用参数: 参数 含义 -a 显示指定目录下所有子目录与文件,包括隐藏文件 -l 以列表方式显示文件