開始研究 Jenkins,計劃用它取代TFS Build Service 解決工作專案的建置部署需求。
TFS Build Service 跟 Visual Studio 整合度極佳,但有幾個缺點:
- 每個 TFS Build Controller/Build Server 只能處理一個 TFS Project Collection,一個 Project Collection 得配一台機器,太耗資源 參考
- TFS 2015 改成 Build Agent - Project Collection 參考 ,每台機器只能處理一個 Collection 的問題總算獲得解決,但 TFS Build Service 綁定 TFS Server 版本,並非想升級就能升級,這又是另一項缺點
- TFS Build Service 缺乏 Web 化管理介面,非開發者如營運部署人員如需使用得安裝 Visual Studio
基於以上考量,決定試試近年在 DevOps 界很紅的 Jenkins。
慢半拍學習 Jenkins 的好處是參考資訊多,參考網路學長們的文章,針對公司環境做了調整,順利改用 Jenkins 建置 ASP.NET WebForm 及 ASP.NET MVC 專案。 依照慣例,筆記備忘是必要的,近期將陸續整理分享,第一篇先從安裝設定講起:
- 關於 Jenkins on Windows 基本安裝與 TFS 設定,網路上已有不少文章可資參考,在此列舉一二,細節不再贅述。
- 基本安裝 在 Windows 安裝 Jenkins 和入門 by kinanson的技術回憶
- 安裝 MSBuild: VS2017 MSBuild 離線安裝
- 設定 MSBuild 套件 用 Jenkins 建置 .NET 專案
- 整合部署 ASP.NET 網站 讓 Jenkins 來自動幫我們佈屬 .NET 專案
- 還有,最權威的入門文件 - 官方使用者手冊 英文版 簡體中文版 (有些名詞翻譯可能令人困惑,例如流水線... 閱讀時建議參照英文版)
- 手動停止與啟動 Jenkins
安裝設定期間有不少東西要調,UI 有「從磁碟重新載入設定」(Reload Configuration from Disk)按鈕,但手動重啟 Jenkins 比較乾脆。控制程式在 C:/Program Files (x86)/Jenkins/jenkins.exe,執行 jenkins stop
跟 jenkins start
可停止或啟動 Jenkins 伺服器。
- Jenkins 靠 Plugin 提供各式各樣的整合功能,故安裝過程及管理介面會列舉 Plugin 清單供你選擇下載。我在工作機試裝時遇上第一個麻煩,安裝階段出現「This Jenkins instance appears to be offline」,只有 Configure Proxy、Skip Plugin Installation 兩項選擇。研究發現又是公司網路環境 SSL 憑證被置換的老問題,IE/Chrome 已匯入置換憑證的 CA 根憑證,但 Jenkins 用的是 Java 不認得。解決方法有二:
- 找到 C:/Program Files (x86)/Jenkins/hudson.model.UpdateCenter.xml,將
<url>https://updates.jenkins.io/update-center.json</url>
的 https: 改成 http: 參考
- keytool 安裝 CA 根憑證或加 -Dcom.sun.net.ssl.checkRevocation=false 停用檢查,但這部分因 Java 版本而異且步驟較多,第一種做法較簡單。
- Jenkins 是否可合法商業使用?這是在企業應用的必考題,答案是 Jenkins 採 MIT 授權 ,是 眾多開源授權中最寬鬆的 ,企業可安心服用。
- 講到軟體授權,Jenkins 跑在 Java 上... 不想被 Oracle 追討 Java 授權費 的話,最好確認一下。
很不幸,C:/Program Files (x86)/Jenkins/jre 自帶的是 java.exe 版本來自 Orcale,二話不說,依先前 Windows Open JDK 替代方案研究 心得,下載 ojdkbuild ,停止服務,修改 C:/Program Files (x86)/Jenkins/jenkins.xml <executable>C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.191-1/bin/java</executable>
再重啟服務,嗯,安心多了...
不料,改用 OpenJDK 後網站就連不上了! (登楞) 查了一陣子發現是防火牆問題,安裝時自動設定的防火牆綁定 C:/Program Files( (x86)/Jenkins/jre/bin/java.exe,需一併修改(可改開放 8080 Port):
- 在工作機測試成功,要搬到正式運行 Jenkins 主機時,會遇到封閉環境無法連上 Internet 問題。
Jenkins 文件 Offline Jenkins Installation 有專章說明,做法是先在連網主機安裝好,打包整個 Jenkins 目錄複製到目的主機;另一種做法是另外下載 Plugin 打包送到離線 Jenkins 主機上安裝。後者程序較多且需第三方工具,詳情可參考官方文件。
我實測較簡單的做法是從 https://updates.jenkins-ci.org/download/plugins/ 下載 hpi 檔案,再用 Plugin Manager / Advanced 上傳:
- 修改工作區(Workspace)目錄
Jenkins 的預設工作區目錄在 C:/Program Files (x86)/Jenkins/workspace,實務上傾向另設專用資料夾。
每個建置專案可以個別指定工作區,修改預設工作區比較省事。參考: Jenkins: Change Workspaces and Build Directory Locations ,文章所說可以改路徑的 Advanced 按鈕已經 被移除 ,我找到 C:/Program Files (x86)/Jenkins/config.xml 的 workspcaeDir、buildsDir 設定。 <workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULL_NAME}</workspaceDir>
<buildsDir>${ITEM_ROOTDIR}/builds</buildsDir>
可改成 <workspaceDir>X:/Workspace/${ITEM_FULL_NAME}</workspaceDir>
<buildsDir>X:/Jobs/${ITEM_FULL_NAME}/builds</buildsDir>
Notes about setup and config Jenkins in enterprise environment, especially when the Internet connection is restricted.
原文
https://blog.darkthread.net/blog/jenkins-notes-1/