摘要:上一节我们实现了Jenkins的CI,今天我们在上一节的基础上来实现CD操作和代码检查。
一、添加tag
1、打开gitlab,给上次提交的代码,打标签V1.0
2、修改代码,将内容改成如下:
docker-compose.yaml内容如下:
将上述代码push到gitlab上,提交成功后,给代码打上V2.0的标签。
3、再次修改代码,将所有的2.0修改为3.0,push到gitlab上,提交成功后,给代码打上V3.0的标签。
二、Jenkins安装 git parameter插件
修改jenkins上mytest的工程如下:
勾选“This project is parameterized”,内容如下:
Build Setup中添加构建步骤“Excute shell”,并将其移到maven的前面,如下:
然后点击保存。
三、构建测试
上面创建完成后,进入jenkins的mytest工程,这时左侧的build变成了“Build with Parameters”,点击后会提示选择一个标签。不同的标签对于不同的版本。
四、部署sonarqube
1、部署sonarqube
sonarqube是一个代码检测工具,依赖PostgreSQL数据库。我们以容器的方式运行PG数据库和sonarqube工具,docker-compose脚本如下:
version: "3.1"
services:
db:
image: postgres
container_name: db
ports:
- 5432:5432
networks:
- sonarnet
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
volumes:
- ./postgresql:/var/lib/postgresql
- ./postgresql/data:/var/lib/postgresql/data
sonarqube:
image: sonarqube:9.6.1-community
container_name: sonarqube
depends_on:
- db
ports:
- 9000:9000
networks:
- sonarnet
environment:
SONAR_JDBC_URL:jdbc: postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
volumes:
- ./logs:/opt/sonarqube/logs
- ./data:/opt/sonarqube/data
- ./extensions:/opt/sonarqube/extensions
networks:
sonarnet:
driver: bridge
运行起来后,通过浏览器访问http://IP:9000访问sonar的web页面,用户名密码均为admin,然后点击右上角头像–我的账户–安全来创建token。
2、部署sonar-scanner
# 下载
[root@jenkins ~]# wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip
# 解压
[root@jenkins ~]# unzip sonar-scanner-cli-4.7.0.2747-linux.zip
[root@jenkins ~]# mv sonar-scanner-4.7.0.2747-linux /app/sonar-scanner
# 修改配置
[root@jenkins ~]# cd /app/sonar-scanner/
[root@jenkins ~]# vim sonar-scanner.properties
[root@jenkins ~]# cat /app/sonar-scanner/conf/sonar-scanner.properties
#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here
#----- Default SonarQube server
sonar.host.url=http://11.0.1.13:9000
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
3、配置Jenkins的System-configure
如下:
4、配置jenkins的全局配置,添加SonarqubeScanner
5、配置mytest的BuildSetup,在maven后面添加一步“Execute SonarQube Scanner”
内容如下:
6、Jenkins所在服务器上的maven配置文件配置sonarqube
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.login>admin</sonar.login>
<sonar.password>Elk@95598</sonar.password>
<sonar.host.url>http://11.0.1.13:9000</sonar.host.url>
</properties>
</profile>
7、部署nodejs
我的操作系统是CentOS7.9-2009,选择nodejs对应版本是node-v14,低版本用不了,高于v16版本需要更高版本的lib库支持。
# 下载
wget https://nodejs.org/download/release/v14.21.2/node-v14.21.2-linux-x64.tar.gz
# 解压
unzip node-v14.21.2-linux-x64.tar.gz
mv node-v14.21.2-linux-x64 /app/node-v14.21.2
# 修改系统环境变量
# vim /etc/profile
export NODE_HOME=/app/node-v14.21.2
export PATH=$NODE_HOME/bin:$PATH
# 创建软链接,不然sonarqube在代码检查过程中依然会报错
ln -s /app/node-v14.21.2/bin/node /usr/local/bin/node
ln -s /app/node-v14.21.2/bin/npm /usr/local/bin/npm
7、测试
以上配置完成后,再次Build,选择任意tag,会在控制台输出中看到代码检查过程。
下面是代码检查的记录和结果: