gitlab+jenkins自動構建jar包並發布


一、背景介紹:
  公司軟件都是java開發的,一般都會將java代碼打包成jar包發布;為了減輕運維部署的工作量,合理偷懶,就需要自動化流程一條龍服務:
開發將代碼提交到gitlab--->jenkins自動觸發構建--->jenkins將構建好的jar包提交到遠程主機--->jenkins重啟java服務--->jenkins驗證服務是否起來並反饋(此過程需要運維寫驗證腳本讓jenkins執行)
二、jenkins配置
1、安裝Gitlab Hook和GitLab插件,安裝完成后在構建觸發器這會多出一項;記住這個生成的URL會在gitlab中用到;

 1.1、點擊Advanced(高級)按鈕生成跟giblab交互的token;記住這個token,gitlab上要用到;

  

  這地方注意:
    Allow all branches to trigger this job 允許所有分支觸發此作業(默認選項)
    Filter branches by name 按分支名稱過濾觸發作業
    Filter branches by regex 按正則表達式過濾分支觸發
    這地方根據自己的需求去選擇,比如只允許某個分支改變則觸發作業;

2、Source Code Management(源碼管理)

  

   

3、Build(構建)

  

4、安裝Publish Over SSH插件,或者在插件管理中直接搜索(Send build artifacts over SSH)也可以

  

  這地方要講一下,這地方我開了兩個Transfers;這個Transfers的作用是在jar包構建完成之后要先做一個動作,將原來的jar包做一個備份,方便出了問題回退;

  Exec command:#腳本很簡單就是一個簡單的備份

    #!/bin/bash
    . /etc/profile &> /dev/null; . ~/.bash_profile &> /dev/null;
    if [ -f "/data/web/admin-api/admin.jar" ]
    then
      time=`date +%Y-%m-%d-%H:%M`
      cp /data/web/admin-api/admin.jar /data/web/admin-api/srms-admin.jar.$time
    else
      echo "no file"
    fi

  配置第二個Transfers

  

  這地方要注意Source files是兩個**號,這是個坑,詳情可以點右邊的問號有詳細解釋,這里的兩個**表示匹配目錄;
      這地方的Exec command就不展示了,需要事先寫好放到遠端主機主機上;這地方執行必須是絕對路徑;
  Remove predix這個地方我之前填的*/target但是我構建的時候控制台提示找不到“eladmin-system/target”然后我就果斷把提示中的寫到了這個地方;
  Remote directory 這地方要是不寫,就要在System configation SSH配置項中定義,兩者二選一;我是定義在了Publish over SSH那,所以在上圖中沒有寫,如果兩個地方都寫了,會目錄套目錄,最終使jenkins不知道該將文件copy到哪;配置路徑(jenkins--->Manage Jenkins--->Configure System--->Publish over SSH),配置完ssh要點一下Test Configuration測試下是否能臉上遠端主機;

     

  注意:Manage jenkins--->Configure System--->Gitlab 下圖中的配置項需要取消勾選;

  

 三、gitlab配置

  1、打開gitlab網絡限制,允許web hook請求過來;

2、gitlab中具體的項目上配置鈎子

注意是在具體的項目中設置;

四、通過IDEA提交修改后的代碼查看jenkins具體項目的控制台

  代碼中隨便改點不影響運行的東西,提交測試;

  

 

查看gitlab修改后的是否上傳:

  

查看jenkins是否開始構建:

  

查看jenkins控制台:

  


免責聲明!

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



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