jenkins 發佈 -nodejs 例子

編譯視圖

圖1:編譯打包視圖

圖2:測試環境多分支分佈

插件:git Parameter

構建shell:

echo $JOB_NAME ${JOB_BASE_NAME}
npm -v
node -v

#npm install
npm run build


rm  ${JOB_BASE_NAME}.tar.gz -rf
tar zcf  ${JOB_BASE_NAME}.tar.gz dist/ node_modules/ server/ server.js favicon.ico
#打包

發佈視圖

圖1:部署視圖

圖2:選擇部署主機

插件:Persistent Parameter Plugin

package_name=${JOB_BASE_NAME#*-} #替換包文件夾名
package_dir=`echo $JOB_NAME|sed 's/deploy-//g'` #替換爲包文件夾路徑

echo -e "
Job目錄: $JOB_NAME
Job名: ${JOB_BASE_NAME}
包文件夾路徑: $package_dir
包文件夾名: $package_name
部署主機:  $Deploy_host
"


function color_message()
{ 
  case "$1" in
      "Red_echo")
      echo -e "\e[1;31m$2\e[0m"
      ;;
      "Green_echo")
      echo -e "\e[1;32m$2\e[0m"
      ;;
      "Yellow_echo")
      echo -e "\e[1;33m$2\e[0m"
      ;;
  esac
}


## ---- 正常部署 ---- ##
Deploy_item() {
salt -E  $Deploy_host cmd.run "\cp /home/admin/$package_name.tar.gz   /usr/local/src/$package_name-old.tar.gz"
# 移動舊文件
salt -E  $Deploy_host state.sls saltenv='ci' deploy-nodejs pillar="{WORKSPACE: '$package_dir', JOBNAME: '$package_name'}"
# salt.file模塊推送新文件
}



## ---- 回滾 ---- ##
Rollback_item(){
salt -E  $Deploy_host cmd.run "\cp /usr/local/src/$package_name-old.tar.gz /home/admin/$package_name.tar.gz"
# 恢復上一個版本包
}



## ---- 啓動nodejs ---- ##
nodejs_done(){
salt -E   $Deploy_host cmd.run "su - admin -c 'pm2 del all && rm /home/admin/adminProject -rf'"
# 停服務,刪除文件夾
salt -E   $Deploy_host cmd.run "su - admin -c 'mkdir /home/admin/adminProject && tar zxf /home/admin/$package_name.tar.gz -C /home/admin/adminProject'"
# 指定解壓文件
salt -E   $Deploy_host cmd.run "su - admin -c 'cd /home/admin/adminProject && pm2 start server.js'"
# 運行nodejs
}



## ---- 執行操作判斷 ---- ##
if [ "$Openration"x == "Deploy"x ]; then
    Deploy_item
    nodejs_done
    color_message Green_echo "$Deploy_host deploy success"
elif [ "$Openration"x == "Rollback"x ]; then
    Rollback_item
    nodejs_done
    color_message Green_echo "$Deploy_host Rollback success"
else
    color_message Red_echo  "OPERATION set error, please check ..."
fi

插件:AnsiColor

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章