Jenkins结合sonarqube实现代码脚本和jenkins 执行代码扫描

环境准备

jenkins 服务器部署扫描器 sonar-scanner:
下载地址: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
官方文档: https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

部署sonar-scanner主机 10.0.0.102
部署sonarqube主机: 10.0.0.109

1.部署 sonar-scanner:

sonarqube 通过调用扫描器 sonar-scanner 进行代码质量分析, 即扫描器的具体工作就
是扫描代码:
在10.0.0.102 master主机上操作

[root@jenkins-master-102 ~]#cd /usr/local/src/
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip
mkdir /apps  #新建一个apps目录
mv sonar-scanner-cli-4.6.2.2472-linux.zip /apps/ #将安装包移动到/apps/
unzip sonar-scanner-cli-4.6.2.2472-linux.zip  #执行解压
ln -sv sonar-scanner-4.6.2.2472-linux /apps/sonarscanner #设置软链接
#二进制可以直接执行,但是需要在执行克隆的主机执行;
ll /apps/sonarscanner/bin/sonar-scanner
-rwxr-xr-x 1 root root 1822 May  7 12:15 /apps/sonarscanner/bin/sonar-scanner*
cd /data/gitdata/magedu/app1/  #进入克隆的项目
直接执行/apps/sonarscanner/bin/sonar-scanner* 会报错
ERROR: 
ERROR: Re-run SonarScanner using the -X switch to enable full debug logging.
#更改配置文件;
vim /apps/sonar-scanner-4.6.2.2472-linux/conf/sonar-scanner.properties

在这里插入图片描述
2.关闭强制认证

在这里插入图片描述
3. 更新项目 git pull

[root@jenkins-master-102 app1]#git pull
Already up to date.

下载sonar-examples-master的压缩包

https://github.com/weiier/sonar-examples-master下载sonar-examples-master-master压缩包

4.上传sonar-examples-master的压缩包并解压,进入目录

/root/sonar-examples-master/projects/languages/php/php-sonar-runner
vim sonar-project.properties

不修改直接执行即可
在这里插入图片描述
(说明:在源代码目录执行扫描:
#手动在当前项目代码目录执行扫描, 以下是扫描过程的提示信息, 扫描的配置文件 sonar-project.propertie 每个项目都要有)
执行命令

[root@jenkins-master-102 php-sonar-runner]#/apps/sonarscanner/bin/sonar-scanner

在这里插入图片描述
5.sonarquebe we 界面验证扫描结果:

在这里插入图片描述
在这里插入图片描述
jenkins 执行代码扫描

1.jenkins 安装 SonarQube 插件

系统管理-插件管理-可选插件-输入SonarQube -执行安装
在这里插入图片描述

2.添加 sonarquebe URL:

Jenkins—系统管理—系统配置–SonarQube servers
在这里插入图片描述

3.让 jenkins 添加 Sonarscanner 扫描器

Jenkins–系统管理-全局工具配置:
自动安装;
在这里插入图片描述
手动安装:
在这里插入图片描述

4.配置扫描:

选择自己的项目( magedu-app1) -构建-execute SonarQube Scanner, 将配置文件的内容修改成如下格式填写完成后点保存

在这里插入图片描述

sonar.projectKey=magedu-app1
sonar.projectName=magedu-app1
sonar.projectVersion=1.0
sonar.sources=./
sonar.language=php
sonar.sourceEncoding=UTF-8

配置项目进行扫描:
构建项目并测试 sonar-scanner 是否生效:
在这里插入图片描述
在这里插入图片描述
5.构建项目并测试 sonar-scanner 是否生效

在这里插入图片描述
6.查看构建项目的历史

在这里插入图片描述
点击后跳转出的画面
在这里插入图片描述
总结:
操作过程中,很多时候会因为某个地方没有找到设置的点而小纠结一下。其实做完了发现,测试是大同小异,依葫芦画瓢,首先是要找到瓢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您可以按照以下步骤使用Java代码实现Jenkins API来执行打包和部署: 1. 首先,您需要使用Jenkins提供的Java API,您可以从官方文档中了解如何使用该API。 2. 在您的Java代码中,您需要使用Jenkins的REST API来执行打包和部署操作。您可以通过以下方式来执行此操作: a. 首先,您需要构建REST API的URL。例如,如果您想执行名为"job_name"的作业,则URL将如下所示: `http://<jenkins_server_url>/job/<job_name>/build` b. 您需要设置HTTP请求的头文件,以便Jenkins可以验证您的请求。您需要设置"Authorization"头文件,其中包含您的Jenkins用户名和API令牌。例如: ``` String jenkinsUrl = "<jenkins_server_url>"; String jobName = "<job_name>"; String username = "<jenkins_username>"; String apiToken = "<jenkins_api_token>"; String auth = username + ":" + apiToken; byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(Charset.forName("US-ASCII"))); String authHeader = "Basic " + new String(encodedAuth); URL url = new URL(jenkinsUrl + "/job/" + jobName + "/build"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Authorization", authHeader); connection.setDoOutput(true); ``` c. 然后,您需要设置POST请求的参数,以便Jenkins可以了解您要执行的操作。例如,如果您要执行打包和部署操作,则需要设置以下参数: ``` String parameters = "token=<build_token>&cause=<build_cause>&PARAMETER_NAME=<parameter_value>"; byte[] postData = parameters.getBytes(Charset.forName("UTF-8")); int postDataLength = postData.length; connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); connection.setRequestProperty("Content-Length", Integer.toString(postDataLength)); try (DataOutputStream wr = new DataOutputStream(connection.getOutputStream())) { wr.write(postData); } ``` 在上面的代码中,"token"参数是用于验证请求的令牌,"cause"参数是用于记录此次构建的原因(例如,"manual"表示手动构建)。"PARAMETER_NAME"参数是您要设置的参数名称,"parameter_value"是您要设置的参数值。 d. 最后,您需要执行HTTP请求,并处理Jenkins的响应。例如,如果您想获取构建的编号,则可以使用以下代码: ``` int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_CREATED) { String location = connection.getHeaderField("Location"); String[] parts = location.split("/"); String buildNumber = parts[parts.length - 1]; System.out.println("Build number: " + buildNumber); } else { System.out.println("Failed to start build: " + responseCode); } ``` 在上面的代码中,如果HTTP响应代码为"HTTP_CREATED"(表示构建已成功启动),则从响应头中获取构建号。否则,打印错误消息。 这些是使用Java代码执行Jenkins API来执行打包和部署操作的基本步骤。您可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值