Jenkins 筆記 1 - 安裝與環境設定
| | 3 | | ![]() |
開始研究 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 版本而異且步驟較多,第一種做法較簡單。
- 找到 C:\Program Files (x86)\Jenkins\hudson.model.UpdateCenter.xml,將
- 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.
Comments
# by Kmxinfo
建置工作建議不要用GUI,使用Pipeline比較好喔~~ https://ithelp.ithome.com.tw/articles/10201429
# by MattChung
執行序大大你好,不知道你有沒有遇過jenkins裝Plugin 失敗的問題?我猜測應該是我們公司網路設定有關係,我跟你遇到的問題類似都有遇到第三點問題。想詢問大大有沒有好的處理方法?
# by Jeffrey
to MattChung,若是卡在網路環境限制,得由錯誤訊息找原因再對症下藥。