『壹』 jenkins構建項目的錯誤和原因及其解決方法
我們項目開發完之後需要構建項目發布上線時,通常會使用到jenkins構建工具,然後在使用jenkins工具構建項目時通常也會遇到一些構建錯誤問題,通常情況下,如果項目在自己本地打包時沒有問題,啟動服務時也沒有問題的情況下,可能是jenkins配置問題,需要開發人員配合本地配置項的修改完成,下面我給大家分享一下我遇到的一些構建失敗問題,注意:本篇文章講的主要是關於前端項目的構建失敗問題。
Umi自動化工程創建的react項目
從圖一中可以看出,是構建時打包命令出錯,使用了不能識別的 npm run build:prod ,該命令是前端工程項目中 package.json 包文件中的 scripts 中配置的,該案例中前端並沒有配置build:prod 這個打包命令,如圖:
這里有兩種解決辦法。
直接去jenkins 上將打包命令配置成前端包文件種配置的命令,本案例中因為沒有區分不同的開發環境,而且項目也只有master一個主分支,沒有使用環境變數來區分不同環境的打包命令,所以圖一中的問題,可以直接將jenkins裡面的打包命令配置成圖二中的打包命令 npm run build。去到jenkins 工具中,找到對應的配置項,如圖:
如果項目變得復雜,需要進行嚴格的環境區分,那麼這種情況下建議使用第二種方法,使用環境變數區分不同環境的打包命令,具體步驟如下:
去到前端項目在項目根目錄下找到包文件package.json文件,打開後,在scripts下面配置build:prod 的打包命令,如圖:
去到前端項目中的配置文件config.js中配置 APP_ENV環境變數來區分不同的環境,例如生產環境,開發環境,測試環境等,配置如下:
本文中暫時講到圖一中這種jenkins構建失敗的現象以及導致失敗的原因和針對其不同的兩種解決方法,後續再碰到其它失敗現象再補充,或者大家也可以在評論區回復各自遇到的失敗情況,歡迎留言。
『貳』 jenkins,設置集成測試環境,就是構建過程先部署服務,然後運行整體測試用例,執行完後在關閉服務
Jenkins是一個開源項目,它提供了一個容易使用的持續集成系統,並且提供了大量的plugin滿足各式的集成需求。
因為手裡項目所用到的穩定性和性能測試工具每天手動部署到各台windows機器上比較浪費時間,所以這里使用jenkins用於部署測試工具到各個測試機上運行。整套環境需要一個中心伺服器和若干測試機器組成的slave,這就是jenkins的Master/Slave結構,如下所示:
在我們下面的使用中,master和slave是通過jnlp協議來通訊的。
Master機器:
我們需要在我們的master機器上安裝jenkins,沒有什麼特殊說明,注意的是安裝包方式同樣可以通過運行安裝目錄下的jenkins.war來啟動jenkins,而默認情況下安裝後會安裝一個名為Jenkins的自動運行的服務。
安裝完後訪問jenkins的根目錄,默認情況下埠是8080(如果要使用其他埠啟動,可以通過命令行」Java –jar Jenkins.war –httpPort=80」的方式修改),通過」系統管理」-」管理節點」-「新建節點」
新建節點主要設置遠程目錄已經運行和訪問的方式,注意這里如果有很多機器,建議遠程工作目錄名稱都一樣,方便管理,如下所示:
點擊保存,這時候就會在jenkinsnode視圖左側看到創建的slave節點。
下面要做的就是部署真正的slave機器了,點擊左側的」test_machine」,這時候會打開該節點的頁面,復制這個url,一般是形如http://192.168.1.148/computer/test_machine/, 注意這里在訪問的時候不要通過 127.0.0.1的方式訪問,因為這樣可能會導致後面所用到的jnlp文件中master地址也是127.0.0.1,從而導致slave機器上啟動失敗。
Slave機器:
首先需要在slave機器上安裝java環境和.NetFrameWork環境,然後在瀏覽器中訪問上面拷貝的url,這里提供了三種方式運行slave,我這里使用的第二種方式:
備註:slave.jar的位置如 http://192.168.1.148/jnlpJars/slave.jar
這時候有可能出現如下的錯誤:
這是因為從 Java 7 Update51 開始,如果應用程序沒有證書(例如未簽名應用程序)或缺少應用程序名稱和發行者信息,默認情況下會被阻止。運行此類型的應用程序可能不安全並存在較高級別的風險。
解決的方法是通過windows開始菜單項打開java控制面板,然後把master機器的url添加到安全提示的例外網站。
再次運行,則彈出如下的安全警告,允許運行即可。
同時,當運行主機上安裝了多個java版本時並且應用程序被安全設置阻止時,可以取消一些版本,防止一些意想不到的異常。
運行成功我們能看到連接成功的窗口,而我們繼續查看可以在設定的遠程工作目錄,c:\remote_jenkins下看到如下的一些文件jenkins-slave.exe,jenkins-slave.exe.config,slave.exe,jenkins-slave.xml。 我們這里主要關注jenkins-slave.xml,從下面我們可以看到兩個關鍵節點,executable和arguments,如果你想使用不同的java版本,可以從這里修改,而從arguments可以看出jnlp協議連接的master主機地址。
這時候slave機器已經運行起來了,但是我們顯然不想每次都在slave機器上運行一下啟動,所以jenkins又提供了slave的服務,如下所示進行安裝。
上面說過機器上需要. NetFrameWork環境,我理解是用於安裝windows服務用的,當你沒有安裝時會提示如下錯誤:
但是上面的提示卻誤導了我,因為一般都會版本越新越好,但是在xp環境上,最終只有安裝2.0版本才能正常,其他所有版本安裝後安裝服務都會提示如下一些錯誤提示:
當然上面slave機器上所有進行操作的前提是設置了遠程工作目錄並且的確在你遠程的物理機上創建了該目錄,如果沒有設置遠程工作目錄,會錯誤提示如下:
如果配置了遠程工作目錄,但是salve機器上沒有該目錄,則彈出如下錯誤:
如果slave無法連接,查看遠程工作目錄下的jenkins-slave.err.log,
這是因為我在master機器上把該slave的名字改了,但是下發到該slave上的jenkins-slave.xml還是舊的信息。
還有一種情況就是在在你master機器ip不斷變化的情況下,可能存在即使新建了新的slave節點,但是啟動slave的時候失敗的情況,這時候最好的方式是看一下該節點的slave-agent.jnlp文件中的內容,然後手動修改中間的一些地址信息,然後手動javaws運行該文件即可。另外一種方法是jenkins的系統管理面板下修改「Jenkins Location」的」 Jenkins URL」。