如何让子模块触发 Jenkins 构建

2023-11-21

我有一个子模块 A,它不是独立的应用程序。它需要主应用程序才能工作。我想为 A 创建一个 CI 构建,以便每当将提交推送到 A 时,它都会触发使用主项目代码的构建。

我该如何在詹金斯中做到这一点?

我需要做什么:

  • 对 A 的提交会触发构建。
  • 该构建克隆主项目代码,并在 A 的最新提交(不是主项目知道的提交)处提取 A 的最新代码。

我该如何使用 Jenkins 和 GIT 来做到这一点?

注意我的项目有多个子模块。子模块 A 触发构建,从 A 中提取最新的更改以及最新的主代码,并从其他子模块中提取更新。


这可以在没有 git hooks 的情况下完成。在此示例中,我们有 3 个存储库:

  1. parent
    • 仅包含子模块的空存储库
  2. child-a
    • 一个子模块存储库
  3. child-b
    • 另一个子模块存储库

当使用子模块克隆时,它看起来像:

parent\
    child-a\*
    child-b\*

在 Jenkins 中创建一个名为的自由式项目dummy-child-a.

  • Under Source Code Management设置Repository URL for child-a
  • Under Build Triggers你选Poll SCM并设置您想要的间隔
  • Under Build click Add build step
    • Choose Execute Windows batch command or Execute shell取决于您的操作系统
    • 在脚本框中执行类似的操作echo hello(这是虚拟部分)

重复这些步骤child-b


在 Jenkins 中创建一个名为的自由式项目parent。这是我们实际建造的地方

  • Under Source Code Management设置Repository URL for parent
  • Click add under Additional Behaviours and choose Advanced sub-modules behaviours
    • Check:
    • Recursively update submodules
    • Update tracking submodules to tip of branch
    • Use credentials from default remote of parent repository
  • Under Build Triggers check Build after other projects are built
    • In the Projects to watch字段,填写所有要观看的项目,并用逗号分隔:dummy-child-a, dummy-child-b
    • If parent没有会改变的源代码,你不需要Poll SCM在这个詹金斯工作上
    • Check Trigger even if the build fails

你就完成了。对 child-a 或 child-b 的任何更改都会触发父级的重建。该方法假设父模块中的子模块数量不经常变化。如果您要添加另一个子模块,您将需要制作另一个dummy项目,然后更新projects to watch of the parent詹金斯构建。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让子模块触发 Jenkins 构建 的相关文章

  • 为什么我必须使用“git commit -a”而不仅仅是“git commit”?

    我正在尝试了解 Git 的复杂性 我使用 git clone url here 从 GitHub 上下载了一个存储库 我做了一些更改 尝试使用 git commit 来提交它们 这似乎没有将更改推送到我的本地存储库 在本地目录 git 中
  • 哪些Git命令无法在本地执行?

    当我和同事谈论 Git 时 我告诉他们 一旦本地存储库初始化 只有三个 Git 命令不能在不访问远程存储库的情况下执行 假设origin当然 不在本地计算机上 git fetch http www kernel org pub softwa
  • GIT Rebase 协作的分支?

    阅读本文后 重新设置基点以收集从主分支到我的功能分支的更改是有意义的 Git 工作流程以及 rebase 与合并问题 https stackoverflow com questions 457927 git workflow and reb
  • 无法连接到存储库:执行 git 命令时出错:git ls-remote -h ***public github url *** HEAD

    I have installed jenkins on ec2 instance when i try to configure my public github repo with the ec2 instance then it thr
  • Git - 在特定提交之前压缩历史记录中的所有提交

    我有一个 Mercurial 存储库 正在将其转换为 Git 提交历史记录非常大 我不需要新存储库中的所有提交历史记录 一旦我将提交历史记录转换为 Git 并且在推送到新存储库之前 我想将某个标记之前的所有提交压缩为一个提交 所以 如果我有
  • git pull origin master 返回致命错误:无效的 refspec

    问题是这样的 每当我这样做时 git pull https github com username reponame github io git 接下来是网址 我没有遇到任何问题 但是当我这样做时 git pull origin maste
  • 如何将“develop”分支推送到远程“origin”?

    当我做git flow init它创造了一个master and develop分支机构 当我添加遥控器时git remote add origin email protected cdn cgi l email protection Ne
  • 你遇到过哪些 git 陷阱?

    我遇到的最糟糕的情况是 git 子模块 我在 github 上有一个项目的子模块 该项目无人维护 我想提交补丁 但无法提交 所以我分叉了 现在子模块指向原始库 而我需要它指向 fork 因此 我删除了旧的子模块 并将其替换为同一提交中新项目
  • 单个分支的 Git 导出

    我在本地的 git 存储库上工作 它有各种分支 例如开发分支 一些用于实验更改的分支等等 当然还有主分支 我想设置一个公共 嗯 确实是一个局域网的东西 最好说 共享 存储库来仅包含主分支 如何导出该分支以便我可以将其复制到目标文件夹 谢谢
  • 如何运行“git status”并获取文件名

    如何运行 git status 并只获取文件名而不是长相对路径 的输出git status porcelain旨在易于在脚本中解析 输出完整路径而不是相对路径 无论当前目录位于树中的位置 每行输出由git status porcelain有
  • 如何从不同分支上的本地提交复制文件?

    我提交了一个文件master分支但未推送remote 现在我正在努力feature分支 我希望将该文件复制到feature分支来自master分支 我怎样才能做到这一点 您可以从另一个分支检出特定文件 git checkout master
  • git fatal:无法读取对象 xxx:参数无效

    如果我从远程获取数据 我会收到以下错误 git pull remote Counting objects 85 done remote Compressing objects 100 37 37 done remote Total 85 d
  • 如果使用 Maven,是否应该忽略 VCS 中 Eclipse 特定的文件?

    我知道为什么不将 Eclipse IDE 特定的文件提交到像 Git 我实际上正在使用的 这样的 VCS 中 这就是我使用 Maven 并让它为您生成这些文件的原因之一not将它们置于版本控制之下 但我想知道 是否应该在 gitignore
  • 批准后使用 jenkinsfile 构建促销

    仅当更改管理使用 servicenow 更改票证或通过手动批准批准它时 我才需要使用 jenkins 文件将我的构建升级到生产 我想要类似的东西 产品构建只有在经理批准后才能手动触发 他 她应该收到带有批准 拒绝链接的批准邮件 或者 如果与
  • 将 git 设置为始终提示输入凭据

    由于一些专门的硬件 我们有一台与几个开发人员共享的机器 我希望 git 提交和推送始终提示输入凭据 我尝试过在 SO 上找到的一些修复 包括git config global unset credential helper以及编辑配置以包括
  • 如何完全删除使用init创建的git存储库?

    我创建了一个 git 存储库git init 我想完全删除它并启动一个新的 Git 将其所有文件保存在 git目录 只要删除那个并再次初始化即可 如果你找不到它 那是因为它被隐藏了 In Windows 7 you need to go t
  • Jenkins 管道:代理与节点?

    和有什么区别agent and a node在詹金斯管道中 我找到了这些定义 Node https jenkins io doc book pipeline 管道在一个或多个声明的节点步骤的上下文中执行大部分工作 Agent https j
  • 错误:Jenkins 中“没有这样的模块

    我正在尝试设置JenkinsSlave 构建我的 Swift 项目 该项目使用名为 Freddy 的 Swift pod 问题是构建失败并出现错误 错误 没有这样的模块 Freddy 这是我的 Podfile platform ios 8
  • Jenkins 插件 ssh-agent 显示“错误:无法运行 ssh-add”

    我收到错误 错误 无法运行 ssh add 我正在尝试 ssh 进入远程机器 所以 SSH credential are set Pipeline script is calling ssh agent On executing the j
  • 如何欺骗 git-svn 来识别使用 svn 进行的合并?

    我们有一个 SVN 设置 具有稳定的主干和不稳定的开发分支 开发工作 大部分 在分支上完成 然后在部署之前合并到主干 我使用 git svn 作为我的 SVN 客户端 我从unstable到trunk的合并过程如下 git svn fetc

随机推荐

  • 为什么 postgres 对相同的间隔值显示两种不同的格式?

    我正在帮忙做这件事question尝试更改间隔的格式 from 01 day 22 10 37 to 46 10 37 我给出了一个字符串操作的解决方案 但后来我发现 postgres 可以在两种不同的格式上显示相同的间隔 SELECT 2
  • 如何从 Javascript 启动两个或多个自定义 URL 协议

    我有一个旧的 html 页面 它创建一个脚本文件并使用以下命令执行它 fsoObject new ActiveXObject Scripting FileSystemObject wshObject new ActiveXObject WS
  • linux下C++中socket监听没有解除绑定

    我有一个监听某个端口的套接字 我将 SIGSTOP 信号发送到在端口上等待的线程 使用accept 并终止它 然后我关闭我等待的套接字的 fd 但对于我的项目的下一次运行 它不允许我再次监听该端口 我的程序是linux下的C 我应该怎么办
  • 使用 .prototype 和 __proto__ 创建子类

    我最近通过编写一些 gnome shell 扩展来学习 javascript 因此我对 Javascript 的理解是由我在 gnome shell javascript 源代码中观察到的示例塑造的 我有一种感觉 我对课程的理解是错误的 只
  • Gson TypeToken 是如何工作的?

    据我了解 在 Java 中 与 C 中的泛型相反 泛型是编译时功能 并通过类型擦除来删除 那么 Gson 的TypeToken真的有效吗 它如何获得对象的泛型类型 来自 JLS 4 6 强调我的 类型擦除是从类型 可能包括参数化类型和类型变
  • Select2 取消/阻止默认 select2:在特定条件下选择 (v.4.0.x)

    我需要向每个 select2 项目添加一个按钮并阻止默认事件 以便只有按钮被触发 我有以下代码 但正常onSelect事件仍然被触发 select on select2 select test2 function test2 e if e
  • 没有给出与所需的形式参数“选项”相对应的参数

    我正在 Net Core 中开发我的第一个应用程序 由于某种原因 我收到此构建错误 错误CS7036没有给出与 LakeViewContext LakeViewContext DbContextOptions LakeView所需的形式参数
  • SQL Server 奇怪的多列分组场景和 OR

    我有一个奇怪的分组场景 并且在找出 SQL 中分组的最佳方法时遇到了一些麻烦 假设我们有下面一张表 CREATE TABLE Item KeyId VARCHAR 1 NOT NULL Col1 INT NULL Col2 INT NULL
  • java.lang.OutOfMemoryError:位图大小超出 VM 预算 - Android

    我在 Android 上开发了一个使用大量图像的应用程序 该应用程序运行一次 填充屏幕上的信息 Layouts Listviews Textviews ImageViews等 用户读取信息 没有动画 没有特效或者任何可以填满记忆的东西 有时
  • TabBarItems 并设置它们的图像大小?

    我目前正在向我的每个选项卡栏项目添加图像 我喜欢的一张图像的尺寸比条形项目的面积大得多 当我在故事板中设置栏项目的图像并运行模拟器时 带有该图像的栏按钮覆盖整个屏幕 现在我认为有一些自动方法可以让图像为每个栏按钮调整大小 遗憾的是事实并非如
  • 如何从航路 3 直接升级到航路 5

    开发由许多客户在许多生产环境中部署的产品 它至少包含一个 Spring Boot 应用程序 我们使用 Flyway 进行数据库模式迁移 从 Spring Boot 1 5 x 升级到 2 0 x 使我们的 Flyway 版本从 3 x 升级
  • InflateException 与来自官方设计库的 FloatingActionButton

    我在使用官方的时候遇到了一个bugFloatingActionButton来自 Google 的支持设计库 这是我的 LogCat android view InflateException Binary XML file line 34
  • 如何加快 Gensim Word2vec 模型加载时间?

    我正在构建一个聊天机器人 因此需要使用 Word2Vec 对用户的输入进行矢量化 我正在使用 Google 提供的包含 300 万个单词的预训练模型 GoogleNews vectors male300 所以我使用 Gensim 加载模型
  • 在 CMake 中获取目标依赖的所有源文件

    使用 CMake 如何获取进入可执行目标的所有源文件的列表 包括该可执行文件所依赖的所有目标中的所有源 我们在代码库中有一个模式 其中构建系统根据源树中的文件名和路径生成初始化程序调用程序 因此 我需要可执行目标所依赖的所有源文件的完整路径
  • Android - 如何使用新的存储访问框架将文件复制到外部 SD 卡

    我正在我的应用程序中实现文件浏览器功能 我知道如何使用 ACTION OPEN DOCUMENT TREE 意图获得外部 SD 卡的持久权限 以及如何使用 DocumentFile 类创建文件夹和删除文件 文件夹 但是 我无法找到将文件复制
  • 编译 ng-bind-html 后 ng-click 不起作用

    我有一个指令 app directive dir function compile sce return restrict E link function scope element attr scope watch content fun
  • 如何删除Python中的标点符号?

    我有一个问题 前任 我有一句话 s AAA BBB CCC 所以 我这样做 import string table str maketrans string punctuation s w translate table for w in
  • 公开受保护字段的最佳方式

    我有一个像这样的基类 public class BaseModalCommand protected object m commandArgument protected int m commandID protected int m en
  • 暂停脚本执行的 jQuery 确认框

    我正在寻找一个 jquery 漂亮的标准对话框替代品 jQUery UI 有一个很好的功能 但它不会像confirm 那样暂停脚本执行以等待响应 下面的演示应该显示两个 div 显示前面确认框的选择 但 jquery 对话框不会导致脚本等待
  • 如何让子模块触发 Jenkins 构建

    我有一个子模块 A 它不是独立的应用程序 它需要主应用程序才能工作 我想为 A 创建一个 CI 构建 以便每当将提交推送到 A 时 它都会触发使用主项目代码的构建 我该如何在詹金斯中做到这一点 我需要做什么 对 A 的提交会触发构建 该构建