Jenkins拾遺--第五篇-git插件填坑

Jenkins使用過程當中,大部分Job的第一項就行從源碼庫裏簽出代碼。因爲git愈來愈流行,因此,稍微新一些的項目的源碼管理都是基於git的。對應的,jenkins的git plugin幾乎是大部分jenkins用戶都繞不過去的一個插件。在這裏,我要跟你們說一個很是悲催的事情,這個插件質量不怎麼高:看一下 它開着的bug列表你就會發現,永遠都有200個左右的bug是打開的。所以,咱們使用的時候,會遇到各類各樣的小坑。git

隨便說4個常見小坑:
1.會忽然卡死,沒有任何提示。
2.各類莫名其妙的錯誤提示,無從下手。
3.權限問題
4.ssh問題
5.大項目簽出timeout問題。服務器

碰上這些問題,通常能夠聽從以下步驟解決:
1.查看log中,git執行了什麼樣的指令,去對應的slave機本地執行,而後看看是否是能夠走得通,若是可以走得通,8成是環境變量設置和權限問題。
2.google對應的英文提示。注意,必定是 google英文提示 ,stackoverflow上有數千個jenkins問題,大部分有很好的答案,可是百度是搜不到的。
3.順藤摸瓜找到問題,並解決。
上邊的步驟可以幫助你解決99%的問題。網絡

這裏舉幾個小例子:ssh

repository url 設置的時候提示沒有訪問權限。

  1. 登陸到master和slave機上看(必須二者都看)是否有一樣的錯誤。
  2. 若是沒有一樣的錯誤,查看啓動jenkins的用戶和ssh登陸用戶是否一致,若是不一致,兩個用戶權限(包含ssh免密登陸權限)是否相同。
  3. 權限相同,免密同樣,仍是提示權限問題。這時候須要在master/slave機的ssh連接上聯一下git終端。這時候會有一個步驟:將git服務器放到known_host,須要手工確認,手工確認之後,git插件再也不提示權限問題。(這個例子就是一個典型的git 插件設計不足形成的)

timeout問題

有時候一個git庫很大,網絡條件很差的時候,總會超時下不下來。有兩個方法能夠解決這個問題。google

  1. 把jenkins的全局超時時間設置長一些。
    2.用命令行直接在slave機上clone,這樣後續就都是增量,不會超時了。

最後,若是你搜遍了google,而且死磕之後發現是插件bug,而且最新版本也沒有修復,而且繞不開。記得給他們提一個issue
這是git plugin 的主頁 https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-Bugsurl

相關文章
相關標籤/搜索