热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SonarQube篇安装配置sonarqube+gitlab+jenkins+ldap集群

1下载需要的软件包sonarqubefreeedition6.7.5:https:binaries.sonarsource.comDistributionsonar

1 下载需要的软件包

sonarqube free edition 6.7.5:    https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.5.zip

jenkins weekly edition 2.203 :  http://mirrors.jenkins.io/war/2.203/jenkins.war

oracle jdk8 :     https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

mysql5.7.17:     https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

sonar-scanner for Jenkins 3.2.0:无需下载,使用jenkins的sonar-scanner插件即可!

GitLab Community Edition 10.3.0:  https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.3.0-ce.0.el7.x86_64.rpm


2 环境配置


2.1 安装配置JDK环境


  • 下载jdk-8u221版本,上传至服务至器目录/usr/java下。https://www.oracle.com/technetwork/java/javase/archive-139210.html
    tar zxvf jdk-8u221-linux-x64.tar.gz --> /usr/java/jdk1.8.0_221
  • 添加环境变量(vim /etc/profile 在最后按o键输入,粘贴下面配置项)
    export JAVA_HOME=/usr/java/jdk1.8.0_221
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
    export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
    export PATH=$PATH:${JAVA_PATH}
  • 保存退出并刷新配置文件:
    source /etc/profile
  • java -version 
    java version "1.8.0_221"
    Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
    Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

2.2 安装工具

yum install -y epel-release unzip vim wget


3 安装配置gitlab

注意:也可以用docker运行gitlab


3.1 下载安装包

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.3.0-ce.0.el7.x86_64.rpm


3.2 安装环境

sudo yum install -y curl policycoreutils-python openssh-server

sudo systemctl enable sshd

sudo systemctl start sshd


  • 如果系统开启了防火墙还需要在防火墙添加http

sudo firewall-cmd --permanent --add-service=http

sudo systemctl reload firewalld


  • 安装postfix

sudo yum install postfix

sudo systemctl enable postfix

sudo systemctl start postfix


3.3 安装gitlab

sudo rpm -i --force --nodeps gitlab-ce-10.3.0-ce.0.el7.x86_64.rpm


3.4 重新配置启动 

vim /etc/gitlab/gitlab.rb

写入URL:

gitlab-ctl reconfigure

gitlab-ctl --hlep     #查看命令

gitlab-ctl start       #启动

gitlab-ctl stop       #停止


3.5 使用浏览器访问(服务器IP地址)GitLab

首次访问GitLab,系统会让你重新设置管理员的密码,设置成功后会返回登录界面。http://172.16.212.133

默认的管理员账号是root,新密码为12345678。如果你想更改默认管理员账号,请输入上面设置的新密码登录系统后修改帐号名。

登录之后创建project,从导入一个project源码命名为test01,作为备用的测试代码。


3.6 Gitlab的汉化

1)下载汉化包后上传服务器后解压。

2)停止Gitlab服务: gitlab-ctl stop

3)备份服务器上的/opt/gitlab/embedded/service/gitlab-rails目录。
注:该目录下的内容主要是web应用部分,也是当前项目仓库的起始版本,也是汉化包要覆盖的目录。

#将解压后的汉化包覆盖服务器上的/opt/gitlab/embedded/service/gitlab-rails目录。

4)启动Gitlab服务。

sudo gitlab-ctl start

5)重新执行配置命令。
sudo gitlab-ctl reconfigure

完成上述步骤即实现汉化。


4  配置运行jenkins

注意:公司用的是一主多备的jenkins架构,由于目的是测试sonarqube,这里我就不搭建主备了。


1)将下载好的jenkins.war文件保存到/root/data/jenkins.war后执行

nohup java -Dhudson.util.ProcessTree.disable=true -jar /opt/jenkins.war --logfile=server.log --httpPort=9999 > server.log 2>& 1 &


2)页面访问jenkins的地址为http://172.16.212.133:9999

根据提示输入/root/.jenkins/secrets/initialAdminPassword中的密码,安装推荐插件,进入以下页面:


3)如果安装插件很慢,执行以下操作


  • 保留此页面,重新开启一个浏览器tab标签页
  • 输入输入网址http://l172.16.212.133:9999/pluginManager/advanced
  • 进入该页面最底下,找到【升级站点】,把其中的链接改成:

 http://updates.jenkins.io/update-center.json 

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

http://mirror.esuni.jp/jenkins/updates/update-center.json

http://mirror.xmission.com/jenkins/updates/update-center.json

确定保存!


  • 提示jenkins,再重新加载原来的jenkins页面,继续下载插件

4)插件安装完成,进入该页面

然后按照提示操作,进入登录页面


5)安装git,gitlab插件

配置全局工具git

6)配置连接gitlab

点击系统配置:

找到gitlab配置处:

其中,gitlab token生成方法:


5 安装配置LDAP


5.1 安装LDAP

1)安装

yum install -y openldap-servers openldap-clients migrationtools

2)设置openldap管理员密码

slappasswd
#然后根据提示输入密码:
New password: 123456 
Re-enter new password: 123456
#会返回加密的密码字符串,保存好这个字符串
{SSHA}U5wSSZtqOvup3HMLC+tkg32COeuBvpav

3)更改openldap配置

vim /etc/openldap/slapd.d/cn\=config\/olcDatabase\={2}hdb.ldif
#找到olcSuffix,修改为你的dc,如:
dc=wangcai,dc=com
#下一行olcRootDN, 修改为你的用户名,如:
cn=Manager,dc=wangcai,dc=com
#在文件末尾添加一行,设置刚才的密码:
olcRootPW: {SSHA}U5wSSZtqOvup3HMLC+tkg32COeuBvpav

4)更改监控认证配置

vim /etc/openldap/slapd.d/cn\=config\/olcDatabase\={1}monitor.ldif
#修改 olcAccess 中的dn.base=”cn=xxxxxxx”这行为刚才设置的用户名,如:
dn.base=”cn=Manager,dc=wangcai,dc=com”

5) 设置DB Cache

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown -R ldap:ldap /var/lib/ldap/

6) 测试配置文件

slaptest -u
末尾出现configfile testing successed 说明成功了

7) 启动OpenLDAP和开机启动

systemctl start slapd.service
systemctl enable slapd.service

8)导入模板

ls /etc/openldap/schema/*.ldif | xargs -I {} sudo ldapadd -Y EXTERNAL -H ldapi:/// -f {}

9)创建基础目录

#在/etc/openldap目录下添加base.ldif文件

cd /etc/openldap/
vim base.ldif

dn: dc=wangcai,dc=com
o: ldap
objectclass: dcObject
objectclass: organization

dn: cn=Manager,dc=wangcai,dc=com
objectclass: organizationalRole
cn: Manager

注意:每一行的结尾不要留空格

10)执行

ldapadd -f base.ldif -x -w 123456 -D cn=Manager,dc=wangcai,dc=com
//-w 后面就是之前设置的密码,根据自己的填写


5.2 安装web管理服务

1)安装配置httpd

yum install httpd -y

vim /etc/httpd/conf/httpd.conf
#找到AllowOverride一行,修改none为all
#如果想修改端口号,修改Listen 80一行,我改成了8888

systemctl start httpd.service
systemctl enable httpd.service

curl http://127.0.0.1/

2)安装phpldapadmin

yum install phpldapadmin

#如果找不到软件包,重新设置一下yum源
yum localinstall http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

vim /etc/phpldapadmin/config.php
找到并取消下面几行的注释:
$servers->setValue(‘server’,’host’,’127.0.0.1’);
$servers->setValue(‘server’,’port’,389);
$servers->setValue(‘server’,’base’,array(‘dc=wangcai,dc=com’));
(array里加上openldap配置文件中设置的olcSuffix)
$servers->setValue(‘login’,’auth_type’,’session’);
$servers->setValue(‘login’,’attr’,’dn’);
#把它的下一行注释掉
#$servers->setValue(‘login’,’attr’,’uid’);

3)修改访问配置文件,允许任意ip访问

vim /etc/httpd/conf.d/phpldapadmin.conf
取消Order Deny,Allow的注释

systemctl restart httpd.service

4)访问web管理端

访问 http://ip:8888/phpldapadmin
登陆用户名:cn=Manager,dc=wangcai,dc=com

5)创建sonar将要用到的组和用户


6 安装配置mysql


1)安装mysql server

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

yum -y localinstall mysql57-community-release-el7-11.noarch.rpm

yum -y install mysql-community-server

systemctl start mysqld


  • 查看密码

cat /var/log/mysqld.log | grep pass
2019-11-21T06:01:07.802934Z 1 [Note] A temporary password is generated for root@localhost: gWfpO9>)oLQ(

systemctl enable mysqld


  • 修改密码

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Test2019@';


2) 添加sonar数据库及用户

mysql -uroot -pTest2019@

mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql> CREATE USER 'sonar' IDENTIFIED BY 'SonarTest2019@';

mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'SonarTest2019@';

mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'SonarTest2019@';

mysql> FLUSH PRIVILEGES;


7 安装配置sonarqube


1)cd /root/data/,我把sonarqube的压缩包放到了这个路径下。


2)解压到/opt下

unzip sonarqube-*.zip -d /opt


3)重命名目录

mv /opt/sonarqube-8.0 /opt/sonarqube


4)为sonarqube添加用户sonar

sudo adduser sonar -s /sbin/nologin


5)修改目录权限

chown -R sonar:sonar /opt/sonarqube


6) 修改配置文件


  • /opt/sonarqube/conf/sonar.properties

sonar.jdbc.username=sonar
sonar.jdbc.password=SonarTest2019@
sonar.jdbc.url=jdbc:mysql://172.16.212.134:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useCOnfigs=maxPerformance&useSSL=false

sonar.web.javaOpts=-Xmx2048m -Xms512m -XX:+HeapDumpOnOutOfMemoryError

sonar.ce.javaOpts=-Xmx4096m -Xms512m -XX:+HeapDumpOnOutOfMemoryError

ldap.url=ldap://172.16.212.134

#readonly为创建的可以登录到LDAP的用户,123456是readonly的密码

ldap.bindDn=cn=readonly,dc=wangcai,dc=com
ldap.bindPassword=123456
ldap.user.baseDn=ou=Users,dc=wangcai,dc=com
ldap.user.request=(&(objectClass=inetOrgPerson)(mail={login})(|(memberOf=cn=sonar,ou=Groups,dc=wangcai,dc=com)(memberOf=cn=admin,ou=Groups,dc=wangcai,dc=com)))
ldap.user.realNameAttribute=sn
ldap.user.emailAttribute=mail
ldap.group.baseDn=ou=Groups,dc=wangcai,dc=com
ldap.group.request=(&(objectClass=groupOfUniqueNames)(uniqueMember={dn}))

ldap.group.idAttribute=cn


  • /opt/sonarqube/conf/wrapper.conf

wrapper.java.command=/usr/java/jdk1.8.0_231/bin/java


7) 创建系统服务

vim /etc/systemd/system/sonar.service.

[Unit]

Description=SonarQube Server

After=syslog.target network.target

[Service]

Type=forking

ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start

ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop

LimitNOFILE=65536

LimitNPROC=4096

User=sonar

Group=sonar

Restart=on-failure

[Install]

WantedBy=multi-user.target


8)增加配置/etc/sysctl.d/00-sysctl.conf 

# 为 ElasticSearch增加内存

vm.max_map_count = 262144

# 使配置生效

sudo sysctl -p /etc/sysctl.d/00-sysctl.conf


9)开启sonar并使其开机自启

sudo systemctl daemon-reload

sudo systemctl start sonar.service

sudo systemctl enable sonar.service

注意:如果是升级则需要重建elasticsearch的数据索引

sudo systemctl stop sonar.service

sudo rm -rf /opt/sonarqube/data/es*

sudo systemctl start sonar.service


10)检查sonar是否在运行

netstat -tulpn | grep 9000

# SonarQube service log

tail -f /opt/sonarqube/logs/sonar.log

# Web Server logs

tail -f /opt/sonarqube/logs/web.log

# ElasticSearch logs

tail -f /opt/sonarqube/logs/es.log

# Compute Engine logs

tail -f /opt/sonarqube/logs/ce.log


8 jenkins安装配置sonar-scanner3.2.0

注意:最新版本的sonar-scanner4.2.0可以兼容sonarqube server 6.7.5。

1)直接在jenkins页面中系统配置——全局工具配置中安装即可

2)无需另行下载scanner。


9 配置jenkins支持sonarqube,gitlab

1) jenkins页面安装插件sonarqube-scanner

2) 添加sonarqube server


10 Demo代码检测产生数据

1)jenkins页面创建项目

点击应用——保存!

注意:有些项目还需要写sonar.binaries.properties指定字节码文件

2)点击立即构建

3)去sonarqube页面刷新之后可以看到结果:


11 Jenkins配置pipeline分析代码

1)添加项目

#pipline script脚本内容

node("master") {
def giturl='http://172.16.212.134/root/test222.git'

stage('SCM') {
git branch: gitbranch, url: giturl
}

//tool 是在jenkins 全局tool页面配置的,其中scanner是工具sonar-scanner的name,其可以是自带的插件,也可以是安装在Jenkins节点上的sonnar-scanner;SnarQubeEnv的sonar是Jenkins在配置中sonarqube server的name。

stage('SonarQube analysis') {
def scannerHome = tool 'scanner';
withSonarQubeEnv('sonar') {
exclusiOns= ''

//sonar.login后面是sonarqube server上的用户token;

s="${scannerHome}/bin/sonar-scanner -Dsonar.projectKey="+projecttobuild+" -Dsonar.projectName="+projecttobuild+
" -Dsonar.sources=. -Dsonar.login=aa486417c7e1c26ab334043b59c410ffbe2a235f -Dsonar.java.binaries=. -Dsonar.exclusiOns="+exclusions

projectVersion = currentBuild.startTimeInMillis
if(projectVersion!="")
s+=" -Dsonar.projectVersion="+projectVersion
echo "s是"+s
sh s
}
cleanWs()
}
}

stage("Quality Gate"){
timeout(time: 1, unit: 'HOURS') {
def qg = waitForQualityGate()
echo "qg.status是"+qg.status
sOnarurl= 'http://172.16.212.133:9000/dashboard/index/'+projecttobuild
echo "sonarurl是"+sonarurl
echo "qg是"+qg
if (qg.status != 'OK') {
error "Pipeline aborted due to quality gate failure: ${qg.status}"
}
}
}

2)sonarqube页面配置webhook

注意:URL中http://ip:port是jenkins的地址,sonarqube-webhook是固定必须要加上的结尾,此外,我没有添加密码。

3)配置完成之后,执行构建

注意:如果没有设置webhook,则构建时会一直停留在quality gate这个阶段!

最后可以在jenkins页面的项目链接处点击sonarqube ,跳转之后可以查看到结果


推荐阅读
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • Jmeter对RabbitMQ压力测试
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Jmeter对RabbitMQ压力测试相关的知识,希望对你有一定的参考价值。Jm ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 一面自我介绍对象相等的判断,equals方法实现。可以简单描述挫折,并说明自己如何克服,最终有哪些收获。职业规划表明自己决心,首先自己不准备继续求学了,必须招工作了。希望去哪 ... [详细]
  • 找到JDK下载URL当然去官网找了。目前最新的1.8的下载URL(RPM)如下:http:download.oracle.comotn-pubjavajdk8u161-b122f3 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
author-avatar
挥霍人生e
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有