gpt4 book ai didi

maven - 使用Gradle,Jenkins和Sonar实现CI/CD Flow

转载 作者:行者123 更新时间:2023-12-03 06:18:38 27 4
gpt4 key购买 nike

因此,我目前正在尝试为将要发布给公众的我的项目实现CI / CD工作流程。因为我要发布的内容更多是一个框架,所以我承认人们会采用我的代码,对其进行更改以使其适合自己,并自行托管更改(如果需要)。所以我不想在他们的构建过程中强加任何额外的(例如,checkstyle规则,不必要的依赖关系等)。

因此,我(个人)选择编写框架的途径是使用Gradle进行构建,并在提交时启动Jenkins构建,它将运行所有单元测试,执行静态分析,然后将必要的文件打包到人们可以下载的格式。

  • 编写代码
  • 运行本地单元测试
  • 提交代码
  • 启动Jenkins Build
  • 运行单元测试
  • 运行集成测试
  • 对结果进行分析
  • 将分析上传到SonarQube服务器
  • 将构建文件打包成二进制文件和源代码版本。

  • 但是我的问题是我无法在Jenkins中配置所有的Sonar方面。如我所说,我不想将规则强加于其他人的流程,因此我将功能分离为Jenkins步骤。但是,如果执行Sonar步骤,它将完全排除单元测试方面。我无法确定原因。但是,如果我修改Gradle文件以包括
    apply plugin: 'sonar-runner'

    并添加 Invoke Gradle Task步骤而不是Sonar任务,效果很好。

    我会以错误的方式处理吗?如果我将这一部分包含在Gradle文件中,那么我将获得所需的东西,但是我对所有下载我代码的人(可能使用Maven的人)都强加了Gradle要求。有办法解决这个问题吗?

    最佳答案

    您不会通过在Gradle构建脚本中包含声纳插件来“强加”任何东西。不需要开发人员运行声纳任务来构建您的项目,并且只要配置声纳所需的任何必要配置都不会在缺少该构建的情况下中断构建,我想您就可以了。

    开源项目构建包含特定于发行或部署的逻辑的情况并不少见。只要a)在指定的CI环境之外运行这些任务失败(通常是由于缺乏上载发布版本库的权限),以及b)开发人员仍然可以在不运行这些任务的情况下进行构建/测试,就可以了。

    通常,我认为您的后一种方法更好,因为您现在对特定CI基础结构的依赖性降低了,这将使迁移更加容易。

    关于maven - 使用Gradle,Jenkins和Sonar实现CI/CD Flow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28123599/

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