静态代码扫描持续构建(Jenkins)

前提条件

  1. 已正确安装、配置Jenkins环境,并装有 Gradle 插件、HTML 插件、SVN 插件等。如下图所示:
  2. 已正确安装、配置android sdk,在cmd窗口输入命令“android -h”,回车

配置步骤

  1. 打开Jenkins,新建一个job,输入项目名称,选择“构建一个自由风格的软件项目”
  2. 点击“OK”,将弹出 job 的配置项,General 这一项,主要是简单介绍下本项目,这里只在”项目名称”和”描述”做简单描述,如下图所示:
  3. 源码管理,这里选择的是 SVN,填写的两项是:待测试 app 源码路径、svn 账户密码,剩余项为系统默认,如下图所示:

  4. 构建触发器,这里配置的是:每隔 60 分钟,检查一下代码是否有更新,有更新的话,开始触发静态扫描操作,如下图所示:
  5. 构建环境,这里不做配置
  6. 构建,点击增加构建步骤,选择 “Invoke Gradle script”

    选择 ”Use Gradle Wrapper”,Task 的命令为 “lint”,执行脚本的目录精确到待测试 app 源码目录,gradle 文件为及源码目录下的 build.gradle,其他选项默认配置。如下图所示:
  7. 构建后的操作,这里配置输出 html 测试报告和邮件通知相关人员,点击“增加构建后操作步骤”,选择 ”Publish HTML reports”
    这里主要配置测试报告 html 的所在路径及 html 的主页(lint-result.html),其他项为默项
    接下来是配置邮箱,首先是在 jenkins 全局中对邮箱进行配置,jenkins 主界面点击“系统管理”------“系统设置”,编辑最下方的邮件通知,如图所示: 

    主要填写的信息有,SMTP 服务器、用户名和密码,最后可以选择“通过发送测试邮件测试配置”,填写收件地址,测试配置是否正确。接下来配置 “Editable E-mail Notification” 插件信息,这里主要配置邮箱 SMTP 服务器,其他信息根据不同的项目做不同配置(邮件主题、邮件格式、邮件内容、收件人、触发器等),如下图所示:

    然后,在刚才项目中,点击“增加构建后操作步骤”,选择 “Editable Email Notification”,填写邮件的相关信息,包括:收件人地址、邮件内容格式、邮件内容、附件、是否添加构建日志、触发器等。如下图所示:
    点击右下角的 ”Advanced Settings”,可配置触发器,如下图所示 
    这里的邮件发送触发条件是:静态代码扫描构建成功后,发送测试报告到指定的收件人邮箱,至此静态代码扫描持续集成完成。
### 如何在 Jenkins 中安装配置静态代码扫描工具 #### 安装 Jenkins 和必要插件 对于希望在其 CI/CD 流程中加入静态代码分析的企业来说,Jenkins 提供了一个强大的平台来自动化这一过程。当现有的 Jenkins 实例无法满足特定需求时,比如不允许安装额外的插件,则可能需要单独安装一个新的 Jenkins 实例[^1]。 通过 Homebrew 可以方便地完成 macOS 上的 Jenkins 安装: ```bash brew install jenkins ``` 为了支持静态代码扫描功能,在 Jenkins 中还需要安装专门针对所选静态分析工具设计的插件。例如,要集成 SonarQube 或者 Fireline 这样的工具来进行 Java 项目的静态分析,可以利用 Jenkins 插件市场找到对应的插件并进行安装[^2]。 #### 配置 JDK 版本与环境变量 值得注意的是,某些情况下可能会遇到因为不同组件间版本不匹配而导致的问题。特别是当构建环境中使用的 JDK 版本低于所需最低版本时——如使用 JDK 1.8 而 SonarScanner 需求至少为 JDK 17 ——这可能导致执行失败的情况发生。即使尝试调整 `SONAR_JAVA_PATH` 环境变量也未必能解决问题;此时建议确保整个项目及其依赖项都基于相同的主要 JDK 版本来编译和测试[^3]。 #### 设置 SonarQube 扫描器及认证信息 一旦完成了上述准备工作之后,下一步就是在 Jenkins 的全局工具配置页面上定义好 SonarQube Server 的连接参数以及身份验证凭证(推荐采用 Token 方式)。这些设置允许后续的任务能够顺利调用远程服务器上的资源和服务[^4]。 最后一步是在具体的流水线脚本里指定如何触发 SonarQube 分析操作。下面是一个简单的 Groovy DSL 示例展示了怎样在一个典型的 Maven 构建过程中嵌入此类逻辑: ```groovy pipeline { agent any tools { maven "maven3.3.9" } stages { stage('Git Clone') { steps { git 'http://git.com/cicd-dev/sample-maven-project.git' } } stage('SonarQube Analysis') { steps { withSonarQubeEnv('sonarqube-server') { sh 'mvn clean verify sonar:sonar' } } } } } ``` 此段代码片段说明了如何将 Git 存储库克隆下来后立即启动一次完整的 SonarQube 分析流程,并将其结果上传至预先设定好的 SonarQube 服务器实例中去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值