1. 程式人生 > >持續整合高階篇之Jenkins Pipeline git拉取

持續整合高階篇之Jenkins Pipeline git拉取

系列目錄

PipeLine中拉取遠端git倉庫

前面講自由式任務的時候,我們可以看到通過自由式job裡提供的圖形介面配置git拉取非常方便的,實際上使用PipeLine也並不複雜.這一節我們展示一下如何在PipeLine任務中拉取git倉庫程式碼.

node{
    stage("check out"){
         git  credentialsId: '3c210def-c000-4e2a-9b2d-838986a6b172', url: 'https://github.com/mrtylerzhou/gitShow.git'
    }
}

以上程式碼非常簡單,通過使用git關鍵字,配置credentialsIdurl後Jenkins就可以拉取遠端git倉庫程式碼了.Url很好理解,即為遠端倉庫的地址.這裡比較費解的是credentialsId是什麼,如何設定它?其實也非常簡單,前面講自由式任務的時候我們講過如何在jenkins裡新增新增一個git使用者名稱和密碼,這裡的credentialsId即為我們建立的包含使用者名稱和密碼的使用者資訊的id(這個id是jenkins自動生成的)這裡通過這個id,Jenkins便可以找到這個使用者名稱和密碼.

建立一個使用者名稱和密碼

要建立一個使用者名稱和密碼也不是非常複雜,我們在Jenkins主面板左側導航面板裡找到Credentials

,點選進入,便可以看到以下一個面板

這裡左側Credentials下面有一個System我們點選一下,此時面板中央位置如下圖

我們點選這個連結進入,此時左側會出現一個新增Credentials按鈕

點選便會出現一個可以設定使用者名稱和密碼的介面

如上圖示,Kind使用預設的,新增一個使用者名稱和密碼.然後新增使用者名稱和密碼,此時id可以手輸入,如果留空則Jenkins會自動生成一個.Description為一個簡短描述,使用者名稱和密碼很多時方便區分.

新增成功後我們想要看到這條記錄的id,點擊板右側的搬手螺絲刀圖示就可以看到id了.我們把這個id複製到 PipeLine裡credentialsId

新增一個ssh key

使用使用者名稱和密碼容易洩密,實際工作中常常使用ssh方式登陸,這裡對如何生成ssh key,如何在遠端倉庫中新增公鑰不再贅述,不熟悉的童鞋可以參考前面章節或者官方幫助文件以及在網際網路上搜索相關材料.這裡介紹下如何把ssh 私鑰新增到Jenkins裡,以便Jenkins使用ssh連線遠端倉庫.

新增私鑰類似以上新增使用者名稱密碼,只是新增使用者名稱密碼時Kind選項使用的是預設的選擇,這裡Kind下拉一下,選擇SSH username with private key,使用者名稱即為你的git賬戶使用者名稱,private key勾選Enter directly把我們本機的私鑰添複製到框裡面.

需要注意的是ssh和http地址是不一樣的,一定要注意.

把程式碼拉到指定位置

Jenkins預設會的把專案拉到Jenkins安裝目錄下Workspace+專案名的目錄下面,很多時候由於一些原因我們可能希望改變這一行為,把專案拉到自定義的一個目錄下面,這時候可以使用dir函式,然後把要執行的程式碼寫在dir函式程式碼塊內.示例程式碼如下

node{
    stage("check out"){
        dir("projdir"){
            git  credentialsId: '3c210def-c000-4e2a-9b2d-838986a6b172', url: 'https://github.com/mrtylerzhou/gitShow.git'
        }
         
    }
}

以上語句執行後,可以看到jenkins會把程式碼拉到Workspace+專案名+projdir的目錄下,當然也可以指定絕對路徑.