Centos Gitlab+Jenkins+SonarQube實現持續集成以及代碼審計環境搭建

Gitlab的安裝方式請參考我之前的一篇文章(Centos7 YUM安裝GitLAB環境),本篇文章具體主要參照這篇文章https://bloodzer0.github.io/ossa/other-security-branch/devsecops/gjs/
系統環境Centos 7.6.1810

首先解決端口衝突,因爲我們要安裝jenkins,會佔用8080端口,只能修改gitlab的8080端口。

# 修改配置文件
# 修改監聽文件
vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
listen "127.0.0.1:8082", :tcp_nopush => true # 原本爲:listen "127.0.0.1:8080", :tcp_nopush => true

# 重啓服務
gitlab-ctl reconfigure
gitlab-ctl restart

配置Gitlab-Runner
Gitlab-Runner是Gitlab CI的一個組件是配合GitLab CI進行構建任務的應用程序,GitLab CI負責yml文件中各種階段流程的執行,而GitLab Runner就是具體的負責執行每個階段的腳本執行,一般來說GitLab Runner需要安裝在單獨的機器上通過其提供的註冊操作跟GitLab CI進行綁定,當然,你也可以讓其和GitLab安裝在一起,只是有的情況下,你代碼的構建過程對資源消耗十分嚴重的時候,會拖累GitLab給其他用戶提供政策的Git服務。
具體方法參考https://mirrors.tuna.tsinghua.edu.cn/help/gitlab-runner/,建議搭建收藏清華大學的開源鏡像站,裏面有很多資源用國外的鏈接太慢,但是更換成清華的yum源感覺就不一樣了(當然除了清華的源還有其他很多國內的源,例如阿里,網易等)。

#新建 /etc/yum.repos.d/gitlab-runner.repo,內容爲
[gitlab-runner]
name=gitlab-runner
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

#再執行
sudo yum makecache
sudo yum install gitlab-runner

配置Jenkins

# 下載Jenkins,這裏可以去官網查看最新版的鏈接進行下載
wget https://pkg.jenkins.io/redhat-stable/jenkins-2.176.3-1.1.noarch.rpm
rpm -ivh jenkins-2.176.3-1.1.noarch.rpm
# 安裝java環境
yum install java
# 啓動jenkins
systemctl start jenkins.service
# 防火牆打開8080端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

訪問8080端口初始化jenkins,安裝默認插件(當然你也可以將後續我們要安裝的SonarQube Scanner插件裝上),jenkins的初始化需要很注意,如果配置不對很可能造成登錄不顯示網頁

配置Jenkins https
如果不需要則可以跳過
首選需要一個jks的證書,可以參考我上一篇文章申請的本地證書,然後通過下面命令轉換成jks證書

openssl pkcs12 -export -out test.pfx -inkey localhost.key -in localhost.crt
keytool -importkeystore -srckeystore test.pfx -destkeystore server.jks -srcstoretype PKCS12 -deststoretype JKS
keytool -importkeystore -srckeystore server.jks -destkeystore server.jks -deststoretype pkcs12

然後更改jenkins配置
將 /etc/sysconfig/jenkins 的最後一行JENKINS_ARGS=""更新爲:

JENKINS_ARGS=" --httpsPort=8443 --httpsKeyStore=/var/lib/jenkins/server.jks --httpsKeyStorePassword=xxx --httpsPrivateKeyPassword=xxx --httpPort=-1"

配置了https訪問的端口就不再是8080而是8443

配置SonarQube

# 下載SonarQube(需要注意sonarqube在7.9版本需要java 11+並且不支持mysql,這裏選擇使用7.8版本)
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.8.zip
# 解壓
unzip sonarqube-7.8.zip

解壓過後把sonarqube放在你想放的位置。
然後進行數據庫mysql的安裝。

yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
yum -y install mysql mysql-devel mysql-server mysql-utilities

配置數據庫

#創建用戶sonar密碼sonar
create user 'sonar'@'localhost' identified BY 'sonar';
# 創建數據庫
create database sonar default character set utf8 collate utf8_general_ci;
# 授權
grant all on sonar.* to sonar@'localhost';

更改SonarQube配置文件,在/sonarqube-7.8/conf/下sonar.properties

# 配置數據庫連接信息
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

添加sonar用戶,由於SonarQube集成了elasticsearch,不能使用root進行啓動

# 添加用戶
useradd sonar
# 設置密碼
passwd sonar

啓動SonarQube

# 在sonarqube-7.8文件夾下的bin/linux-x86-64下
./sonar.sh start

訪問9000端口即可
配置sonar-scan

wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.0.0.1744-linux.zip
unzip sonar-scanner-cli-4.0.0.1744-linux.zip

將sonar-scanner放在之前sonar文件夾
配置path

ln -s sonar-scanner-cli-4.0.0.1744-linux sonar-scanner
vim /etc/profile
export PATH=$PATH:/INSTALL/sonar/PATH/sonar-scanner/bin
source /etc/profile

sonar連接Gitlab
下載wget https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases/download/3.0.2/sonar-gitlab-plugin-3.0.2.jar
放在sonar文件夾的/extensions/plugins然後訪問sonar在插件裏面搜索git,安裝插件就可
安裝插件
一些問題
如果下載SonarQube7.9的版本還需要下載java 11+的版本,一般會報錯

WrapperSimpleApp: Encountered an error running main: java.lang.IllegalStateException: SonarQube requires Java 11+ to run
java.lang.IllegalStateException: SonarQube requires Java 11+ to run

下載jdk 12地址

https://download.java.net/java/GA/jdk12.0.2/e482c34c86bd4bf8b56c0b35558996b9/10/GPL/openjdk-12.0.2_linux-x64_bin.tar.gz

有時候es會報錯,所以不能用root進行啓動
還有個問題是SonarQube7.9不支持mysql,只能換其他的數據庫

參考文檔:
https://www.jianshu.com/p/b92add446d4e
https://bloodzer0.github.io/ossa/other-security-branch/devsecops/gjs/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章