Jenkins 自動化部署上線

Jenkins 自動化部署上線

摘要

jenkins自動化部署項目,通過jenkins 部署來節省運維時間,不需要手動cp上線及版本發佈

Jenkins 自動化部署上線

Jenkins


  • Jenkins 自動化部署上線

    • (1) Java 環境演示 [Jenkins和Tomcat在一臺服務器上]

    • (2) Java 環境演示 [Jenkins和Tomcat不在一臺服務器上]

    • (3) Java 環境演示 [上線腳本]

    • (4) NodeJs 環境演示 [上線腳本]

    • 一、Jenkins是什麼

    • 二、上線流程圖

    • 三、Jenkins安裝配置

    • 四、Jenkins 自動化部署項目案例


一、Jenkins是什麼

Jenkins是一款自包含的開源自動化服務,可用於自動執行與構建,測試和交付或部署軟件有關的各種任務。
Jenkins目前可以通過本地系統軟件包Docker進行安裝,甚至可以通過任何安裝了Java運行環境的計算機獨立運行

二、上線流程圖

既然我們說到自動化上線,我們就不得不說說一個項目上線的流程.只有規範起來纔可以做到不出事故!

上線流程圖如下圖所示
image_1ch5i8umo201i1011vh11jaogd.png-168.4kB

三、Jenkins安裝配置

Jenkins依賴Java環境,我們需要安裝Java環境以及相關的環境準備

  1. ###關閉防火牆

  2. $ iptables -F

  3. $ iptables -X

  4. $ systemctl stop firewalld

  5. $ systemctl disable firewalld


  6. ###安裝yum源

  7. $ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

  8. $ wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

  9. $ yum clean all && yum makecache  

1.下載Jdk包
image_1ch2lpjhd1of5d9hvpj1rnqbjam.png-277.1kB
下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

上傳jdk包到服務器

  1. ###解壓拷貝jdk

  2. $ tar xf jdk-8u171-linux-x64.tar.gz -C /usr/local/

  3. $ ln -s /usr/local/jdk1.8.0_171/ /usr/local/jdk

  4. $ ln -s /usr/local/jdk/bin/java /usr/bin/java


  5. ###設置環境變量

  6. $ vim /etc/profile

  7. export JAVA_HOME=/usr/local/jdk

  8. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

  9. export PATH=$JAVA_HOME/bin:$PATH


  10. $ source  /etc/profile

2.安裝Jenkins

  1. 配置yum源:

    wget  -O  /etc/yum.repos.d/jenkins.repo  http://pkg.jenkins-ci.org/redhat/jenkins.repo
  2. 導入rpm密鑰:

    rpm  --import  https://jenkins-ci.org/redhat/jenkins-ci.org.key
  3. 安裝:

    yum  -y  install  jenkins  java
  4. 啓動服務:

    systemctl  start  jenkins
#####如果我們啓動Jenkins出現錯誤可以直接使用systemctl status jenkins查看錯誤

jenkins相關目錄釋義:

(1)/usr/lib/jenkins/:jenkins安裝目錄,war包會放在這裏。
(2)/etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在這裏配置。
(3)/var/lib/jenkins/:默認的JENKINS_HOME。
(4)/var/log/jenkins/jenkins.log:jenkins日誌文件。

檢查端口是否存在
image_1ch2n40p91muo1t57j5b1tm85bl1j.png-230.9kB

3.配置Jenkins
image_1ch2q7pj31se6u37rpj8bok176b.png-106kB

Jenkins有安全策略,我們按照提示拷貝驗證碼即可
image_1ch2ni2601kq018ge1tkfvjl160q20.png-113.7kB

將驗證碼複製到Web框裏
image_1ch2nkdo0t0f17ekhi1vmmo7u2t.png-55.4kB

我們這裏使用推薦就可以了,因爲後期我們都可以在安裝
image_1ch2nnk5no9f6ce1qe0ffl1nck3a.png-155.8kB

安裝插件中,有的插件會因爲網絡問題無法安裝成功

image_1ch2nudu5hbo53qes84409r147.png-164.5kB

我們這裏可以創建一個管理員,或者直接使用admin

我們最好不要直接使用admin

image_1ch2o3sji13s01ahi1t7l1d45u7o4k.png-56.8kB

image_1ch2o5cqu2g3ds610ikjecmc351.png-63.3kB

安裝完成訪問地址:iP:8080
image_1ch2oae2qfi91ppegakidiq3k5u.png-112.6kB

到這裏我們Jenkins已經安裝成功,剩下的就是配置插件和配置環境

image_1ch2qgfhj577pru1sf3p3f2lc78.png-183.2kB

因爲我們目前什麼都沒有需要安裝插件,點擊下步安裝插件
image_1ch2qi0tfjfe1etl10d41g0rlth7l.png-188.4kB

爲了模擬環境我們需要安裝Jenkins一些相關插件
 下面2個maven 插件都需要勾選  
 插件名稱:maven lntegration

image_1ch2qscc99jb1uf31gk8kctd7r82.png-183.3kB

我們勾選安裝重啓
image_1ch2r4r0vna81okq1mi2m9113hp8s.png-172.6kB
image_1ch2qu1a5im5dc1m001nln6q58f.png-127kB


安裝完成後如下圖所示

默認是沒有下面的maven項目的
image_1ch2rbd4o130l8ir1it3ofa137v9p.png-356.4kB

4.Jenkins配置項目

配置SVN地址
因爲我是新建的Jenkins目錄,沒有權限,所以需要創建一個用於認證.
image_1ch2rq133kcmcuc80q1tbb19sa6.png-104.6kB

填寫SVN地址,因爲我這裏的svn已經鏈接到ldap,所以不需要輸入svn的密碼,默認這裏是svn的用戶和密碼

具體文章可以參考 VisualSVN 遷移至Linux SVN+Apache+ssl集成LDAP

image_1ch2s4h57jh3jng184u1508fgeaj.png-395kB

認證成功之後
image_1ch2s9cqqg4v1g2r1oaf17ms1rnhb0.png-141.9kB

瞭解maven 配置
首先我們的svn分支下面需要有pom.xml
image_1ch2t381b1cui2ovsmb1m2817id7.png-283.2kB

繼續往下




因爲我們只安裝maven的插件,並沒有安裝maven服務,所以這裏需要我們配置
image_1ch2sdufi1n38104b1g6av4n1vcbd.png-131.4kB

我們就在這裏添加一個名字,maven就自動安裝了
image_1ch2sis6h1ibrh4smjmdck15jqbq.png-179.3kB

Maven安裝完成了,需要依賴吧都是從maven.apache.org下載會比較慢,所以我們指定私服的地址,因爲在實際生產中也都是使用私服的。

在maven的配置文件裏面也需要配置  配置文件conf/settings.xml 因爲我們所使用的是Jenkins的自動安裝,而不是指定路徑所以我們要查到這個配置文件

maven 自動安裝的配置路徑
image_1ch2u85t61gu61j65lnfcrlu4vhi.png-76.7kB

配置Maven倉庫地址

這裏配置的都是私服地址
相關文章  Jenkins+Maven+SVN+Nexus 搭建持續集成環境

image_1ch2triup1f4jim166els3sosfr.png-331.3kB
配置Maven 鏡像地址
image_1ch2u3h8sphp1jc2f391ot71kmdgl.png-323.2kB

配置Maven 編譯參數   [研發都會]

相關文章:maven 編譯命令
image_1ch2ssmlfdha2eq1pkihuv6q1ca.png-74kB

這個pom.xml裏面配置是私服的地址
因爲代碼裏面有很多東西是需要拉去依賴包,這些依賴包就存放在本地的私有倉庫裏(Nexus)

代碼中pom.xml配置如下
私有倉庫的地址
image_1ch2t4und125pmdh5dbah71j5odk.png-400.7kB

5.構建測試
image_1ch2t9pqrus91mni1a35v0f1n9jee.png-96.6kB

控制檯輸出說明

image_1ch35he289os1698430sr21aobhv.png-385.2kB

image_1ch35l1sl4kg12l4rsjiad1shlic.png-681.9kB

image_1ch35pomf1p4pnduuk81s1qdl1ip.png-526.3kB

6.Jenkins 工程目錄

image_1ch56eo7f1jdh61n1aho1g961lsl19.png-301.5kB

可以通過修改Jenkins主目錄

image_1ch56lkd0g1q13ac142i1n49o4h33.png-132.1kB

Jenkins打包好後的目錄,這個war包就是我們需要拷貝的tomcat下面的
image_1ch56vm9tthi1ehs1l5ptp8ndl3g.png-382.6kB




四、Jenkins 自動化部署項目案例

因爲目前環境原因,我這裏只是截圖Jenkins發佈的流程(本次演示只是針對測試環境日常發佈版本)

(1) Java 環境演示 [Jenkins和Tomcat在一臺服務器上]

1.Jenkins 配置
a.jpg-612.2kB

SVN部分配置
image_1ch5af0th1gfqljk28bte9mq5i.png-204.9kB

maven及腳本設置
image_1ch5ahb88fgspno7t66d81vn45v.png-142.8kB

2.不髮腳本配置如下:
相關參考:Jenkins可用環境變量列表
腳本的存放路徑可以在系統管理->全局配置->Jenkins路徑

  1. Last login: Thu Jun 28 18:01:59 2018 from 172.16.29.39

  2. [root@tomcat ~]# cat /jenkins/deploy.sh

  3. #!/bin/bash


  4. #

  5. # Jenkins工程構建通用TOMCAT部署腳本

  6. # @author abcdocker

  7. # @create_time 2017-08-19

  8. #

  9. # 在Jenkins內配置部署單元參數

  10. #      參數格式:MAVEN_MODULE_NAME:TOMCAT_ABSOLUTE_PATH  MAVEN模塊名稱:需要部署的目標TOMCAT絕對路徑

  11. #      只有單個部署單元且沒有Maven子模塊時,模塊名稱參數可以沒有,參數格式爲:TOMCAT_ABSOLUTE_PATH

  12. #

  13. # 注意:

  14. #      在本部署腳本內會執行TOMCAT啓動腳本,爲避免Jenkins在構建成功以後殺掉所有衍生的後臺進程,需要在Jenkins內配置全局環境變量 BUILD_ID 值爲 allow_to_run_as_daemon

  15. #

  16. #


  17. DEPLOY_TARGET_TOMCAT=$TOMCAT


  18. #校驗部署參數,不能爲空

  19. if [ -z "$DEPLOY_TARGET_TOMCAT" ]

  20. then

  21.    echo

  22.    echo 部署參數爲空,部署失敗!

  23.    echo "#####################################################################"

  24.    echo

  25.    echo 單個部署單元參數格式:

  26.    echo          MAVEN_MODULE_NAME:TOMCAT_ABSOLUTE_PATH MAVEN模塊名稱:需要部署的目標TOMCAT絕對路徑

  27.    echo

  28.    echo 多個部署單元參數格式:(多個部署單元使用空格分割)

  29.    echo          MAVEN_MODULE_NAME:TOMCAT_ABSOLUTE_PATH MAVEN_MODULE_NAME:TOMCAT_ABSOLUTE_PATH

  30.    echo

  31.    echo "#####################################################################"

  32.    exit 1

  33. fi


  34. echo

  35. echo 部署參數:${DEPLOY_TARGET_TOMCAT}


  36. TOMCAT_ARR=${DEPLOY_TARGET_TOMCAT//;/ }

  37. ARR=($TOMCAT_ARR)

  38. ARR_LEN=${#ARR[*]}

  39. echo ${ARR_LEN} 個部署單元


  40. i=1

  41. #獲取Jenkins傳入的目標TOMCAT組

  42. for T in $TOMCAT_ARR

  43. do

  44.    echo

  45.    echo 開始 處理第 ${i} 個部署單元

  46.    echo 第一個部署單元:$T


  47.    #獲取目標TOMCAT的WAR路徑和TOMCATA的絕對路徑

  48.    TOMCAT_PARAM=(${T//:/ })

  49.    MODULE_NAME=${TOMCAT_PARAM[0]}

  50.    TARGET_TOMCAT_PATH=${TOMCAT_PARAM[1]}

  51.    WAR_PATH="$WORKSPACE/$MODULE_NAME/target/*.war"


  52.    echo 部署單元模塊名稱:"${MODULE_NAME}"

  53.    echo 部署WAR包路徑:"${WAR_PATH}"

  54.    echo 部署TOMCAT路徑:"${TARGET_TOMCAT_PATH}"


  55.    #需要考慮MAVEN單模塊下的部署問題

  56.    #if [ "${#ARR[*]}" -eq 1 -a -z "$TARGET_TOMCAT_PATH" ]

  57.    if [ "$ARR_LEN" -eq 1 -a -z "$TARGET_TOMCAT_PATH" ]

  58.    then

  59.        #MAVEN過程沒有子模塊,單個部署單元

  60.        TARGET_TOMCAT_PATH=$MODULE_NAME

  61.    MODULE_NAME="NULL"

  62.    fi


  63.    #校驗參數,WORKSPACE變量來自於Jenkins環境變量

  64.    if [ -z "$MODULE_NAME" -o ! -f $WAR_PATH ]

  65.    then

  66.        echo 錯誤:MAVEN部署模塊名稱 參數爲空 找不到WAR包!

  67.        echo 部署失敗!

  68.        exit 1

  69.    fi


  70.    if [ -z "$TARGET_TOMCAT_PATH" -o ! -d "$TARGET_TOMCAT_PATH" ]

  71.    then

  72.        echo 錯誤:目標TOMCAT絕對路徑 參數爲空 TOMCAT目錄不存在!

  73.        echo 部署失敗!

  74.        exit 1

  75.    fi


  76.    echo 開始清理目標TOMCAT啓動進程...

  77.    TOMCAT_PID=`ps -ef |grep "$TARGET_TOMCAT_PATH" |grep  "start" |awk '{print $2}'`

  78.    if [ -n "$TOMCAT_PID" ]

  79.    then

  80.        echo TOMCAT_${i},PID${TOMCAT_PID},正在結束該進程...

  81.        kill -9 $TOMCAT_PID && echo PID${TOMCAT_PID} 已被幹掉!

  82.    else

  83.        echo TOMCAT_${i} 進程未啓動!

  84.    fi


  85.    echo 開始清理目標TOMCAT緩存...

  86.    rm -rf $TARGET_TOMCAT_PATH/webapps/*

  87.    rm -rf $TARGET_TOMCAT_PATH/logs/*

  88.    rm -rf $TARGET_TOMCAT_PATH/work/*


  89.    echo 開始部署WAR包...

  90.    cp -a $WAR_PATH $TARGET_TOMCAT_PATH/webapps/ROOT.war && echo WAR包部署完畢。


  91.    echo 開始啓動目標TOMCAT服務...

  92.    sleep 10

  93.    /bin/bash $TARGET_TOMCAT_PATH/bin/startup.sh


  94.    echo 開始配置web目錄的FTP權限...

  95.    #啓動過程會自動解壓WAR包,所以在這裏需要等待WAR包解壓完成再調整目錄權限

  96.    sleep 30

  97.    chown -R vftpuser.vftpuser ${TARGET_TOMCAT_PATH}/webapps/ && echo 目錄權限配置完畢。


  98.    echo 部署成功

  99.    echo 完成 第 ${i} 個部署單元處理。

  100.    echo


  101.    ((i++))

  102. done

3.構建效果如下圖所示:
new_jenkins.gif-1968.9kB




(2) Java 環境演示 [Jenkins和Tomcat不在一臺服務器上]

上面的腳本是針對Jenkins和Tomcat都在相同的目錄,有的時候我們測試環境會存在不在一臺服務器的情況,腳本如下

  1. 只是腳本簡單的修改

  2. [root@tomcat ~]# cat /jenkins/ysc.sh

  3. #!/bin/bash


  4. #

  5. # Jenkins工程構建通用TOMCAT部署腳本

  6. # @author 劉曙

  7. # @create_time 2017-08-19

  8. #

  9. # 在Jenkins內配置部署單元參數

  10. #      參數格式:MAVEN_MODULE_NAME:TOMCAT_ABSOLUTE_PATH  MAVEN模塊名稱:需要部署的目標TOMCAT絕對路徑

  11. #      只有單個部署單元且沒有Maven子模塊時,模塊名稱參數可以沒有,參數格式爲:TOMCAT_ABSOLUTE_PATH

  12. #

  13. # 注意:

  14. #      在本部署腳本內會執行TOMCAT啓動腳本,爲避免Jenkins在構建成功以後殺掉所有衍生的後臺進程,需要在Jenkins內配置全局環境變量 BUILD_ID 值爲 allow_to_run_as_daemon

  15. #

  16. #


  17. DEPLOY_TARGET_TOMCAT=$YSC

  18. HOST=root@172.16.1.35

  19. #校驗部署參數,不能爲空

  20. if [ -z "$DEPLOY_TARGET_TOMCAT" ]

  21. then

  22.    echo

  23.    echo 部署參數爲空,部署失敗!

  24.    echo "#####################################################################"

  25.    exit 1

  26. fi


  27. echo

  28. echo 部署參數:${DEPLOY_TARGET_TOMCAT}


  29. TOMCAT_ARR=${DEPLOY_TARGET_TOMCAT//;/ }

  30. ARR=($TOMCAT_ARR)

  31. ARR_LEN=${#ARR[*]}

  32. echo ${ARR_LEN} 個部署單元


  33. i=1

  34. #獲取Jenkins傳入的目標TOMCAT組

  35. for T in $TOMCAT_ARR

  36. do

  37.    echo

  38.    echo 開始 處理第 ${i} 個部署單元

  39.    echo 第一個部署單元:$T


  40.    #獲取目標TOMCAT的WAR路徑和TOMCATA的絕對路徑

  41.    TOMCAT_PARAM=(${T//:/ })

  42.    MODULE_NAME=${TOMCAT_PARAM[0]}

  43.    TARGET_TOMCAT_PATH=${TOMCAT_PARAM[1]}

  44.    #WAR_PATH="/jenkins/workspace/ysc-all/${MODULE_NAME}/target/*.war"

  45.    WAR_PATH="${WORKSPACE}/${MODULE_NAME}/target/*.war"


  46.    echo 部署單元模塊名稱:"${MODULE_NAME}"

  47.    echo 部署WAR包路徑:"${WAR_PATH}"

  48.    echo 部署TOMCAT路徑:"${TARGET_TOMCAT_PATH}"



  49.    #判斷IP是否有相關目錄

  50.    ssh 172.16.1.35 "[ -d $TARGET_TOMCAT_PATH ]" >/dev/null 2>&1

  51.    if [ $? != 0 ];then

  52.       echo 錯誤

  53.    else

  54.       echo  正確

  55.    fi



  56.    #校驗參數,WORKSPACE變量來自於Jenkins環境變量

  57.    if [ -z "$MODULE_NAME" -o ! -f $WAR_PATH ]

  58.    then

  59.        echo 錯誤:MAVEN部署模塊名稱 參數爲空 找不到WAR包!

  60.        echo 部署失敗!

  61.        exit 1

  62.    fi


  63.    #scp 軟件包

  64.   ssh $HOST /etc/init.d/${MODULE_NAME} stop

  65.   ssh 172.16.1.35 "[ -d $TARGET_TOMCAT_PATH/webapps/ROOT/ ]" >/dev/null 2>&1

  66.   if [ $? = 0 ];then

  67.      ssh 172.16.1.35 rm -rf $TARGET_TOMCAT_PATH/webapps/ROOT

  68.        if [ $? = 0 ];then

  69.           scp  $WAR_PATH root@172.16.1.35:$TARGET_TOMCAT_PATH/webapps/ROOT.war && echo WAR包部署完畢。

  70.           echo $TARGET_TOMCAT_PATH is OK

  71.        else

  72.           echo 刪除$TARGET_TOMCAT_PATH is error

  73.        fi

  74.   else

  75.           echo "not found $TARGET_TOMCAT_PATH/webapps/ROOT"

  76.           scp  $WAR_PATH root@172.16.1.35:$TARGET_TOMCAT_PATH/webapps/ROOT.war && echo WAR包部署完畢。

  77.           ssh $HOST /etc/init.d/${MODULE_NAME} restart

  78.   fi


  79. ####################啓動文件


  80. done

  81.  #scp /home/config.properties/ysc/${MODULE_NAME}.js [email protected]:$TARGET_TOMCAT_PATH/webapps/ROOT/web/js/basePath.js

  82.  ssh $HOST /etc/init.d/${MODULE_NAME} restart


Jenkins配置如下修改
b.jpg-221.2kB

image_1ch5dcoad126r201g961a6ised9q.png-148.7kB

修改完成後我們構建演示
new_jenkins2.gif-879.3kB

提示:這種環境下配置文件都是通過maven build進行控制,也就是通過研發控制配置文件

+
+
+
+




(3) Java 環境演示 [上線腳本]

線上環境演示
我們的上線流程如下:
image_1ch5foh2q1th6ulu1tar1dqb1jh7bt.png-45.1kB

Jenkins配置如下:
image_1ch5fsvoi1q5l1d9g108j1mg218mcca.png-123.7kB
image_1ch5fut497s13dofdr1b0v1hlqcn.png-168.4kB
image_1ch5g3h5ssmc15sr1r4s1gpa1nshd4.png-160kB

+
+
+
+
+
1.首先測試環境腳本:

  1. [root@tomcat ~]# cat /server/scripts/.upgrade-smscenter.sh

  2. #!/bin/bash

  3. WAR="/jenkins/workspace/portal-smscenter/bxg-sms-center-web/target/*.war"

  4. Path="/data/hub/bxg-smscenter/`date +%Y%m%d`/"


  5. scp_war(){


  6. if [ ! -d $Path ];then

  7. ssh root@file-server mkdir -p $Path

  8.    scp $WAR root@file-server:$Path

  9. else

  10.    scp $WAR root@file-server:$Path

  11. fi

  12. }

  13. ssh_file(){

  14.  ssh root@file-server "/bin/bash /server/script/bxg/bxg-smscenter.sh"

  15. }

  16. scp_war

  17. ssh_file

2.跳板機腳本修改

[root@File-server1 ~]# cat /server/script/bxg/bxg-smscenter.sh#!/bin/bashHOST=online-server2WAR="/data/hub/bxg-smscenter/`date +%Y%m%d`"DIR="/application/smscenter/webapps/ROOT/"function scp_file {    if `ssh root@$HOST "[ ! -d $WAR ]"`;then            ssh root@$HOST "mkdir -p $WAR"    fi            scp $WAR/*.war root@$HOST:$WAR/            echo "scp $WAR/*.war root@$HOST:$WAR/"}ssh_deploy(){    ssh root@$HOST "/bin/bash /server/scripts/deploy_smscenter.sh"}scp_filessh_deploy

3.web 服務器腳本

  1. [root@online-server2 ~]# cat /server/scripts/deploy_smscenter.sh

  2. #!/bin/bash

  3. WAR="/data/hub/bxg-smscenter/`date +%Y%m%d`"

  4. OBJECT="/application/smscenter/webapps/ROOT/"

  5. Backup="/data/tomcat/bxg-smscenter-`date +%Y%m%d`"

  6. SCR_D="/application/smscenter/webapps/ROOT"

  7. #config="/data/bak"



  8. backup_tar(){

  9.    tar zcvf $Backup.tar.gz $SCR_D/

  10.    echo "爲了防止意外cp整個項目目錄存放"

  11.    cp -a $SCR_D/ $Backup

  12.    rm -rf $OBJECT/*

  13. }





  14. cp_war(){

  15.    unzip $WAR/*.war -d $SCR_D/

  16. }


  17. cp_config(){

  18.    cat $Backup/WEB-INF/classes/application-prod.properties >$SCR_D/WEB-INF/classes/application-prod.properties

  19.    /etc/init.d/smscenter restart

  20. }

  21. backup_tar

  22. cp_war

  23. cp_config

  24. [root@online-server2 ~]#

相關文章  企業必會技能 tomcat

+
+
+
+




(4) NodeJs 環境演示 [上線腳本]

node 環境上線流程
Jenkins配置如下 [node項目不適用maven,所以可以不用創建maven項目,直接在Jenkins創建普通項目就可以]
image_1ch5h3tugmu110pr1p85c5e1fe5dh.png-122.6kB
image_1ch5hdkn1mlv17vj12ue1m7i1k6veu.png-261.6kB

1.測試環境腳本

  1. [root@tomcat ~]# cat /server/scripts/mobile/mobile.sh

  2. #!/bin/bash

  3. source /etc/profile


  4. HOST=file-server

  5. BASE_DIR=/server/scripts/mobile/m

  6. url=$1

  7. server=$2

  8. DATE=`date +%Y%m%d`



  9. tar(){

  10. rm -rf $BASE_DIR


  11.    [ -d $BASE_DIR ] || mkdir $BASE_DIR

  12.    cd $BASE_DIR

  13. echo "##########################################################"

  14. echo "代碼拉取中!!!"

  15. svn co -q $url/ .

  16.    echo "##########################################################"


  17. }


  18. cp(){


  19.    cd ${BASE_DIR}

  20. /bin/tar -zcvf m_${DATE}.tar.gz ./*

  21.    echo "##########################################################"

  22.    echo "文件已經打包完成! 正在拷貝中!!!"

  23.    echo "##########################################################"

  24.    sleep 5

  25.    scp  m_${DATE}.tar.gz root@$HOST:/data/hub/bxg-mobile/

  26.    echo "##########################################################"

  27.    echo "文件已經拷貝完成! 正在上傳服務器中!!!"

  28.    echo "##########################################################"

  29.        ssh root@file-server "/bin/bash /server/script/bxg/bxg-mobile.sh $server"


  30. }


  31. tar

  32. cp

  33. [root@tomcat ~]#

2.跳板機腳本

  1. [root@File-server1 ~]# cat /server/script/bxg/bxg-mobile.sh

  2. #!/bin/bash

  3. HOST=$1

  4. Mobile_tar="/data/hub/bxg-mobile"

  5. DIR="/application/node"

  6. DATE=`date +%Y%m%d`





  7. scp_file(){

  8.    if `ssh root@$HOST "[ ! -d $Mobile_tar ]"`;then

  9.            ssh root@$HOST "mkdir -p $Mobile_tar"

  10.    fi

  11.            scp $Mobile_tar/m_${DATE}.tar.gz root@$HOST:$DIR/

  12.        sleep 3

  13.        echo "   "

  14.        echo "##########################################################"

  15.        echo "File-server 正在拷貝 ${HOST}!!!"

  16.        sleep 3

  17.        echo "##########################################################"

  18. }



  19. ssh_deploy(){

  20.           echo "Hi"

  21.    ssh root@$HOST "/bin/bash /server/scripts/bxg/bxg-mobile.sh"

  22. }


  23. scp_file

  24. ssh_deploy

3.web 發佈腳本

  1. [root@iZbp11tefvghtcfn5mudgdZ ~]# cat /server/scripts/bxg/bxg-mobile.sh

  2. #!/bin/bash

  3. source /etc/profile

  4. DIR="/application/node"

  5. DATE=`date +%Y%m%d`


  6. Backup="/application/node/m/"

  7. BAK="/data/hub/bxg-mobile"




  8. backup_tar(){

  9.    echo "爲了防止意外cp整個項目目錄存放"

  10.    cp -ar $Backup ${BAK}/mobile_$DATE

  11.    echo "online-server 原目錄拷貝備份完成!"

  12. }




  13. cp_war(){

  14.    /etc/init.d/mobile stop

  15.    #mv $Backup /tmp/m_${DATE} && rm -rf /tmp/m_${DATE}

  16. rm -rf $Backup

  17.    mkdir $Backup && cd /application/node/

  18. tar xf m_${DATE}.tar.gz -C $Backup



  19. }

  20. npm_config(){

  21.    cd $Backup

  22. cnpm install

  23. npm run build-prod

  24. npm run start-prod &>/var/log/mobile_${DATE}.log &


  25. }


  26. C(){

  27.    echo "++++++++++++++++++++++++++++++++++++++++++++++++++++"

  28.    curl  -I 127.0.0.1:3000

  29.    echo "###################################################"

  30.    echo "若是200 服務啓動正常! 可以啓動另一臺!"

  31.    echo "###################################################"

  32. }








  33. backup_tar

  34. cp_war

  35. npm_config

  36. C

+
+
+

總結:Jenkins自動化不是運維一個人就可以完成的,需要研發的參與,本文只是給大家展示一下我公司的自動化,我眼裏所謂的自動化. 希望大家不喜勿噴,對文章有意見可以下發留言!


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