1. 程式人生 > >Jenkins中Git Plugin配置的幾個小問題

Jenkins中Git Plugin配置的幾個小問題

  最近持續整合出現了一些問題,翻出來看了一下,發現之前許多配置都有點問題,導致在新環境的配置中屢屢失敗,經過一番測試總算配置成功。記錄其中幾個坑,主要是關於Git的一些配置,供日後查閱。

  CI(Continuous Integration)持續整合其實是由一系列的最佳實踐所構成,包括了原始碼的版本控制和管理、自動化構建、自動化測試、程式碼審查、自動發行和部署、持續反饋等等,對於快速迭代的專案非常有效。在CI中比較常用的一個工具是Jenkins(前身是Hudson,由於版權原因更名為Jenkins)。  持續整合的第一步一般需要將原始碼從程式碼託管伺服器下載下來,Jenkins預設安裝之後並沒有支援GIT程式碼託管工具,需要安裝一個對應的外掛,可以安裝Git Plugin,關於Git Plugin的介紹可以參考:
https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin
安裝完成之後,當我們使用Jenkins建立專案之後,在填寫好Git倉庫地址之後,當執行構建操作的時候,會發現程式碼根本clone不下來,構建過程一直停在程式碼下載這一步,下面看一下如何解決這個問題,在此之前先介紹一些關於GIT與SSH等內容。
  • TortoiseGIT
在Windows系統下,使用較多的一個圖形介面的GIT工具是TortoiseGIT,在安裝它的過程中,一般會出現下面的介面:
安裝程式讓我們選擇使用哪種ssh的客戶端,TortoiseGIT預設的客戶端是TortoiseGItPlink,如果我們選擇這一項,那麼當我們使用 Git 命令列 或者 使用TortoiseGit去Clone程式碼的時候,使用的並不是同一個客戶端。
如果選擇的是下面的選項OpenSSH,那麼二者就是相同的,都是OpenSSH客戶端。之所以提到這一點是因為這裡的選擇對後續我們設定ssh key的時候有點影響,當然究竟TortoiseGit使用哪一個ssh客戶端,在安裝完成之後也可以配置,具體的配置可以在TortoiseGit的settings中找到,如下圖所示:
  • SSH Key
SSH 為 Secure Shell 的縮寫,由 IETF 的網路工作小組(Network Working Group)所制定;SSH 為建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專為遠端登入會話和其他網路服務提供安全性的協議。Git程式碼可以通過SSH協議下載到本地,它提供兩種方式:
1. 常規的基於密碼的方式 2. 使用金鑰的方式 當我們在Jenkins中使用Git Plugin外掛的時候,不能使用基於密碼的方式,使用這種方式會讓程式碼clone過程一直卡住,實際上是ssh需要我們輸入密碼以便它能繼續,但是在構建過程中根本沒辦法與它進行互動,輸入密碼,因此我們只能使用第二種方式 關於 ssh key的產生,可以使用下面的方法: 1. 首先在Git客戶端安裝目錄的bin資料夾中找到 ssh-keygen,這個工具是用來生成ssh的公鑰和私鑰的,執行下面的命令:
 $ssh-keygen -t rsa -C “[email protected]
之後,設定儲存的位置,鍵入密碼(Jenkins使用git plugin密碼必須為空,直接回車就可以),之後會生成兩個檔案 id_rsa和id_rsa.pub

2. 完成之後需要在託管Git 倉庫的伺服器上新增 公鑰,新增一般在登入賬戶的設定裡面。
  • 關於TortoiseGit中TortoiseGitPlink的設定
上面講的使用ssh-keygen是用來產生OpenSSH客戶端的公鑰和私鑰的,如果我們使用TortoiseGit並配置GitPlink,那麼我們需要產生一個putty客戶端的key,也就是產生一個ppk的檔案,關於這方面的資料很多,可以參考:GitLab 伺服器下客戶端TortoiseGit配置和使用教程
  • Jenkins Git Plugin For Windows的設定
Git Plugin在Windows上的設定需要注意幾點: 1. Jenkins安裝在Windows上是以服務的方式安裝的,並且它安裝啟動的賬戶是 Local System ,並非是你當前的賬戶,假設我當前的使用者是frank,Jenkins執行起來的使用者其實並不是frank,而是Local System賬戶,但是這個賬戶並沒有 SSH,所以導致程式碼在構建過程中clone的時候一直停在那裡。 2. 為了解決這個問題第一個方案就是將 使用者目錄下(也就是 c:\users\frank目錄)的 .ssh資料夾拷貝到 Local System的使用者目錄下,但是這個使用者目錄在哪兒呢,在我的計算機中(使用的是64位的Win7系統)這個目錄位於:C:\Windows\SysWOW64\config\systemprofile,只需要把 .ssh目錄拷貝到這個目錄就可以了(需要注意的是.ssh目錄中包括公鑰、私鑰和known_hosts檔案) 3.這個known_hosts檔案在你在網站上新增完公鑰之後,使用git clone命令獲取一份程式碼的時候,命令列就會給出提示,當你輸入yes 之後自動會生成的。 4. 除了上述方法之外,經過測試發現將.ssh目錄中的檔案拷貝到git安裝目錄下的.ssh目錄中也是可以的,應該是Local System賬戶讀取了git安裝目錄中的.ssh。 5. 最後需要注意配置完之後重啟一次Jenkins,在Jenkins的首頁位址列後面新增 /restart確認之後就重啟了,重啟之後當重新構建的時候程式碼就可以clone下來。

相關推薦

JenkinsGit Plugin配置問題

  最近持續整合出現了一些問題,翻出來看了一下,發現之前許多配置都有點問題,導致在新環境的配置中屢屢失敗,經過一番測試總算配置成功。記錄其中幾個坑,主要是關於Git的一些配置,供日後查閱。   CI(Continuous Integration)持續整合其實是由一系列的最佳

Python使用字典的技巧

讀取 只需要 管理 解包 領取 意思 創建 小技巧 其它 1 解包 所謂解包,就是將字典通過 ** 操作符轉為 Key=Value 的形式,這種形式可以直接傳給函數作為關鍵字參數。 說說適用的幾種情況。 1.1 搜索拼接條件 當應用中使用類似 SQLAlchemy 的 OR

C++ string陷阱,你掉進過嗎?

stl 試題 賦值 clu ror ati world mod iostream C++開發的項目難免會用到STL的string。使用管理都比char數組(指針)方便的多。但在得心應手的使用過程中也要警惕幾個小陷阱。避免我們項目出bug卻遲遲找不到原因。1. 結構體中的

OSPF概念

虛鏈路 net ospf -1 路由器 rtu 網絡 概念 link OSPF的有以下幾種LSA: Type-1 lsa (router isa) Type-2 lsa (network lsa) Type-3 lsa (network summary lsa) Type

容器(docker)執行java需關注的問題

簡介 container: 資源隔離、平臺無關, 限制cpu、mem等資源   java不知道自己執行在container裡,以為它看到的資源都能用。結果:java工作在資源充足的 詳述 程式執行的兩個核心資源:cpu和mem,其他資源或許也有限制,

資料型別補充的問題

1:在定義Long或者Float型別變數的時候,要加L或者f。   整數預設是int型別,浮點數預設是double。      byte,short在定義的時候,他們接收的其實是一個int型別的值。   這個是自己做了一個數據檢測的,如果不再

vue 專案常見的問題

(1).H5頁面在iOS網頁中手機號碼顏色改變 H5頁面在iOS網頁中的數字被識別為電話號碼,原因在於Safari瀏覽器的問題:解決該問題只需在head標籤中新增如下程式碼即可解決。 <metaname="format-detection"content="telephone=no"&

ACM技巧(離散化,尺取法,資料預處理)

離散化 使用STL演算法離散化: 思路:先排序,再刪除重複元素,然後就是索引元素離散化後對應的值。 假定待離散化的序列為a[n],b[n]是序列a[n]的一個副本,則對應以上三步為: sor

akka整合spark過程踩的

多執行緒的一個坑 error: ERROR (com.ximalaya.xqlserver.xql.engine.adapter.BatchSqlRunnerEngine:74) - executor result throw java.lang.

storm技巧

storm 中小技巧 1、 TimeCacheMap過期快取,採用桶實現,鎖的粒度小,O(1)時間內完成鎖操作,因此,大部分時間內都可以進行get和put操作。幾乎所有的操作都是相對於桶數目線性的(O(numBuckets))。唯一的問題是快取中可能存在過期的資料,也就

extjs4.1 grid columns處理問題(第一:combobox 的store帶引數到後臺,第二model資料是一個object)

第一個問題:combobox中的store可以通過帶引數來區分。 Ext.define("zyc.view.test.ComboboxStoreParam",{ extend:'Ext.panel.Panel', title : '測試

csstip(一)

本文轉載於:猿2048網站css中的幾個小tip(一) 原博:http://www.webhek.com/post/7-tips

微信程式開發遇到的問題

## 本地圖片不顯示,開發工具執行是沒問題的,但真機除錯卻顯示不了 ```item.img = '/goods/img/圖片.png'``` ``` ``` 經過仔細觀察發現,**路徑是沒問題的**,問題在於圖片名**不能是中文**的,把它改成字母+數字就好了。 ## 使用FileSystemManager

Git hub載入慢?下載慢?瀏覽慢?技巧讓你一鍵起飛!

記得,那是一個風和日麗,豔陽高照的夜晚,只因為當初的一次回眸,於是便決然走向了程式設計師的道路,從此,CV大法心中記,程式碼伴我身。 這一天,正當我開啟電腦準備開開心心的使用CV大法完成任務的時候,卻惱人的發現今天Git hub開啟的速度慢的令人無法忍受。 點開目錄尋找原始碼的時間夠我看完一部電視劇。別問

步驟教你線上使用浪潮webblos做raid---簡單明了!

幾個小步驟教你線上使用浪潮webblos做raid 幾個小步驟教你線上使用浪潮webblos做raid 簡單明了教你線上使用浪潮webblos做raid,在這裏就不啰嗦了!直接進入正題---圖片表達!選擇configureation v….選擇新建 (new)選擇手動 (M

拓撲學凝聚點的等價定義

alt number 地址 ges .cn 自然數 ref 一個 lan 下載地址: http://jour.duxiu.com/JourDetail.jsp?dxNumber=100244108007&d=299CE906C4AF5AB611BA41DF81224

Ch1的問題

最大值 需要 是什麽 題目 優先級 思考 問題 優先 網上 接下來的題目需要更多的思考:如何用實驗方法確定以下問題的答案?註意,不要查書,也不要在網上搜索答案,必須親手嘗試——實踐精神是極其重要的。 問題1:int型整數的最小值和最大值是多少(需要精確值)? 問題2:d

yii2.0 刪除滿足某條件的全部數據

lis variable 全部 let spa user 數據 ble not in 刪除user表中的type=2 and usercategoryid 不是1,2。3的全部數據User::deleteAll([ ‘and‘, ‘type = :type_id‘, [‘n

java 一個char包含字節

導致 sdn col 會有 2個 tar 防止 clas 記得 背景 ??char包含幾個字節可能記得在上學的時候書上寫的是2個字節,一直沒有深究,今天我們來探究一下到底一個char多少個字節? Char ??char在設計之初的時候被用來存儲字符,可是世界上有那麽多字符,

讓一個元素在容器垂直居中的方法

body 垂直居中 -s ntb offset set log off htm 方法一,使用js讓元素水平垂直居中 <!DOCTYPE html> <html> <head> <meta charset