1. 程式人生 > >jenkisn的簡單使用介紹

jenkisn的簡單使用介紹

maven 回滾 jenkins 發布系統 buildid

新建jenkins項目

登入jenkins後選擇最上角的新建

技術分享

輸出項目名後選擇下面的項目風格。當你無法確定的時候選擇自由風格即可。

配置jenkisn項目

項目配置一共有6步操作

General,源碼管理,構建觸發器,構建環境,構建,構建後操作

一、General綜合

這步主要是定義項目名,項目的權限管理,構建項目數的保存天數或個數以及局部參數定義。

A、項目權限管理

技術分享

勾選“啟動項目安全”,添加需要授權的用戶名。然後給用戶設置項目訪問權限。這個權限設置的級別是低於“系統管理”中的權限設置。

B、構建項目數

技術分享

這塊是用戶保存項目構建的保存時間。當構建最大個數為10 的時候,構建歷史中將會保存10個歷史版本,方便後面的回滾操作。

技術分享

C、參數定義

勾選參數化構建,定義你需要的參數,方面後的腳本需要。(本文中使用的源碼庫是git

技術分享

Git分支參數:Branch,回滾參數:Rollback,項目參數:ProjectName等等,可以根據需要自己定義參數。此參數自在此項目中有效。

D、JDK版本選擇

此項目是java項目,需要用到maven編譯。Jdk的版本一定要選擇正確。Jenkins服務器可以安裝多個版本的jdk。在“系統管理”-Global Tool Configuration”中選擇jdk安裝

技術分享

設置JDK的安裝目錄。

在此處要選擇開始使用的jdk版本,版本不同可能導致很多奇怪的問題。

技術分享

三、源碼管理

這裏采用的源碼是git

技術分享

此處選擇項目的git代碼路徑及登入賬號密碼,也可以使用ssh免密方式。分支選項使用上面定義的參數“Branch”。

其他無需配置

四、構建環境

因為構建觸發器沒有使用到,這裏不做介紹。

勾選Delete workspace before build starts”,每次構建刪除jenkins數據目錄下本項目上次的構建workspace

五、構建

為了讓回滾更加方便快捷,此處不單獨使用maven編譯選項,而是把maven編譯命令放在execute shell中執行。

技術分享

首先判斷RollBack這個參數是否傳值。默認是為空。如果RollBack不為空則跳過編譯步驟直接下一步。RoolBack參數在構建項目的時候傳值的

技術分享

Execute shell腳本中定義了一個參數buildName,這個參數是為了更改構建歷史中buildID的名稱是設定的

技術分享

只顯示buildID,反饋的信息很少。適當的時候我們需要添加點額外的信息。

技術分享

腳本中我們把buildName放到一個文件中,在這個配置中我們從這個文件中獲取數據更新buildID

技術分享

執行完腳本,java代碼就編譯好了,之後就是傳輸工作。我們采用的數據傳輸是SSH

技術分享

SSH Server需要在“系統管理”-“系統配置”下配置

技術分享

Name:定義名稱,最好按照一定格式命名。如果SSH Server比較多的時候不至於混亂

Hostname:主機IP

Username:運行容器的用戶名

Remote Directory:目標服務器的數據存儲路徑

選擇好SSH Server後配置“Transfers”,這個根據你的實際情況自己配置,傳輸完成後執行“Exec command”,裏面的腳本是存放在目標服務器上,根據自己的需求定義。在deploy.sh腳本中設置獲取“RollBack”參數作為回滾操作。

下面是deploy.sh腳本

#!/bin/bash
# ProjectName="cloudfactory"
# TomcatName="tomcat_cloudfactory_8080"
# BasePath="/data/websrv"
#                    $1             $2           $3         $4           $5
# sh deploy.sh ${ProjectName} ${TomcatName} ${BUILD_ID} ${BasePath} ${rollbackNo}
 
ProjectPath="$4/builds/$1"
TomcatPath="$4/$2"
LogFile="upgrade.log"
TomLog="tomcat.log"
 
if [ "$5" != "" ] && [[ "$5" =~ ^[[:digit:]]*$ ]]; then
    if [ ! -d $ProjectPath/$5 ]; then
        echo "rollback to $5 failed"
        exit 1
    else
        echo "本次構建發布 執行了回滾操作 回滾編號為:$5"
        echo "rollback to $5 edition"
        ln -snf $ProjectPath/$5/$1 $TomcatPath/webapps/ROOT
    fi
else
    if [ -L $ProjectPath/successful ]; then
        LastSuccess=$(tail -1 $ProjectPath/$LogFile)
        rm -rf $ProjectPath/successful && ln -snf $ProjectPath/$3/$1 $ProjectPath/successful
    else
        ln -snf $ProjectPath/$3/$1 $ProjectPath/successful
    fi
 
    echo $3 >> $ProjectPath/$LogFile
 
    [ -d $TomcatPath/webapps/ROOT -o -L $TomcatPath/webapps/ROOT ] && rm -rf $TomcatPath/webapps/ROOT
 
    if [ -d $TomcatPath ]; then
        [ -L $TomcatPath/webapps/ROOT ] || ln -snf $ProjectPath/successful $TomcatPath/webapps/ROOT
    else
        echo "ERROR" $1 $(date) >> $ProjectPath/$TomLog && exit 1
    fi
fi
 
cd $ProjectPath
ls -dt * | grep ‘^[0-9]\{1,\}$‘ | awk ‘{if(NR>10){print $0}}‘ | xargs rm -rf


運行完deploy.sh腳本後運行容器重啟腳本,這個根據自己實際情況編寫

Restart.sh腳本

#!/bin/bash
 
BASE_DIR=$(pwd)
rm -rf $BASE_DIR/work/*
rm -rf $BASE_DIR/temp/*
 
STATE=$(ps -ef | grep $BASE_DIR | grep -v grep | wc -l)
if [ $STATE != 0 ]; then
    ps -ef | grep $BASE_DIR | grep -v grep | awk ‘{print $2}‘ | xargs kill -9
    echo "$BASE_DIR kill success!"
else
    echo "$BASE_DIR pid not exsit!"
fi
 
mv $BASE_DIR/logs/catalina.out $BASE_DIR/logs/catalina.last
sh $BASE_DIR/bin/startup.sh
 
STATE=$(ps -ef | grep $BASE_DIR | grep -v grep | wc -l)
if [ $STATE != 0 ]; then
    echo "$BASE_DIR startup success!"
else
    echo "$BASE_DIR startup failed, please check you config!"
fi
 
echo "[INFO] ------------------------------------------------------------------------"
echo "Show $BASE_DIR process status!"
ps -ef | grep -v grep | grep --color=auto $BASE_DIR
echo "[INFO] ------------------------------------------------------------------------"



本文出自 “寧靜致遠” 博客,請務必保留此出處http://irow10.blog.51cto.com/2425361/1941935

jenkisn的簡單使用介紹