当前位置: 首页 > 知识库问答 >
问题:

将SonarQube的Jenkins构建步骤转换为Pipline?

韦知
2023-03-14

在使用Jenkins管道的过程中,我将一些使用FreeStyle类型项目的旧构建转换为使用管道。旧的自由式建筑效果很好。

我的构建通常在容器环境中完成(通过SSH为该构建而展开),并以用于QA的SonarQube分析结束。

sonarqube步骤(使用Jenkins sonarqube插件)自动将带有正确参数的sonarqube扫描器注入到容器中,以连接到sonarqube服务器,如本例中Jenkins BUID的控制台日志所示:

22:47:13 Unpacking https://repo1.maven.org/maven2/org/sonarsourc/scanner/cli/sonar-scanner-cli/3.3.0.1492/sonar-scanner-cli-3.3.0.1492.zip to /home/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Aditus_SonarQube on docker-000b7eccw94td on Docker on master
22:47:13 [g7ctrl-server] $ /home/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Aditus_SonarQube/bin/sonar-scanner -Dsonar.host.url=https://myserver.com/sonarqube ******** -Dproject.settings=/home/jenkins/workspace/g7ctrl-server/sonar-project.properties -Dsonar.projectBaseDir=/home/jenkins/workspace/g7ctrl-server
22:47:14 INFO: Scanner configuration file: /home/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Aditus_SonarQube/conf/sonar-scanner.properties
22:47:14 INFO: Project root configuration file: /home/jenkins/workspace/g7ctrl-server/sonar-project.properties
22:47:14 INFO: SonarQube Scanner 3.3.0.1492

在阅读了Jenkins管道中的分析后,我得出结论,它不适用,因为扫描仪没有安装。另外,在Jenkins2管道中执行SonarQube Scanner,因为它的假设是相同的。

是否有任何自动化(相当于FreeStyle构建步骤),或者我是否需要编写shell-script来手动下载、解包和安装扫描器到容器中?

如果有人能揭露这件事会很感激?(或者一些最佳实践示例--因为我是流水线脚本的新手)我假设其他人也面临过这个问题)

stage('SonarQube analysis') {
  def sonarqubeScannerHome = tool name: 'Aditus SonarQube', type: 'hudson.plugins.sonar.SonarRunnerInstallation'
  withSonarQubeEnv('Aditus SonarQube') {
    sh "${sonarqubeScannerHome}/bin/sonar-scanner -Dsonar.host.url=https://myserver.com/sonarqube -Dproject.settings=/home/jenkins/workspace/g7ctrl-server/sonar-project.properties -Dsonar.projectBaseDir=/home/jenkins/workspace/g7ctrl-server"
  }
}
Unpacking https://repo1.maven.org/maven2/org/sonarsource/scanner/cli/sonar-scanner-cli/3.3.0.1492/sonar-scanner-cli-3.3.0.1492.zip to /home/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Aditus_SonarQube on docker-000dsh7hwihbw on Docker on master
[Pipeline] sh
+ /home/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Aditus_SonarQube/bin/sonar-scanner -Dsonar.host.url=https://myserver.com/sonarqube -Dproject.settings=/home/jenkins/workspace/g7ctrl-server/sonar-project.properties -Dsonar.projectBaseDir=/home/jenkins/workspace/g7ctrl-server
INFO: Scanner configuration file: /home/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Aditus_SonarQube/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE

最有可能的是路径问题,因为我没有掌握管道脚本,我看不到。(在Freestyle和Pipeline的情况下,使用相同的参数调用扫描器)

共有1个答案

帅德惠
2023-03-14

已解决

由于工作区路径依赖于jenkins项目名称,因此路径是错误的。当我设置扫描器参数时,我只是从我的(工作的)freestyle项目中复制路径中的原始Jenkins项目名称,而不是新的管道项目名称。

因此,下载、安装和运行扫描仪的完整流水线阶段可以简单地写成:

stage('SonarQube analysis') {
    def sonarqubeScannerHome = tool name: '<SONARQUBE-TOOL-NAME>'
    sh "${sonarqubeScannerHome}/bin/sonar-scanner"
}
stage('SonarQube analysis') {
    def sonarqubeScannerHome = tool name: '<SONARQUBE-TOOL-NAME>'
    sh "${sonarqubeScannerHome}/bin/sonar-scanner -Dsonar.host.url=https://<SONAR-QUBE-SERVER> -Dproject.settings='sonar-project.properties' -Dsonar.projectBaseDir=."
}
 类似资料:
  • 我正在将在UI中配置的Jenkins作业转换为使用声明性管道脚本配置的作业。 这是一个maven构建的Java项目,具有部署到Artifactory的构建后操作 构建和测试步骤很简单。我们可以使用这个UI 并将其转换为mvn命令。 构建后步骤的配置在UI中很简单 选中了三个文本框 部署maven工件 过滤器从构建信息中排除了工件(我不认为有任何) 捕获并发布构建信息 这会生成并上传丰富的build

  • 问题内容: 我想用詹金斯建立一个Maven项目。但是,只有在SVN储存库中的某个文件已更改(并且包含特殊密钥)的情况下,才必须构建项目。 所以我的计划是创建一个包含两个构建步骤的工作: 第一步是执行检查该“条件”的shell或python脚本。 第二步是实际的Maven构建 仅当步骤1中的条件检查返回“ true”时,才必须调用第二步。 有可能这样做吗?好吧,我想如果不满足条件,我可以在第一个脚本

  • 问题内容: 我不确定我在这里使用的术语是否正确,因此我将尝试尽力解释。我使用Jenkins来运行我们的Java自动化。有许多长时间运行的作业(2-10小时)针对不同版本的被测产品不断执行。我需要一种方法来快速查看作业的“构建历史记录”框,并查看哪个作业正在测试哪个产品版本。 我已经成功地使用了Groovy Postbuild插件在Build History Box中的右侧添加了一个徽章(我认为就是

  • 我使用Maven作为构建工具,Jenkins作为CI工具。目前我有一个配置有Maven构建步骤的Jenkins作业。 我开始使用SonarQube,我想知道使用Jenkins SonarQube插件并将SonarQube分析配置为构建后操作,比简单地将sonar:sonar添加到现有Maven构建步骤的目标中有什么优势。 谢谢和最好的问候, 罗纳德

  • 遵循下面的引导,在 Linux 上构建 Electron . Prerequisites Python 2.7.x. 一些发行版如 CentOS 仍然使用 Python 2.6.x ,所以或许需要 check 你的 Python 版本,使用 python -V. Node.js v0.12.x. 有很多方法来安装 Node. 可以从 Node.js下载原文件并且编译它 .也可以作为一个标准的用户在

  • 遵循下面的引导,在 Windows 上构建 Electron . 前提 Windows 7 / Server 2008 R2 or higher Visual Studio 2013 with Update 4 - download VS 2013 Community Edition for free. Python 2.7 Node.js Git 如果你现在还没有安装 Windows , mod