一、Overview
繼續 DevOps 實施的相關內容,在上一篇的博客中,完成了對于工具鏈中使用到的軟體所需的運行環境的配置,在這一篇的博客中,將聚焦于我們使用到的兩個主要的軟體:Jenkins 與 SonarQube 在 Windows 服務器上的部署安裝,為后續 DevOps 的實施,構建軟體基礎
二、Contents
- 從零開始針對 .NET 應用的 DevOps 運營實踐 - 運行環境搭建
- 從零開始針對 .NET 應用的 DevOps 運營實踐 - Jenkins & SonarQube 安裝配置
三、Step by Step
3.1、前言
在 Jenkins 與 SonarQube 的版本選擇上,這里我選擇的都是最新的 LTS 版本,也就是長期支持版本,如果你沒有什么特定的需求的話,建議不要選擇過于古老的軟體版本
這里請重點關注 SonarQube 的版本問題,對于自動化代碼檢查的資料,SonarQube 支持持久化到常見的資料庫中(默認使用的是 H2 資料庫),然而 8.x 之后的版本只支持持久化到 Oracle、SQL Server 以及 PostgreSQL,嗯,同 Gitlab 一樣,沒有 MySQL
因此,如果你需要持久化資料到 MySQL 資料庫,最后一個能選擇的版本則是 7.7 版本(電梯直達),并且這個版本只支持 MySQL 5.6、5.7,考慮到后續已經不再支持 MySQL 資料庫的緣故,請謹慎考慮是否一定要采用該版本
3.2、Jenkins
3.2.1、程式安裝
打開 Jenkins 官網,找到下載頁面(https://www.jenkins.io/download/),選擇最新的 LTS 版本下載,針對 Windows 平臺,可以通過 war 包運行,在 docker 中運行,以及通過 msi 安裝包安裝之后,作為一個 Windows 服務運行
作為一個需要持續運行的服務,這里我選擇通過 msi 方式的來完成程式的部署

雙擊 msi 安裝檔案,配置軟體的安裝路徑,對于這種基礎的軟體服務,建議還是放在默認的位置

因為 Jenkins 在安裝之后,是會作為一個獨立的 Windows 服務的,如果你需要使用域賬戶或本地賬戶作為服務的運行方來運行該服務的話,這里需要進行配置賬戶、密碼

Jenkins 默認使用 8080 埠,可以點擊下方的 Test Port 按鈕來測驗當前設定的埠是否已經被占用

在上一篇中有提到 Jenkins 是基于 Java 進行開發的,在軟體的安裝程序中,安裝程式默認會帶出來我們配置的 Java SDK 資訊,當然,你也可以在這里針對 Jenkins 設定不同的 Java SDK

完成所需運行環境的配置之后,將 Jenkins 服務所使用的 8080 埠添加到防火墻的白名單中,從而允許別的機器可以訪問到該服務

當配置完成之后,點擊 Install 等待安裝完成即可,當安裝向導提示安裝完成時就可以通過瀏覽器訪問 Jenkins

3.2.2、基礎配置
打開瀏覽器,按照頁面上的提示,我們需要找到位于指定路徑上的密碼,復制到頁面上的輸入框,來完成 Jenkins 的解鎖,從而繼續后續的操作

解鎖之后,Jenkins 會提示你安裝一些必要的插件,這里如果你因為網路問題沒有安裝成功或者壓根沒有彈出這個頁面,也沒有關系,后續可以在程式中手動的選擇需要安裝的插件

等待插件的安裝完成 or 直接跳過插件的安裝,創建一個管理員賬戶,用來管理我們的 Jenkins 系統,點擊下一步,會需要我們配置一個 Jenkins URL,這個地址采用默認的地址即可,這里一定要注意,如果你調整了該 URL 的配置,后續一定要通過 Web 服務器進行反向代理,否則后續會出現各種問題

點擊保存并完成之后,基本的 Jenkins 運行環境就安裝配置完成了,當然,為了實作我們的需求,還需要后續在此基礎上,安裝各種所需的插件,從而實作構建流水線來完成持續集成的功能

3.3、SonarQube
3.3.1、程式安裝
同 Jenkins 一樣,SonarQube 同樣選擇最新的 LTS 版本進行下載了(電梯直達)

SonarQube 下載完成的是一個壓縮包,解壓壓縮包,找到 bin 目錄,里面列出了在不同作業系統運行程式的方式,因為我們是在 Windows 平臺,所以這里選擇 windows-x86-64 檔案夾,同樣的,作為一個需要常駐的服務,這里最好也將應用作為 Windows 服務進行運行
右擊 InstallNTService.bat 選擇以管理員身份運行,再使用管理員身份運行 StartNTService.bat 即可

打開瀏覽器,SonarQube 默認使用 9000 埠,等待一段時間,如果可以看到如下的頁面,則代表應用已經安裝成功,點擊右上角的 Log in,輸入默認的賬戶、密碼即可登錄到系統中(默認的賬戶、密碼都是 admin)
PS:如果 9000 埠已經被占用了,可以找到 conf 檔案下的 sonar.properties 檔案修改 sonar.web.port 配置然后重啟服務即可

3.3.2、資料持久化
對于自動化的代碼檢查資料,是具有一定的價值的,因為目前資料還是存盤在 SonarQube 內置的 H2 資料庫中,為了便于后續的使用,這里選擇持久化到 SQL Server 資料庫中
PS:請關注你使用的 SonarQube 所支持的資料庫版本資訊
新建一個資料庫,這里必須調整資料庫的排序規則為 CS(case-sensitive,區分大小寫)、AS(accent-sensitive,區分重低音),例如這里我選擇的排序規則為 Chinese_PRC_CS_AS

資料庫創建之后,需要執行如下的 SQL 陳述句,確保當前庫的 is_read_committed_snapshot_on 屬性設定為 true,這里的 sonar 就是我新建的資料庫名稱
-- 查看 is_read_committed_snapshot_on 是否啟用
SELECT is_read_committed_snapshot_on FROM sys.databases WHERE name='sonar';
-- 打開 is_read_committed_snapshot_on
ALTER DATABASE sonar SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;
資料庫設定完成之后,我們需要下載 Microsoft SQL JDBC Driver 7.2.2 package 這個 SQL Server 的 JDBC 驅動到本地,這里選擇下載壓縮包

找到下載之后的壓縮包解壓,選擇 auth 路徑下的 x64 檔案夾,獲取到這個 64 位的 sqljdbc_auth.dll 檔案,拷貝到 SonarQube 的路徑下,這里我在 \extensions\jdbc-driver 路徑下新建了一個 mssql 檔案夾用來存放這個 dll 檔案

驅動下載完成后,找到 conf 檔案下的 sonar.properties 檔案,修改資料庫連接資訊,重新啟動 SonarQube 服務,等待資料庫表的創建完成,嗯,這個程序比較慢,耐心等待

等待應用的重新啟動完成,與 Jenkins 相同,我們可以安裝各種插件來豐富 SonarQube,這里我們可以在登錄系統后,點擊 Administration 選單,在 Marketplace 中,下載所需的插件,例如這里可以下載中文的語言包,重啟之后,系統就變成了中文

同樣的,針對服務器無法連接外網的同學,我們可以從網路上找到需要的插件進行下載,然后放到程式運行路徑下的 \extensions\plugins 檔案夾中,重啟服務即可
3.4、總結
自此,Jenkins 和 SonarQube 就已經安裝配置完成了,當然,為了實作我們的需求,在實際使用時 Jenkins 還需要安裝一些必須的插件,在下一章中,就可以通過與 Gitlab 進行串接,完成 .NET 應用的持續集成作業
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/180096.html
標籤:其他
上一篇:從零開始針對 .NET 應用的 DevOps 運營實踐 - Jenkins & SonarQube 安裝配置
下一篇:求EXCEL檔案改名VBA陳述句
