gpt4 book ai didi

java - Jenkins 和 Maven 配置文件

转载 作者:行者123 更新时间:2023-12-01 06:42:53 26 4
gpt4 key购买 nike

我们正在开发一个遗留项目,第一个任务是为其设置 DevOps。重要的是我们对这个领域还很陌生。

我们最初计划使用 jenkins 和 sonarqube 来实现此目的。让我从要求开始。

  • 目前该项目已分割为多个项目(不是模块)
  • 我们必须遵循此构建结构,因为没有计划将其重新组织为单个多模块 Maven 项目
  • 目前,构建和依赖项是手动管理的

例如:该项目被分割为5个多模块maven项目, 说 A、B、C、D 和 E

        1. A and C are completely independent and can be easly built
2. B depends on the artifact generated by A (jar) and has multiple maven profiles (say tomcat and websphere, it is a webservice module)
3. D depends on the artifact generated by C
4. E depends on A, B and D and has multiple maven profiles (say tomcat and websphere, it is a web project)

根据 jenkins 文档来处理这种情况,我们正在考虑使用“参数化构建插件”和“扩展选择参数插件”进行参数化构建,在这些插件的帮助下,我们能够参数化配置文件名称。但在每次构建之前,构建器等待配置文件参数。

所以我们仍在寻找一个好的解决方案

    1. keep the dependency between projects an built the whole projects if there is any change in SCM (SVN). For that we are used "Build whenever a SNAPSHOT dependency is built" and "SCM polling option". Unfortunately this option seems not working in our case (we have given an interval of 5 min for scm polling but no build is happening based on test commits)

2. Even though we are able to parameterize the profile, this seems as a manual step (is there an option to automate this part too, ie. build with tomcat profile and websphere profile should happen sequentially).

我们正在努力寻找满足所有这些核心要求的解决方案。任何指针将不胜感激。

谢谢,桑

最佳答案

我的 Maven 知识有限,但是由于您还没有得到任何回复,我会尝试提供一些一般性建议。

通常有多种方法可以在 Jenkins 中实现某个目标,每种方法都有其优点和缺点。选择最合适的解决方案取决于具体要求和您的环境/设置。

但是,您首先需要一些可以正常工作的东西,然后您可以对其进行改进。

通过以下操作可以快速得到结果

一项工作中的一切

  • Configure your subversion repo (Multiple are possible) to be checked out into your workspace
  • Enable Poll SCM trigger
  • Build your modules/projects via Execute shell build steps. (Failed builds can be handed to the job result by using Exit 1 on a Execute shell Build step.)

但是请记住,这将阻止每个项目/模块的高级功能,例如向开发人员发送邮件通知。或指标趋势,例如警告或静态代码分析。

以下解决方案更容易朝该方向扩展。

围绕各种构建作业的包装作业

  • Use Build step Trigger/call builds on other projects to build A, archive needed artifacts
  • Use Build step Trigger/call builds on other projects with some parameter tomcatto build B tomcat version, use Copy Artifact Plugin to copy over jar from A
  • ...
  • Use Build step Trigger/call builds on other projects with some parameter tomcatto build E tomcat version. Use Copy Artifact Plugin to copy all needed artifacts, you can specify parameter there if you need artifact of i.e. B tomcat version

在此设置中,监视 svn 是一个问题,因为如果您通过轮询 SCM 触发它,它将在您的包装器工作区中 check out 它,而您实际上并不需要在那里 check out 它,而是在您的构建作业中 check out 它。

可能的解决方案:在包装器作业和构建作业之间共享工作区,因此构建作业中的重复 checkout 将找到已处于正确版本中的文件。但是,您*需要+确保下游作业在同一台机器上执行(有插件可以做到这一点)

或者更优雅:在 svn 上使用 post-commit 钩子(Hook)(参见 here,Post-comit 钩子(Hook)部分)来通知 jenkins 更改。

编辑:对于 future ,值得研究 Pipeline Plugin及其 documentation对于更复杂的构建,这是即将推出的 jenkins 版本 2.0 的引擎,请参阅 here .

关于java - Jenkins 和 Maven 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36187000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com