持续集成部署
本文介绍如何基于docker
,将代码静态分析工具sonarqube
集成至Jenkins
。
一、系统架构
以Jenkins
为持续集成系统架构的核心,sonarqube
在代码编译之后进行静态扫描,sonarqube
使用PostgreSQL
作为静态扫描的数据持久化方案。目前架构如下图所示: todo
二、部署步骤
2.1 镜像安装
使用以下命令拖取
Jenkins、PostgreSQL、SonarQube
的docker
镜像:编写docker-compose.yaml
将
docker-compose.yaml
中用到的bind
目录创建出来;在
docker-compose.yaml
同级目录下使用docker-compose up
启动服务;等待服务器启动完成,即可进入
Jenkins
和SonarQube
进行配置。
2.2 配置
初始密码键入
Jenkins
在初次启动会要求输入初始密码,该密码位于$JENKINS_HOME/secrets/initialAdminPassword
,使用下列命令查看:输入该密码并进入
Jenkins
。选择初始安装插件
这一步会选择初始安装的插件,如果当前环境不能翻墙,建议反选所有插件,并进入用户名密码设置阶段,设置完成后就可以进入
Jenkins
。安装插件
Jenkins
提供了在线安装的方式,如果不能翻墙,也可以选择使用下载好的离线插件。点击Manage Jenkins
->Manage Plugin
->Advanced
,点击Browse
上传已经下载好的*.hpi
插件。配置证书
打开sonarqube的web管理页,登陆账号,初始账号和密码均为
admin
。点击Administration
->Security
->User
,在admin
里面点击tokens下面的button,添加界面如下图所示:在
Generate Tokens
随意输入一个key,点击generate
,复制弹出框中的token。打开Jenkins的web管理页,点击
Credentials
->System
,在右边点击Global credentials (unrestricted)
,然后点击左边的Add Credentials
,在Kind
中选为Secret Text
,然后将刚刚复制的token粘贴到Secret
框中,在ID中为该证书取名,Description
可以为空。
其中
Name
表示该服务器的名字,可以随意更改;Server URL
为固定值,如果想修改,需要修改docker-compose.yaml
中的ipam
;Server authentication token
是Jenkins
和sonarqube
服务器通信的证书,选择上一步添加的证书即可。配置
sonarqube scanner
sonarqube scanner
是用于代码静态分析的工具,点击Manage Jenkins
->Global Tool Configuration
,找到SonarQube Scanner Installations
,进入配置。如果不能翻墙,请反选Install Automatically
,并将安装包解压的路径填入SONAR_RUNNER_HOME
。
2.3 添加项目测试
Jenkins
点击New Items
,然后选择Freestyle Project
,输入项目名称点击OK;找到
Source Code Management
,选择Git
,填入项目地址。如果是从公司的gerrit上clone代码,那么需要配置证书,配置方法跟上面所述类似。找到
Build
,选择Add build step
->Execute SonarQube Scanner
。根据所测项目的类型,在Analysis properties
,填入相关配置。以golang
为例,通用填法如下:其中,
$(projectKey)
可以随意填,例如项目的名字,但是对于maven
项目,它的格式为<groupId>:<artifactId>
。具体请参考官方文档。 其余语言参考sonarqube分析参数。
2.4 查看测试结果
三、troubleshooting
执行
docker-compose
可能会有文件夹权限错误:solution:
error 1 bootstrap checks failed sonarqube
执行以下命令即可:
Last updated
Was this helpful?