基於git的post-recevie搭建我的的自動化部署環境

在我的開發的時候,好比寫個小項目、小工程,發佈的時候每次都要打包部署,有沒有感受到很費時間。雖然在公司裏有一整套自動化部署流程,但對於我的來講,去搭這麼一整套流程也很費精力與資源。那麼下面我來教你們用git的post-recevie搭建本身的自動化部署環境。html

1、前期準備

  • Linux服務器,最好有本身我的的私有云服務器(如阿里雲服務器,用於我的的學習、開發、測試都不錯)。
  • 搭建git倉庫。教程:git搭建教程
  • 本教程是以springboot的工程爲例,須要安裝jdk和maven。

2、搭建步驟以下:

一、在服務器上初始化一個git倉庫用於我的的項目開發,本項目以gold.git爲倉庫。java

$ cd /home/gitrepo
$ git init --bare gold.git
複製代碼

二、將gold倉庫git下來,以gold目錄建立一個springboot工程。以下圖所示: git

三、使用/home/gitrepo/gold.git/hooks裏的post-recive鉤子文件實現服務器本地倉庫git項目自動化部署。web

注意:hooks裏面的post-recive.sample不起做用,咱們須要將腳本寫在post-recive中 spring

$ vi post-recive
複製代碼
# 部署路徑
DIR=/opt/jar/gold-9999
# master分支
MASTER="master"

while read oldrev newfev ref
do
        # 只有檢測到master分支提交才觸發自動部署(其它分支提交不觸發)
        if [[ $ref = refs/heads/${MASTER} ]];
        then
                git --work-tree=${DIR} clean -fd
                # 將更新的代碼force出/opt/jar/gold-9999路徑
                git --work-tree=${DIR} checkout --force
                echo "======>>>>>>>>Sync to ${DIR}>>>>>>>==========="

                echo "================================================="
                echo "      starting to deploy web service  "
                echo "================================================="

                echo ">>>>>>>>>>>>open to ${DIR} "
                cd ${DIR}
                # 這裏打包成gold.jar包(去掉單元測試)
                echo "======mvn clean install -Dmaven.test.skip=true========"
                mvn clean install -Dmaven.test.skip=true

                echo ">>>>>>>>>>>>open to ${DIR}/bin"
                echo "================================================="
                echo "stoping gold.jar springboot web service..."
                echo "================================================="
                # 本工程用到的端口是9999,因此根據端口號把已有的進程kill掉
                str=`netstat -nlp|grep :9999`
                str1=${str##*LISTEN}
                str2=${str1// /}
                pid=${str2%/*}
                echo "========kill -9 ${pid}==========================="
                kill -9 ${pid}
                echo "================================================="
                echo "stop gold springboot web service done"
                echo "================================================="
                echo ">>>>>>>>>>>>open to ${DIR}/target"
                cd ${DIR}/target
                echo "================================================="
                echo "restart this process"
                echo "================================================="
                # 從新啓動gold.jar程序
                nohup java -jar -Dspring.profiles.active=prod gold.jar > ${DIR}/target/gold.log 2>&1 &
                echo "================================================="
                echo "deploy web service was finished!"
                echo "================================================="
                echo "==================tail -f gold.log==============="
                # 並實時打印日誌
                tail -f ${DIR}/target/gold.log
        else
                # 若是不是master分支則不做任何操做
                echo "==================================================="
                echo "   This branch is't master,it can't deploy ! "
                echo "==================================================="
        fi
done

複製代碼

四、提交gold項目,部署完成視圖以下:shell

  • master分支提交

  • 其它分支提交

至此,自動化部署已經完成!springboot

建議:用其它分支開發,master分支用於發佈。固然你也能夠基於此本身拓展! bash

相關文章
相關標籤/搜索