Arbess 是一款國產開源免費的 CI/CD 工具,支持免費私有化部署,一鍵安裝零配置。本文將詳細介紹如何安裝配置使用GitLab、SonarQube、Arbess系統,使用流水線拉取GitLab源碼、使用SonarQube進行代碼掃描,構建安裝包並部署到遠程主機。

1、Gitlab 安裝與配置

本章節將介紹如何使用CentOS9搭建Gitlab服務器,並將代碼存放在Gitlab服務器,提供給Arbess克隆源碼。

1.1 安裝

  • 安裝基礎依賴。

sudo yum update -y

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

sudo systemctl enable --now sshd

  • 獲取Gitlab安裝包。

curl -LO https://packages.gitlab.cn/repository/el/8/gitlab-jh-17.7.0-jh.0.el8.x86_64.rpm

  • 安裝Gitlab安裝包。訪問URL可以自己設置。

export EXTERNAL_URL="http://ip" && sudo rpm -ivh gitlab-jh-x.x.x.rpm

  • 安裝完成之後,使用sudo gitlab-ctl status檢查服務狀態。
  • 瀏覽器訪問配置的http://ip,使用用户名root,密碼 /etc/gitlab/initial_root_password 中獲取,進行登錄。

1.2 配置

gitlab安裝完成之後,可以將代碼推送到倉庫中,Arbess克隆源碼需要創建GItlab的個人令牌,用於Arbess訪問Gitlab。進入用户設置→訪問令牌,按照需求創建創建訪問令牌。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_服務器

創建個人令牌

令牌創建完畢,請妥善保存好您的令牌。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_安裝包_02

查看個人令牌

2、SonarQube 安裝與配置

本章節將介紹如何使用CentOS9搭建SonarQube25.1服務,在SonarQube創建項目,提供給Arbess調用。

2.1 安裝

  • 安裝依賴

首先需要Java17和PostgreSQL。安裝PostgreSQL數據庫之後,執行如下命令,創建數據庫sonarqube→創建用户名密碼→賦予權限。

sudo -u postgres psql

CREATE DATABASE sonarqube WITH ENCODING 'UTF8' TEMPLATE template0;

CREATE USER sonar WITH PASSWORD 'sonar';

GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonar;

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_#gitlab_03

創建SonarQube數據庫

數據庫創建完成之後,可以修改數據庫認證配置,編輯/var/lib/pgsql/15/data/pg_hba.conf,在最下方添加如下內容,並重啓服務。

host sonarqube sonar 127.0.0.1/32 scram-sha-256

  • 安裝SonarQube

依賴安裝完畢之後,安裝SonarQube 25.1。

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-25.1.0.77747.zip

sudo unzip sonarqube-*.zip -d /opt

sudo mv /opt/sonarqube-* /opt/sonarqube

創建專用用户。

sudo useradd -M -d /opt/sonarqube -s /bin/false sonar

sudo chown -R sonar:sonar /opt/sonarqube

修改SonarQube數據連接信息。編輯/opt/sonarqube/conf/sonar.properties

sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube

sonar.jdbc.username=sonar

sonar.jdbc.password=sonar

sonar.web.port=9000

修改完成後進入,啓動SonarQube服務。

sudo -u sonar /opt/sonarqube/bin/linux-x86-64/sonar.sh start

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_#Arbess_04

啓動SonarQube服務

安裝成功後訪問 http://127.0.0.1:9000 地址使用用户名密碼:admin\admin,訪問SonarQube。

2.2 配置

登錄SonarQube系統後,需要創建項目,以及將代碼導入項目進行分析。在SonarQube首頁,點擊Create Project,創建項目。輸入項目名稱、項目Key,點擊下一步進行創建。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_#gitlab_05

創建項目

項目創建完成之後,需要生成項目Token,點擊右上角頭像 → My Account → Security。輸入Token名稱 → 點擊 Generate , 複製生成的Token。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_安裝包_06

創建Token

創建完畢之後,需要記住token和項目名稱,Arbess集成SonarQube需要用到。

3、Arbess 安裝與配置

3.1 安裝

本文以CentOS操作系統為例。

  • 下載,服務端安裝包含Agent安裝,CentOS安裝包下載地址:Arbess下載,點擊CentOS下載,下載完成後得到類似tiklab-arbess-x.x.x.rpm的文件。
  • 安裝,上傳到服務器上,在文件同級目錄執行命令安裝。

rpm -ivh tiklab-arbess-x.x.x.rpm

  • 啓動,系統默認安裝路徑為/opt目錄,進入/opt/tiklab-arbess/bin目錄下,執行./arbess start即可啓動成功。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_服務器_07

啓動Arbess系統

使用 http://ip:9200 進行訪問。使用初始用户名密碼admin\123456登錄,首次登錄需要修改管理員密碼。成功登錄後展示Arbess首頁。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_#ci/cd_08

Arbess首頁

3.2 配置

Arbess流水線採用可視化設計,實現Java項目自動化部署,在流水線中可克隆Gitlab倉庫代碼、集成SonarQube進行代碼掃描。創建流水線,進入流水線設計頁面進行操作。

3.2.1 配置GitLab源碼任務

  • 配置GitLab服務集成

流水線配置GitLab源碼任務之前,需要添加GitLab服務集成,在系統設置→集成與開放→服務集成頁面添加相關服務。授權類型選擇Gitlab、填寫名稱、AccessTocken(個人密鑰,即文章1.2部分創建的個人訪問令牌)。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_服務器_09

添加源碼集成

如需要添加自建的Gitlab,授權類型選擇自建Gitlab、填寫名稱、服務地址、AccessTocken(個人密鑰)。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_#gitlab_10

添加源碼集成

  • 添加GitLab源碼任務

服務集成添加完畢之後,進入流水線設計,點擊新階段→源碼→GitLab。需要填入任務名稱、Git版本、GitLab授權信息(AccessTocken)、倉庫、分支等信息。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_#Arbess_11

添加GitLab源碼任務

字段

描述

任務名稱

任務名稱清晰地標識項目或對象。

Git版本

Arbess所在服務器Git安裝路徑。

GitLab授權信息

私人令牌,AccessTocken。

倉庫

選擇授權信息後點擊倉庫,程序會自動獲取憑證權限下的倉庫列表,管理者只需選擇需要配置的倉庫即可。

分支

選擇代碼的分支。填寫需要拉取遠程倉庫具體的分支,不填默認為master分支,填寫錯誤會導致任務執行失敗。

3.2.2 配置SonarQube代碼掃描

  • 配置SonarQube服務集成

流水線配置SonarQube任務之前,需要添加SonarQube服務集成,在系統設置→集成與開放→服務集成頁面添加相關服務。授權類型選擇Sonar、填寫名稱、服務地址、認證類型(用户名密碼、密鑰)、用户名、密碼。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_#gitlab_12

添加SonarQube服務

  • 添加SonarQube代碼掃描任務

服務集成添加完畢之後,進入流水線設計,點擊新階段→代碼掃描→SonarQube代碼掃描。添加成功之後,彈出代碼掃描的配置。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_#Arbess_13

配置SonarQube代碼掃描任務

字段

描述

任務名稱

任務名稱清晰地標識項目或對象。

掃描代碼語言

掃描代碼語言。

JDK版本

所在服務器JDK安裝路徑。

Maven版本

所在服務器Maven安裝路徑。

項目名稱

掃描的項目名稱,在SonarQube中創建的項目名稱。

掃描代碼地址

掃描代碼存放路徑,默認為${DEFAULT_CODE_ADDRESS},也可輸入絕對路徑。

SonarQube服務

安裝SonarQube的服務器地址、用户名、密碼。

3.2.3 配置Maven構建任務

代碼掃描添加完畢之後,添加構建安裝包任務。根據代碼構建方式選擇Maven構建,點擊新階段→構建→Maven構建。輸入構建信息,輸入完成後,點擊空白處進行保存。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_#Arbess_14

配置Maven構建任務

字段

描述

任務名稱

任務名稱清晰地標識項目或對象。

JDK版本

Arbess所在服務器JDK安裝路徑。

Maven版本

Arbess所在服務器Maven安裝路徑。

模塊地址

構建路徑,默認為${DEFAULT_CODE_ADDRESS},也可輸入絕對路徑。

執行命令

執行Maven構建的命令。

3.2.4 配置主機部署任務

點擊新階段→部署→主機部署。輸入部署信息,部署的內容可以使用變量,添加變量後使用${變量名稱}進行引用,輸入完成後,點擊空白處進行保存。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_#gitlab_15

配置主機部署任務

字段

描述

任務名稱

任務名稱清晰地標識項目或對象。默認主機部署。

主機地址

部署主機遠程SSH認證憑證。

部署文件

需要部署的文件,可以寫絕對路徑,也可以寫泛路徑,泛路徑需要配合部署文件規則來匹配到部署文件。

部署文件匹配規則

文件匹配規則,支持正則表達式。

部署位置

部署遠程主機位置。

部署命令

文件部署命令。

至此流水線設計完畢,下面介紹流水線運行以及查看代碼掃描報告。

4、運行流水線

  • 運行流水線

流水線設計完畢之後,Arbess支持自動觸發、Webhook觸發、手動觸發三種運行模式。點擊右上角“運行”按鈕,手動觸發流水線。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_服務器_16

運行流水線

流水線運行同時,點擊認為標籤右下角“日誌”,可查看運行實時日誌。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_安裝包_17

查看詳細日誌

  • 查看代碼掃描報告

全部任務顯示為√則運行成功,運行完畢之後,可以在測試報告頁面查看SonarQube代碼掃描報告,點擊測試報告→代碼掃描→SonarQube,查看SonarQube代碼掃描報告。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_#gitlab_18

查看測試報告

點擊SonarQube代碼掃描報告名稱,進入跳轉到SonarQube查看詳細報告。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_安裝包_19

查看詳細報告

  • 查看運行歷史

可以在Arbess歷史頁面查看到流水線運行歷史。點擊運行歷史序號,即可查看詳細的運行日誌。

Arbess從初級到進階(14) - 使用Arbess+GitLab+SonarQube實現Java項目自動化部署_安裝包_20

運行歷史

至此,使用Arbess成功搭建流水線,用來拉取GitLab源碼、使用SonarQube代碼掃描,構建安裝包並主機部署。