jenkisn的簡單使用介紹
新建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的簡單使用介紹