使用Gradle,Jenkins和Sonar实现CI / CD流程

时间:2015-01-24 08:15:36

标签: maven jenkins gradle sonarqube

因此,我目前正在尝试为我的项目实施CI / CD工作流程,该项目将向公众发布。因为我发布的更多是一个框架,我承认人们会接受我的代码,改变他们认为合适的方式,并自己托管他们的更改(如果他们想要的话)。所以我不想在他们的构建过程中强加任何额外(即checkstyle规则,不必要的依赖等)。

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

  1. 编写代码
  2. 运行本地单元测试
  3. 提交代码
  4. 启动Jenkins Build
  5. 运行单元测试
  6. 运行集成测试
  7. 对结果进行分析
  8. 将分析上传到SonarQube服务器
  9. 将构建文件和包带入二进制文件和源版本。
  10. 我的问题是,我无法在Jenkins中配置它的Sonar方面。正如我所说的,我不想将我的规则强加于别人的流程,所以我将这些功能分开作为Jenkins的一步。但是,如果我执行声纳步骤,它将完全排除单元测试方面。我无法确定原因。但是,如果我修改Gradle文件以包含

    apply plugin: 'sonar-runner'
    

    并添加Invoke Gradle Task步骤而不是Sonar任务,它可以正常工作。

    我是以错误的方式来做这件事的吗?如果我将该部分包含在Gradle文件中,我可以从中获得所需的内容,但是我会对下载我的代码的人强加Gradle要求(可能是使用Maven)。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

你并没有施加压力"通过在Gradle构建脚本中包含声纳插件的任何事情。开发人员不需要运行声纳任务来构建项目,只要配置声纳所需的任何必要配置都不会破坏构建(如果缺少),我说你是很高兴。

开源项目构建包含特定于发布或部署的逻辑并不罕见。这很好,只要a)在指定的CI环境之外运行这些任务失败(通常是由于缺乏上传到发布回购的权限)和b)开发人员仍然可以构建/测试而无需运行这些任务。

一般来说,我认为后一种方法更好,因为您现在对特定CI基础架构的依赖性较小,这将使迁移变得更容易。