實測搭建jenkins多環境、多分支demo


一、環境以及工具信息

  1. 3台服務器信息

  jenkins: 192.168.123.163、serverA:192.168.123.130、serverB :139.198.17.241三台機器都是ubuntu16.04系統

  所需jenkins插件工具:Publish Over SSH、Maven Integration plugin、git plugin、Git Parameter Plug-In

  ssh工具:sshd

  jenkins版本為2.17

二、搭建目標

  1. 實現可選git分支以及拉取最新代碼

  2. 實現選擇不同環境發布jar部署到對應的機器上

三、構建

  1. 安裝插件:Publish Over SSH、Maven Integration plugin、git plugin

  2. jenkins機器配置

    a. 安裝jdk8

    b.配置maven路徑,下載tar.gz,解壓即可

  3. 配置系統管理-》全局工具配置

   只需要配置jdk和maven,其他都默認即可

  

 

  

    

  4. 配置系統管理-》系統設置

    

      passphrase/password:為你輸入的密碼

    

    241配置 ,key為你jenkins機器的本地私鑰,passphrase/passwd值可以刪掉,這里要注意:必須將本地私鑰完整內容拷貝,包括----字

    

 

 

   5. 部署配置

    5.1 新建任務,由於我這里已經創建忽略此步驟

    

    5.2 選中general里的參數化構建過程,點擊git parameter和選項參數,前者是配置不同git分支,后者是選中不同環境

    

    

 

 

     5.3 配置git

     注意將branch spec改為:$BRANCH,否則git只會找master分支

    

    5.4 構建觸發器

    

    5.5 配置post steps

      此步驟實現文件上傳、jar啟動,執行shell腳本

      a. 選中send files or execute commands over ssh

      b. 配置server

      c. 選中server里的高級 選中lable

      d. 選中外層的高級 配置 參數化發布

      

 

      

 

      Source files:需要發送到遠程服務器的文件,可以使用通配符和Jenkins變量(注意這里要寫相對jenkins的workspace的工作目錄而已,不支持絕對路徑,target為項目的子目錄)
      Remove prefix:刪除目錄前綴,填target表示不創建target目錄
      Remote directory:文件發送到遠程服務器的哪個目錄下。這里跟你系統設置里的工作目錄關聯,會在對應的remote directory 目錄下創建Kepler..目錄。

      Exec command:文件發送到遠程服務器后,在遠程服務器上執行的命令

      最后在外層點擊 高級選中parameterized publist,否則不會實現不了環境選中

       

     附上shell內容:masterKepler.sh

# jar包路徑
JAR_PATH='/data/app/KeplerMockDevice'

#Jenkins中編譯好的jar名稱
jar_name=KeplerMockDevice-0.0.1-SNAPSHOT.jar

cd ${JAR_PATH}

#模糊查詢指定jar服務的進程id
pid=`ps -ef|grep Mock|grep -v grep|awk '{print $2}'`
if [ -n "$pid" ]
then
echo '163 mock The pid: server' $pid ' will be killed....'
sudo kill -9 $pid
echo '163 mock The pid: server' $pid ' will be start'
nohup java -jar ${JAR_PATH}/${jar_name}  &
else
echo '163 mock The pid: server' $pid ' not exist , will be start'
nohup java -jar ${JAR_PATH}/${jar_name}  &
fi
echo '163 mock The pid: server' $pid ' started'

 

     6. 保存

    

四、發布

  選中項目下的git parameters,選中分支BRANCH,選中環境ENV發布。最后就可以享受成果了。

五、常見問題

  1.jenkins 徹底解決sudo sudo: no tty present and no askpass program specified

  方案:

    a. chmod 600 /etc/sudoers

    b.vim /etc/sudoers 改成下列值

    %root        ALL=(ALL)       NOPASSWD: ALL

    %sudo  ALL=(ALL) NOPASSWD: ALL

    c.添加jenkins Linux account到root 組中:

    usermod -a -G root jenkins

    運行id jenkins 查看jenkins Linux account是否已經屬於root 組

    d.重啟jenkins

  2. 配置ssh remotes hosts報Can't connect to server

    方案:  

  1. 本地機器秘鑰生成不對
  2. 必須將本地私鑰完整內容拷貝,包括----字符
  3. 生成秘鑰時候的密碼錯誤

  3.  There were errors checking the update sites: UnknownHostException: updates.jenkins.io

  方案:沒有外網導致

 

  參考自:

  https://www.jianshu.com/p/6288703532cf


免責聲明!

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



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