搭建GitLab+Jenkins


1. Jenkins and GitLab

  

  • Jenkins是一個自動化服務器,可以運行各種自動化構建、測試或部署任務。
  • GitLab是一個代碼倉庫,用來管理代碼。
  • 兩者結合起來,就可以實現開發者提交代碼到GitLab,   Jenkins以一定頻率自動運行測試、構建和部署的任務,幫助開發團隊更高效的集成和發布代碼。

2.創建一個Jenkins Job

  

  • 在Jenkins里,一個任務叫做一個job。一般我們的項目會有多個分支,比如開發分支和產品分支,我們可以對每一個分支都新建一個job,比如我們對開發分支創建一個測試的job,每次有代碼提交就自動運行一次測試,對產品分支創建一個打包的job,每次有代碼提交就運行打包任務。

  

  • 點擊創建,item name可以隨便起,然后點擊構建一個自由風格的軟件項目,點擊ok。
  • 一個job創建成功。

3. 配置job

  

  

  • 打開Jenkins,進入job頁面。點擊配置。

    

  

  • 選擇“源碼管理”—>git
  • Repository URL中,粘貼GitLab中的項目地址。
  • Credentials中,點擊add—jenkins
  • Kind:選擇Username with password
  • 填寫Username
  • 填寫Password
  • 點擊Add
  • 最后點擊保存

注意:選擇git,添加gitlab倉庫路徑無論怎么嘗試都報如下兩個異常。我這邊嘗試了,剛開始也報錯,總結了2種解決方案:

2種異常:
Failed to connect to repository : Command "git ls-remote -h git@xxxxx.com:xxx/dev_test.git HEAD" returned status code 128: stdout: stderr: Permission denied, please tryagain. Permission denied, please try again. Permission denied(publickey,gssapi-keyex,gssapi-with-mic,password). fatal: The remote end hung up unexpectedly

或者

Failed to connect to repository : Command "/usr/local/git/bin/git -c core.askpass=true ls-remote -h http://www.xxx.com/gitlab/root/test.git HEAD" returned status code 128:
stdout: 
stderr: fatal: Unable to find remote helper for ‘http‘

  2種解決方案:

  1)由於運行jenkins用戶沒有生成ssh私鑰,且沒有添加gitlab中。因此導致了如上異常。

  生成ssh私鑰

  ssh-keygen -t rsa -C "admin@example.com"
將生成的公鑰復制到粘貼板
  cat ~/.ssh/id_rsa.pub | clip

 回到gitlab網頁,將添加到gitlab-->Profile Settings-->SSH Keys-->Add an SSH key。
  

  


 回到jenkins頁面---源碼管理---選擇“Git”---去GitLab中復制項目地址,粘貼到“Repository URL”---點擊“credentials”后面的“Add”按鈕---Private Key---Enter directly ---key。將私. 鑰添加到key中。

     



 保存后重啟jenkins即可。

2)當我把gitlab創建的項目設置為private,jenkins就會報上述錯誤。解決方法就是,設置gitlab的Visibility Level為public即可。
  

  

4.Branch Specifier

  

  • Jenkins job默認對master分支進行構建,也可以自定義分支。不過要求你的gitlab代碼倉庫中要存在這個分支,一般來說,要向代碼倉庫提交一次更改,即可自定義分支了。

5. 配置job的構建觸發器

  

  • Poll SCM: 每隔一段時間檢查gitlab倉庫中代碼是否有更新,有的話就執行構建操作。
  • Build after other projects are built:當另一個構建任務完成之后觸發
  • Build periodically:周期性的觸發
  • GitHub hook trigger for GITScm polling:通過GitHub鈎子觸發

6.配置 Job的構建腳本

  

  

  • 在構建中,支持多種構建腳本,我選擇的是execute shell,然后輸入項目構建命令(這依賴於你的項目)

至此,所有工作已經完成,現在你提交代碼到gitLab,jenkins幫你運行構建,這樣大家的代碼自動集成到一起,出了錯很快就知道了。

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM