這篇整理我初學 Jenkins 過程遇到的幾個術語及概念,後續會應用到。

Pipeline

Jenkins Piepline 隨 Jenkins 2.0 推出,是一組實踐連續交付(Continuous Delivery)的 Plugin,超過 10 個相關套件。延伸閱讀:為什麼我們需要 CI / CD ?Continuous integration vs. continuous delivery vs. continuous deployment

Pipeline 通常包含由版控取得檔案、建置、測試、部署等一連串步驟,在每次簽入版控時觸發 Pipeline 執行,以持續交付為目標。在 Jenkins 裡 Pipeline 定義稱為 Jenkinsfile,採文字檔形式儲存,以便於自動化執行及版控管理。此外,Blue Ocean 則是設計與管理 Pipeline 的網頁介面。

Pipeline 是 Jenkins 實踐 CI/CD 的重要基石,我目前的 Jenkins 應用僅止於程式編譯部署,留待日後再深入研究。

Credential(認證身分)

Jenkins 需要跟很多第三方系統打交道(例如:版控系統、檔案伺服器、雲端主機... )﹐管理者可在系統新增 Credential 資料,並授權其適用於整個 Jenkins、特定專案,或特定使用者。Credential 包含以下幾種類型:

  • Secret Text - API Token,例如:Github 個人存取 Token
  • 帳號密碼 - 能以冒號分隔的多段字串,例如:username:password
  • Secret File - 將祕密內容儲存於檔案
  • SSH Username with Private Key - 如 SSH 公私鑰
  • Certificate - PKCS#12 憑證
  • Docker Host Certificate Authentication

Credential 資料會以 Jenkins Instance ID 加密保存,每個 Credential 有唯一 ID,Pipepline 或 Plugin 可透過 Credential ID 取用。

安全管控

Jenkins 有自己的使用者帳號密碼資料庫,但企業應用時整合 AD 帳號登入較方便。切換前需先安裝 Active Directory Plugin

透過 Configure Global Security 可切換入方式,修改後登出即可改用 AD 帳號密碼登入,實務上建議搭配 Role-based Authorization Strategy 使用角色觀念簡化管理:

經驗談:切換 AD 登入時記得要一併設好權限再登出,以免重登後 AD 帳號權限不足,想修改都沒轍。(有個小技巧是修改前先備分 config.xml,改壞時可覆寫原設定還原。)

角色權限

啟用 Role-Based Strategy 後我們可以定義角色,授與不同角色對系統或專案有不同權限,再指定使用者可扮演角色,以簡化權限控管。在 Manage and Assign Roles 裡可以定義角色及權限,以及使用者角色隸屬關係。

這部分 Jenkins 只提供了空白框架,該定義哪些角色,如何劃分權限,需依據專案需要自行設計規劃。延伸閱讀:

執行身分

Jenkins Windows 版預設以 Windows Service 方式執行,執行身分為 Local System。若整合 AD 登入時無法找到 Domain Controller(但我測試跑 Local System 沒問題),可嘗試將 Jenkins 服務改以 AD 帳號執行,以自動找到 Domain Controller 完成認證。

Some terms and basic concepts of Jenkins setup and management.


Comments

# by Hanzu

Thanks for sharing! My reference source: https://www.katalon.com/resources-center/blog/ci-cd-introduction/

Post a comment