当前位置: 首页 > 知识库问答 >
问题:

jenkins 如何识别或者管理尚未完成的代码?

刘永望
2023-10-18

某一些模块提交的源码仓库的代码,可能并不完整。
在jenkins构建的时候,如何剔除这些“尚未完工”的模块呢?

因为源码仓库有“留痕”的作用,在一个比较大的重构过程中,可能需要将部分重构代码提交源码仓库,这样可以利用源码仓库的版本历史,方便查阅每次的代码变动、在某些时候,还可以进行代码回退。

提交到源码仓库的可能并不是一个完整的功能。
jenkins在构建的时候,如何管理跳过这些未完工的模块代码呢?

举一个例子:
我们目前的项目发版流程:
1、我们项目由多个模块组成;
2、开发人员针对 开发任务单、或者缺陷单 进行开发,开发过程中可以提交 源码仓库;
3、当一个任务单/缺陷单完成后(可能涉及多个模块),开发人员使用 Maven-deploy 类似的命令本地编译、打包,将模块提交到 制品库。
4、测试人员这时候会看到 任务单/缺陷单状态变化,通过某一个工具 将该任务单涉及的模块制品 和 其他制品组装为最终项目发布包(JAR、或者WAR、或者其他形式),然后进行测试。
5、测试通过后,比如每月发版时,会汇总当前已经测试通过的任务单,使用某工具将所有涉及的任务单制品组装为最终项目发布包。再进行必要的自动化测试或性能测试,最终完成发布。

那么,jenkins如何识别、跳过这些 尚未提交测试单的模块呢?
现有的项目发布过程,哪些是可以使用jenkins优化的?

欢迎分享下经验,谢谢!

共有3个答案

马权
2023-10-18

我觉得方向可能错了。

一个bug提出来,bug的修改可能会涉及多个模块这是比较正常的事情,模块之间也不是固定的,我觉得这个识别起来是比较麻烦的,情况复杂的时候相关的人也不一定能完全清楚,这个交给程序去处理我觉得是不太现实的。

如果是我的话,可能会把项目按照模块去划分成多个任务,模块提交的时候只构建相关的模块。//这个也得具体看项目是什么样子的。


你可以看看你们现在是用的什么bug管理系统,可能jenkins上有现成的插件,能直接集成到bug管理系统中。我看jira貌似可以根据bug状态直接触发构建。

程冥夜
2023-10-18

有一种工程师叫做《运维开发工程师》。负责CI\CD中的自动化开发。

识别、跳过这些尚未提交测试单的模块,通过平台开放API去调用,再将结果返回给jenkins。

孙京
2023-10-18

Jenkins 是一个持续集成和持续部署的工具,它可以和各种源代码管理系统(如 Git、SVN 等)配合使用,用于自动化构建、测试、部署软件项目。对于你的问题,Jenkins 并不会直接识别或管理尚未完成的代码。它在构建过程中主要依赖于你的源代码管理系统(如 Git)和你的构建脚本(如 Maven 或 Gradle)来获取代码并执行构建任务。

在你的情况下,Jenkins 的主要工作是在接收到源代码管理系统中的代码变动事件后,执行你的构建脚本,将代码编译、打包,然后运行自动化测试。因此,Jenkins 本身并不能识别哪些代码是 "尚未完成的"。这需要你的开发团队在提交代码时,按照一定的规范进行。例如,你们可以约定在提交代码时,必须为每个任务单或缺陷单创建一个独立的分支或模块,然后在任务单或缺陷单完成并测试通过后,再将该分支或模块合并回主分支。

在你的构建脚本中,你可以通过一些逻辑来跳过那些尚未提交测试的单的模块。例如,你可以在你的 Maven 脚本中添加一些额外的步骤,来检查每个模块的状态,如果一个模块尚未关联到一个已完成的测试单,那么就跳过该模块的构建和测试。

对于你的项目发布流程,Jenkins 可以帮助你们自动化一些步骤。例如,Jenkins 可以定期轮询你们的源代码仓库,在检测到新的代码提交后自动触发构建任务。在构建过程中,Jenkins 可以帮助你们自动化地编译、打包和运行自动化测试。此外,Jenkins 还支持各种插件,可以让你们很容易地实现复杂的构建和部署流程。例如,你们可以使用 "Thin Build" 插件来只构建和测试那些已经完成并通过测试的任务单的模块,以此来跳过那些尚未完成的模块。

另外,关于如何管理和识别尚未完成的代码,这其实更多的是一个软件开发和团队协作的问题。Jenkins 可以帮助你们自动化一些步骤,但是真正的管理和识别工作还需要你们团队的共同努力。例如,你们可以制定一些开发规范,要求每个任务必须有一个独立的分支或模块,每个任务完成后必须将该分支或模块合并回主分支等等。此外,你们也可以使用一些团队协作工具(如 Jira、Trello 等)来跟踪每个任务的状态,以此来更好地管理和识别尚未完成的代码。

 类似资料:
  • 我做了一个叫做“F”的分支,并对Master做了一个结账。当我尝试命令时,我得到了以下消息: 当我尝试时,它给出了以下内容: 我该怎么办?

  • 有人能告诉我这条ffmpeg线有什么问题吗?我得到了错误: 输入1宽度619与输入0宽度618不匹配。在Parsed_vstack_3上配置输出焊盘失败,重新初始化筛选器时出错!无法将帧注入筛选器网络:处理流#2:0的解码数据时出现无效参数错误 白色固体的宽度被正确地设置为619。 查看错误屏幕截图错误,格式=YUV444P 变得灰蒙蒙的

  • 问题内容: 我想看看是否有人使用新的Android API级别17附带的FragmentTabHost自定义选项卡成功。 能够将tabHost嵌套在ViewPager SherlockFragments中,我感到很兴奋,但是我在做一些简单的事情(如将选项卡移至底部或更改选项卡的布局)时遇到了麻烦。 有没有人看到使用此功能的好例子? 这是我可以在Android文档中找到的唯一示例,几乎没有任何内容可

  • 问题内容: 我是Jenkins的新手,我正在尝试建立一个将使用少量构建执行程序的项目。流程如下: 带有标签的两个构建执行器返回其IP地址,并等待第三个构建执行器完成其工作 第三个带有标签的构建执行器收集这些IP地址并执行一些长期运行的工作(例如,向部署在这两个代理上的Web服务发送HTTP请求) 如何在詹金斯实现这种行为? 我发现,当构建执行器完成其工作时,它会立即释放,并且我不知道如何使其等待其

  • 我刚刚开始使用Spring ROO,并使用数据库逆向工程命令生成了我的实体类。然而每当我试图调用生成的实体类中的一个CRUD方法时,我总是得到这个异常:Java . lang . illegalstateexception:实体管理器没有被注入(Spring Aspects JAR是否被配置为AJC/AJDT方面库?) 我怀疑(通过查看生成的文件)EntityManager没有被注入到类中。你能告

  • 我的项目代码托管在git和gerrit上。我想把gerrit和jenkins结合起来。当我在源代码管理部分(Jenkins)中输入SSH路径或HTTP路径时,我得到下面的错误 错误: 在主工作区/var/lib/jenkins/workspace/demo[WS-CLEANUP]删除项目工作区时,计时器在主工作区上构建启动。。。[WS-CLEANUP]已完成克隆远程Git存储库克隆存储库http: