Jenkins + Cmake + JIRA = 多个相互依赖项目的 CI?

2024-04-30

我们的系统中有许多小项目在 Linux 上运行(Slackware 7-11,正在慢慢迁移到 RHEL 6.0)。大约 50-100 个应用程序和 15-20 个库。我们几乎所有的应用程序都使用我们的一个或多个库。我们的源树看起来像这样:

/app1
/app2
/app3
/include
/foo/app4
/foo/app5
/foo/app6
/foo/lib1
/foo/lib2
/lib/lib3
/lib/lib4
/lib/include

现在,我已经完成了创建一些 CMakeLists.txt 文件的工作,并构建了大部分库和一些应用程序。我对使用 cmake 构建相当满意。我用 v2.6 做到了这一点,最近(一小时前)升级到了 2.8。上述每个项目都有自己的 CMakeLists.txt 文件,该文件特定于该项目来进行构建和安装(尚未打包)。

我需要使用并强制执行持续集成。我已经安装并使用了 Jenkins,从我所看到的来看,我印象非常深刻。我还在评估 JIRA 来进行问题跟踪。

为了让事情顺利进行,我在所有库上进行了 cmake 安装,以便应用程序可以在文件系统中找到它们。标头安装到 /usr/local/include ,库安装到 /usr/local/lib 。这是一件坏事吗?最好告诉 cmake 查找 lib 的源目录,使用导出接口 http://www.cmake.org/Wiki/CMake%3aExportInterface或者最近推出的外部项目_添加 http://www.kitware.com/products/html/BuildingExternalProjectsWithCMake2.8.html?

因为我将使用 Jenkins,所以我不能保证 cmake 可以找到源或构建目录。当然,我可以告诉 Jenkins 按顺序构建项目(或者至少首先构建依赖项)。如果对库的更新破坏了另一个项目的构建,那么我想这将由具有 3/4 智慧的人来确定。

先感谢您


为了让事情顺利进行,我在所有库上进行了 cmake 安装,以便应用程序可以在文件系统中找到它们。标头安装到 /usr/local/include ,库安装到 /usr/local/lib 。这是一件坏事吗?

不,这并不是一件坏事,但是您的构建应该从头开始重现资源。如果需要在构建过程之外将东西预先安装在系统中,那么可移植性和修复构建错误之类的事情将成为一个问题。如果您能够像您提到的那样以其他方式做到这一点,我会建议您这样做,但如果它会让您的构建时间更长,那么您需要摸索一下。我的理念是,一切都应该可以移动到新的 Jenkins 机器上,并立即进行全新安装,这始终是不可能实现的,但却是值得努力的目标。

因为我要使用 Jenkins,所以我不能保证 cmake 可以找到源或构建目录。当然,我可以告诉 Jenkins 按顺序构建项目(或者至少构建 首先是依赖关系)。如果对库的更新破坏了 另一个项目,那么我想这将取决于有 3/4 智慧的人 来确定这一点。

我在相互依赖的工作中所做的一件事是,成功构建一项工作会触发依赖于它的工作。例如,如果 A 依赖于 B,并且 A 失败,则 B 将永远不会运行,并且在构建 A 中创建问题的人应对此负责,依此类推。这可以防止由损坏的依赖项引起的损坏构建的级联影响。我建议您将特定构建中的文件保存在其作业文件夹中,并向依赖项指定所需文件的位置。再次保持您的构建独立且干净。

我还在评估 JIRA 来进行问题跟踪。

我强烈推荐 JIRA 作为公司的问题跟踪系统;您可能想看看this https://wiki.jenkins-ci.org/display/JENKINS/JIRA+Plugin用于集成的 Jenkins 插件。如果您使用 git,并且您不介意将代码托管在异地,我也会在 GitHub 上发布一个镜头。

祝你好运,你似乎走在正确的轨道上。

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

Jenkins + Cmake + JIRA = 多个相互依赖项目的 CI? 的相关文章

  • Clion如何将文件添加到项目中

    这看起来真的很基本 如何将文件添加到项目中而无需手动编辑CMakeLists txt 例如另一个目录中的源文件 CLion 解析CMakeLists txt并使用它生成项目视图 但我相信将文件添加到项目的唯一方法是编辑CMakeLists
  • Cmake:链接到静态内部库而不导出它

    我有一个具有以下结构的项目 path to my project CMakeLists txt internal libs internal lib1 libs lib1 lib2 lib1是一个静态库 lib2是一个静态库 interna
  • Opencv - 找不到头文件

    我正在尝试使用 opencv 开始开发 问题是 到目前为止我几乎无法设置 opencv 因为我找不到它的头文件 我对此主题进行了一些研究 但没有一个真正有帮助 下面是一些链接 opencv2 包含文件在哪里 https stackoverf
  • Visual Studio Team Services 持续集成:NuGet 恢复任务失败

    我正在使用 Team Services 中的持续集成功能 以前是 Visual Studio Online 我的构建定义针对解决方案 而不是整个解决方案 中的特定项目 即 ClientUI MVC 网站 该解决方案包含三个项目 Client
  • CMake 添加对安装目标的依赖

    我在使用cmake时遇到以下问题 我使用 UseDoxygen 来自http tobias rautenkranz ch cmake doxygen http tobias rautenkranz ch cmake doxygen 为我的图
  • Jenkins v2.212:创建扩展解析器类时出错:找不到类

    将 Jenkins 升级到 v2 212 并安装许多可用的插件更新后 某些作业开始失败并出现以下错误 12 43 35 WS CLEANUP Deleting project workspace 12 43 35 WS CLEANUP De
  • 整合 Jenkins 电子邮件通知

    我有一个 Jenkins 项目 由 3 个简单的自由式作业组成 每个作业都有自己的构建从站 每个作业都与一个单独的平台相关联 linux mac 或 windows 当开发人员提交代码时 Jenkins 很快就会轮询存储库 在每个构建从属设
  • 在 selenium 下运行 chromedriver 日志时,如何减少其详细程度?

    我的功能测试的詹金斯失败报告充满了这样的行 selenium webdriver remote remote connection DEBUG Finished Request selenium webdriver remote remot
  • 如何使用cmake自动构建第三方库

    我在寻找什么 下载库 提取它 应用自定义补丁 运行配置 运行构建命令 我正在尝试构建的库是 Openssl Boost Thrift C ares Curl Pcre Nginx ICU JsonCPP 我想我可以使用外部模块做这些事情 h
  • Jenkins:Github webhook 不会触发任何作业

    我尝试配置詹金斯 我想要一个简单的行为 触发新的拉取请求的构建 我无法理解我错过了什么 詹金斯版本 2 89 2 At https ci mysite fr configure https ci mysite fr configure 仍然
  • 如何将文件参数传递给詹金斯管道中的另一个构建作业?

    如何将当前工作区中的文件作为参数传递给构建作业 例如 build job other project parameters class FileParameterValue 真是一场噩梦 没有文档 查看了詹金斯代码等 尝试了一切 最后发现这
  • Jenkins 声明性管道:当仅为管道设置代理时,哪个工作区与阶段相关联?

    以下是声明式管道的示例 其中为管道设置了代理 但未在各个阶段中设置 pipeline agent node label linux stages stage Checkout steps checkout scm stage Build s
  • CMake:Fortran 模块和编译顺序

    我有一个大型 Fortran 程序 其中包含许多目录 每个目录都在伪库中单独编译 但仍然存在相互依赖的混乱 因此最终所有伪库都组合在一个可用的库中 我想使用 Fortran 模块 但它非常脆弱 因为我不能依赖自动依赖项检查 并且根据顺序编译
  • 如何在cmake中静态链接到glibc

    我正在尝试从 Fedora 构建一个可以在 RedHat 6 机器上运行的包 所以我需要构建和静态链接一些RedHat机器中不存在的库 我发现我可以你 static libgcc or static libstdc 与标准库的静态版本链接
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • 詹金斯配置文件问题

    检查依赖关系 找不到与 Nitin xxxxxxx xyzCAppStore 匹配的 iOS 配置文件 Xcode 找不到与 Nitin xxxxxxx xyzCAppStore 匹配的配置文件 安装配置文件 通过将其拖放到 Xcode 的
  • Jenkins GIT 包含从未构建过的区域

    我正在尝试使用包含区域在 Jenkins 中构建我的工作 但每当选中此选项时 民意调查结果总是说未检测到任何更改 我尝试了许多不同的路径 以及使用工作区进行 不进行强制轮询 结果是轮询从未检测到任何更改 但一旦我删除这些选项 它们就会在下一
  • 为什么 Jenkins SVN 插件在连接到我的 VisualSVN 服务器时会出现错误 E170001?

    我对 VisualSVN 服务器的了解 它支持 Windows Active Directory 身份验证和使用我的 Windows 用户名和密码的 基本 身份验证 我可以成功使用 TortoiseSVN CollabNet 和 Mac O
  • jenkins:使用 URL 传递多个“扩展选择参数”值

    我的参数之一Jenkins构建是一个扩展选择参数 https wiki jenkins ci org display JENKINS Extended Choice Parameter plugin从构建网页调用构建时 它作为逗号分隔值的选
  • 如何从管道作业访问 git 分支名称?

    我有一个 Jenkins Pipeline 作业 配置为签出 git 存储库和特定的本地分支 如何在 Jenkinsfile 中获取本地分支的名称 我尝试加载git詹金斯插件 https wiki jenkins ci org displa

随机推荐