各位朋友,下面我Centos 7 docker 安装代码检测工具Sonarqube和cppcheck等过程放在这里,供大家参考。
首先安装CentOs 7:
docker pull Jenkins/jenkins:lts
mkdir /home/jenkins
修改目录执行权限
chown -R 1000:1000 jenkins/ 给uid为1000的权限
ls -nd jenkins/ 查看文件权限
docker设定执行权限
docker run -itd -p 9090:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/jenkins:/var/jenkins_home jenkins:latest
浏览器输入 http://你的ip地址:8080 即可访问Jenkins
通过浏览器端可以重新启动jenkins
http://localhost:8080/restart/exit/reload
通过服务启动/停止/重启 Jenkins
service Jenkins start/stop/restart
首次启动Jenkins后,需要一个安全密码设定
安装过程中,密码放在了下面路径中,使用cat查看密码,拷贝出密码到上面界面中。
进入之后需要输入密码,在命令行使用如下命令获取密码
cat /home/jenkins/secrets/initialAdminPassword 查看密码
即可进入下面页面:
为Jenkins创新一个用户
配置访问url
祝贺你,如看到下面界面,你现在可以开启Jenkins体验之旅
在Jenkins提供的可选安装的插件中,先安装cppcheck插件,主要进行代码进行分析,单击直接安装即可。
笔者感觉cppcheck基本上检测不出有价值的代码缺陷。
直接安装SonarQube Scanner
安装SonarQube Scanner代码扫描插件。
安装过程中,可选择安装支持中文
配置语言
系统管理-->系统设置-->Locale
补充一下docker中启动Jenkins服务的命令:
启动docker jenkins服务:
service docker start
docker ps
直接启动jenkins:
Docker start 容器名称
停止:
Docker stop 容器名称
Docker run 接参数
参数:
docker run -itd -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/hzq/jenkins:/var/jenkins_home jenkins
解释上述指令:
-p 8080:8080 -p 50000:50000 进行端口映射
--privileged=true 在CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权。
-v /home/hzq/jenkins:/var/jenkins_home 磁盘挂载
下面再把安装Git过程列出:
1.先从yum安装git,使用yum直接安装git是最方便的
yum –y install git
2.在本机某个路径创建一个空仓库(最后以.git结尾)
cd /usr/local
mkdir git
cd git
git init --bare sjs.git
3.创建一个git用户并赋予密码
useradd git
passwd git
4.赋予git用户权限
chown -R git:git sjs.git
5.禁用git用户shell登录(一定要禁用)
vi /etc/passwd
将git用户修改为如下(一般在最后一行)
git:x:1001:1001::/home/git:/usr/bin/git-shell
其他的不用改。服务端完成。
安装上面的git服务端后,再下载G’it客户端进行安装:
在https://git-scm.com/ 网址下载
首先要去下载一个git工具,win下载地址:https://git-scm.com/download/win,如果是其它的平台的,下载地址:https://git-scm.com/downloads,它支持windods,Mac OS X ,linux 和Solaris
在客户端的bash中
git config --global user.name [你的用户名] “cxz”
git config --global user.email [你的邮箱] “manok@tom.com”
git config --
global user.name
出现刚才配置的用户名,表示配置成功
最近在接触laravel,开始用了git,安装了windows for git,往github执行push操作时验证不通过,原来是没有为github账户添加ssh,“ssh-add pathName”时候出现如下信息:
【解决方法】:需要ssh-agent启动bash,或者说把bash挂到ssh-agent下面。
way@DESKTOP-8CTQ9EA MINGW64 /d/XAMpp/htdocs/gitwork (master)
$ ssh-agent bash --login -i
way@DESKTOP-8CTQ9EA MINGW64 /d/XAMpp/htdocs/gitwork (master)
$ ssh-add
Identity added: /c/Users/way/.ssh/id_rsa (/c/Users/way/.ssh/id_rsa)
再执行: ssh-add ~/.ssh/ld_rsa
添加短语:123456
Git 库地址
git clone git@192.168.0.124:/usr/local/git/demo.git
向远程服务器传文件:
$ git remote add orgin /linux0.0.1
$ git commit -m "my commit"
$ git pull orgin master
$ git push -u origin master
git库路径:/usr/local/git/sjs.git
下面再列一下,安装mysql 5.7:
查询是否已经安装:rpm -qa | grep mysql 或 yum list installed | grep mysql
如果安装,则卸载。Yum -y remove mysql-libs.x86_64
Yum -y install mysql-server
设置开机启动:chkconfig mysqld on
启动mysql:sevice mysql start 或 systemctl start mysql.service
登录:root,通过下面找到初始密码
Mysql密码为:root/Test123#
如果想在测试机使用,可降低密码安全策略。
修正密码强度校验规则(用于测试环境使用),高版本的mysql在修改密码时会限制简单密码的创建,如果单单是为了测试使用,可以将他的密码检测策略修改下:
修改:密码最小长度策略
mysql> set global validate_password_length=0;
修改:密码强度检查等级策略,0/LOW、1/MEDIUM、2/STRONG
mysql> set global validate_password_policy=0;
开启mysql的root用户远程连接服务(%号即远程连接,IDENTIFIED BY后面跟的密码)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root123' WITH GRANT OPTION;
在执行刷新
mysql> flush privileges;
开启mysql端口服务
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
启动网络服务
service network restart
下面讲解安装Sonarqube过程:
下载 wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.4.zip //笔者当当初最新版本为7.4版本
# unzip sonarqube-7.4.zip -d /opt/ //这里解压到/opt目录下
# useradd sonar //新建个普通用户,后面以该普通用户身份起动sonarqube服务
# chown -R sonar /opt/sonarqube-7.4/
发现Centos没有安装zip,先安装unzip和zip
Yum install -y unzip zip
修改参数文件:
vim conf/sonar.properties
创建数据库sonar
mysql user: sonar/Sonar123@
以sonar用户启动(不能使用root账号启动,切记,切记,切记!):
sonarqube-6.7]# su sonar ./bin/linux-x86-64/sonar.sh start
启动后,可以下面的界面:
SonarQube默认登录用户名密码:admin/admin
登录后,再进行一些参数配置工作:
先是提供一个token,邮箱即可。
为了显示中文,安装中文插件Chinese park。
如果要检测C/C++语言,则安装C、C++语言插件,安装过程如下:
再下载并安装扫描器:
解压到/usr目录
unzip -d /usr sonar-scanner-cli-3.2.0.1227-linux.zip
修改文件夹名称
mv sonar-scanner-cli-3.2.0.1227-linux sonar-scnner
设置环境变量
# vi /etc/profile
增加和修改下面内容
export SONAR_HOME=/opt/sonarqube-7.4
export SONAR_SCANNER_HOME=/usr/sonar-scanner
export PATH=$PATH:$SONAR_HOME:$SONAR_SCANNER_HOME/bin
使环境变量生效
# source /etc/profile
启动Sonar
#cd /opt/sonarqube-7.4/bin/linux-x86-64
#./sonar.sh start
另外,启动/停止/重启命令如下:
#./sonar.sh start 启动服务
#./sonar.sh stop 停止服务
#./sonar.sh restart 重启服务
为了能够开机启动,可以添加到启动服务中:
$ sudo ln -s /opt/sonarqube-7.4/bin/Linux-x86-64/sonar.sh /usr/bin/sonar
$ sudo chmod 755 /etc/init.d/sonar
$ sudo chkconfig -add sonar
1、创建服务
vi /etc/init.d/sonar
内容如下,其中标红内容为服务绝对路径:
#!/bin/sh
#
# rc file for SonarQube
# chkconfig: 345 96 10
# description:SonarQube system (www.sonarsource.org)
#
### BEGIN INIT INFO
# Provides: sonar
# Required-Start:$network
# Required-Stop:$network
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description:SonarQube system (www.sonarsource.org)
# Description:SonarQube system (www.sonarsource.org)
### END INIT INFO
/opt/sonarqube/bin/linux-x86-32/sonar.sh $*
2、增加执行权限
chmod +x /etc/init.d/sonar
3、添加服务
chkconfig --add sonar
4、配置服务启动时依赖的jdk
vi /opt/sonarqube/conf/wrapper.conf
修改wrapper.java.command=java,配置为jdk中java命令的绝对路径
wrapper.java.command= /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64/jre/bin/java
如果你不知道Jdk安装哪里了,下面可以找java安装路径
- 先看java 版本: java –vesion
- 查看环境变量:echo $JAVA_HOME
- 如果2步没有, 则 which java,找到路径是否是映射位置
- 再使用ls -lrt /usr/bin/java称查找到真实位置
5、启动服务
service sonar start
重要提示:如果不小心使用root启动了,需要做下面处理,重新把执行权限赋值给sonar账号
chown -R sonar.sonar sonarqube-7.4
chmod 777 -R sonarqube-7.4
现在是开机自动启动了。
因为有时候需要对C/C++进行编译,则需要安装gcc,使用yum安装最方便:
yum install gcc
yum install gcc-c++
准备一个C语言代码案例,检验一下检测效果
生产者和消费者c例子,编译命令:gcc -pthread -o dd.out dd.c
在代码文件夹的根目录下新建Sonar-scanner的配置文件sonar-project.properties
sonar.projectKey=demo
sonar.projectName=cdemo
sonar.projectVersion=1.0
sonar.sources=/home/demo/c
sonar.java.binaried=/home/demo/c
sonar.language=c
sonar.source.Encoding=UTF-8
然后当前项目路径执行
#sonar-scanner
控制台会打印分析过程,当出现SUCCESS时,分析成功!
在Jenkins插件中安装cpplint,由于不支持该插件,所以需要通过warning插件安装。
如果想单独安装cppcheck,则可以通过下面过程安装,单独使用cppcheck检测:
下载http://cppcheck.sourceforge.net/
tar -xzvf cppcheck-1.85.tar.gz
sudo make SRCDIR=build CFGDIR=/usr/share/cppcheck/
sudo make install CFGDIR=/usr/share/cppcheck/
验证
[root@localhost cppcheck-1.85]# cppcheck --version
Cppcheck 1.85
但是很遗憾,cppcheck没有描述那么强大,基本上检测不出有价值的bad smell。
(完)