iT邦幫忙

2026 iThome 鐵人賽

DAY 16
0
IT Operation

迎接 AI 開發爆發期:告別手動部署,帶領企業團隊從 Git 規範到 CI/CD 實戰系列 第 16

Day 16 Jenkins 套件管理與安全性配置 — 打造自動化的神經網路

  • 分享至 

  • xImage
  •  

如果說 Tools 是 Jenkins 的手腳,那麼 Plugins 就是它的神經網絡。
透過Plugins,Jenkins 才能與外部的 GitLab、SonarQube 或 Docker 聯動。

本篇將介紹如何配置核心外掛與建立嚴格的安全性憑證管理。

關鍵 Plugins 清單:為什麼選擇它們?

進入 Manage Jenkins -> Plugins -> Available Plugins 搜尋並安裝以下插件:

  • SCM 整合 (Git, GitLab Plugin):讓 Jenkins 能感知 GitLab 的 Webhook 並拉取程式碼。
  • 建置與 Runtime (MSBuild, NodeJS Plugin, Docker Pipeline):提供特定語言環境的封裝,其中 Docker Pipeline 允許我們在容器內執行建置,確保環境的潔淨與一致性。
  • 品質監控 (SonarQube Scanner, Sonar Quality Gates):這是本專案的核心,負責與 SonarQube Server 對接並獲取「品質門檻」結果。
  • 安全性與秘密管理 (HashiCorp Vault, Credentials Binding):確保敏感金鑰不會出現在 Pipeline 日誌中,實現「秘密不落地」。
  • 介面與效率 (Pipeline: Stage View, Role-based Authorization Strategy):提供可視化的流程進度,並落實權限控管。

憑證管理 (Credentials):安全的核心

進入 Manage Jenkins -> Credentials -> System -> Global credentials 建立憑證。

1. SSH 私鑰憑證 (Kind: SSH Username with private key)

  • ID: Deploy-Server-Key
  • Username: root
  • Private Key: 貼入用於存取 Agent 或部署伺服器的私鑰。
  • 用途: 用於 Jenkins Master 與 Agent 間的通訊,或透過 SSH 派送檔案。

2. SonarQube 驗證憑證 (Kind: Secret text)

  • ID: SonarQube-Token
  • Secret: 貼入 Day 13 生成的 Token。
  • 用途: 授權 Jenkins 將掃描數據推送到 SonarQube Server。

配置 SonarQube Server 系統連結

  1. 進入 Manage Jenkins -> System
  2. 找到 SonarQube servers 區塊,點擊 Add SonarQube
    • Name: SonarQube (此名稱將用於 withSonarQubeEnv 指令)。
    • Server URL: https://ci-cd.example.com/sonarqube
    • Server authentication token: 選擇剛才建立的 SonarQube-Token
  3. 核心設定:勾選 Enable injection of SonarQube environment variables
    • 技術說明:此選項會自動在 Pipeline 執行期間注入環境變數(如 $SONAR_HOST_URL),減少手動傳參的繁瑣與出錯率。

配置 GitLab 連結

  1. 在同一頁面找到 GitLab 區塊。
  2. Connection name: GitLab-Official
  3. GitLab host URL: https://gitlab.com
  4. Credentials: 建立一個 GitLab API Token(由 GitLab User Settings -> Access Tokens 生成),這將用於 Jenkins 自動向 GitLab 報告建置狀態(Build Status)。

安全性策略:Role-Based Strategy

進入 Manage Jenkins -> Security,將 Authorization 改為 Role-Based Strategy

  • 優勢:相較於簡單的矩陣權限,Role-Based 允許我們基於「專案名稱正則表達式」來定義權限。例如,開發者 A 只能看到並執行名稱以 Dev_ 開頭的專案,有效落實最小權限原則(PoLP)。

結語

完成外掛與安全性配置後,Jenkins 已經不再是一個孤島,而是具備了與整個開發生態系溝通的能力。然而,對於使用 SonarQube 社群版的團隊來說,預設不支援多分支分析是一個痛點。下一章,我們將介紹如何透過外掛突破這項限制。


上一篇
Day 15 Jenkins 全域工具配置 (Global Tool Configuration) — 構建跨環境的抽象層
系列文
迎接 AI 開發爆發期:告別手動部署,帶領企業團隊從 Git 規範到 CI/CD 實戰16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言