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

1、環境以及工具信息java

  1. 3臺服務器信息git

  jenkins: 192.168.123.16三、serverA:192.168.123.130、serverB :139.198.17.241三臺機器都是ubuntu16.04系統shell

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

  ssh工具:sshdvim

  jenkins版本爲2.17服務器

2、搭建目標app

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

  2. 實現選擇不一樣環境發佈jar部署到對應的機器上maven

3、構建工具

  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. 保存

    

4、發佈

  選中項目下的git parameters,選中分支BRANCH,選中環境ENV發佈。最後就能夠享受成果了。

5、常見問題

  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

相關文章
相關標籤/搜索