因此,我目前正在尝试为我的项目实施CI / CD工作流程,该项目将向公众发布。因为我发布的更多是一个框架,我承认人们会接受我的代码,改变他们认为合适的方式,并自己托管他们的更改(如果他们想要的话)。所以我不想在他们的构建过程中强加任何额外(即checkstyle规则,不必要的依赖等)。
因此,我(个人)选择编写框架的路径是使用Gradle进行构建,并在提交时启动Jenkins构建,该构建将运行所有单元测试,执行静态分析,然后打包必要的文件转换成人们可以下载的格式。
我的问题是,我无法在Jenkins中配置它的Sonar方面。正如我所说的,我不想将我的规则强加于别人的流程,所以我将这些功能分开作为Jenkins的一步。但是,如果我执行声纳步骤,它将完全排除单元测试方面。我无法确定原因。但是,如果我修改Gradle文件以包含
apply plugin: 'sonar-runner'
并添加Invoke Gradle Task
步骤而不是Sonar任务,它可以正常工作。
我是以错误的方式来做这件事的吗?如果我将该部分包含在Gradle文件中,我可以从中获得所需的内容,但是我会对下载我的代码的人强加Gradle要求(可能是使用Maven)。有办法解决这个问题吗?
答案 0 :(得分:0)
你并没有施加压力"通过在Gradle构建脚本中包含声纳插件的任何事情。开发人员不需要运行声纳任务来构建项目,只要配置声纳所需的任何必要配置都不会破坏构建(如果缺少),我说你是很高兴。
开源项目构建包含特定于发布或部署的逻辑并不罕见。这很好,只要a)在指定的CI环境之外运行这些任务失败(通常是由于缺乏上传到发布回购的权限)和b)开发人员仍然可以构建/测试而无需运行这些任务。
一般来说,我认为后一种方法更好,因为您现在对特定CI基础架构的依赖性较小,这将使迁移变得更容易。