jenkin配置gitlab持續化構建Spring Cloud微服務

前言:由於公司部分項目採用的是spring cloud微服務,然後我選擇了使用gitlab和jenkins持續化集成和自動發佈服務。經過長時間的使用,感覺還是非常的方便,特此分享一下自己的配置和腳本。

1、先創建jenkins的item

       

        創建一個任務名,選擇構建多配置項目。 

2.配置項目

    --添加描述,選擇Discard old builds 保持最大構建數,輸入自己需要保留的構建記錄。根據自己需求隨意輸入,輸入以後就會根據數字保留相應的構建記錄 

    --添加構建時使用的參數

    我添加的參數有:

    branch:類型:(String Parameter),需要構建的分支名稱,構建時會選擇此分支進行打包發佈

    repackage: 類型:(Boolean Parameter),是否需要重新打包項目,默認是,一般部署項目都需要重新打包,如果僅僅是重啓,則在啓動時取消選中即可。

    restart:類型:(Boolean Parameter),是否需要重啓,默認是,一般部署項目即是啓動項目,如果僅僅是打包的話,可以在啓動是取消選中即可。

    HTY_SERVICE:類型(Choice Parameter),選擇需要部署的服務,將所有服務的application-name的名稱,複製到這裏面,部署項目的時候進行選擇。

    tar_service_port:類型(Multi-line String Parameter),參數格式是:服務名:端口號:IP:包名,這樣可以從shell腳本中讀取你選中的服務名,部署到哪個ip,端口號是多少,打包以後的包名是什麼,方便進一步部署服務。

 

3.源碼管理

    --源碼管理選擇Git, Repository URL輸入項目的gitlab地址,點擊添加,配置git的用戶名和密碼,配置用戶名和密碼是隻需要輸入用戶名和密碼,其他輸入框可以不用管。然後選擇你的用戶名和密碼。輸入分支變量:*/${branch},匹配剛剛的branch變量值。方便拉取分支。

 4.構建,選擇執行Excute Shell,輸入寫好的腳本 

腳本如下,僅供參考:

#!/bin/bash 
BUILD_ID=dontKillMe
elastic=htlb-elasticsearch-service
echo "********************部署開始********************"
if $repackage; then
		for  SER_PORT_IP in $(echo $tar_server_port) ; do
            SERVICE_NAME=$(echo $SER_PORT_IP | cut -f 1 -d ':' )
            SERVICE_PORT=$(echo $SER_PORT_IP | cut -f 2 -d ':' )
            SERVER_IP=$(echo $SER_PORT_IP | cut -f 3 -d ':' )
            JAR_NAME=$(echo $SER_PORT_IP | cut -f 4 -d ':' )
            if [[ "$HTY_SERVICE" == "$SERVICE_NAME" || "$HTY_SERVICE" == "all" ]]; then
            	echo "********************$SERVICE_NAME部署打包開始********************"
                mvn clean package -Dmaven.test.skip=true -pl "${SERVICE_NAME}" -am
                scp -P22 $SERVICE_NAME/target/$JAR_NAME.jar [email protected]:/root/home/deployer/projects
                echo "********************$SERVICE_NAME部署打包結束********************"
            fi
        done
fi
if $restart; then
        if [ $HTY_SERVICE = $elastic ]; then
            echo "current service is htlb-elasticsearch-service"
            ssh [email protected] "sh /root/elastic.sh stop"
        fi
        for  SER_PORT_IP in $(echo $tar_server_port) ; do
            SERVICE_NAME=$(echo $SER_PORT_IP | cut -f 1 -d ':' )
            SERVICE_PORT=$(echo $SER_PORT_IP | cut -f 2 -d ':' )
            SERVER_IP=$(echo $SER_PORT_IP | cut -f 3 -d ':' )
            JAR_NAME=$(echo $SER_PORT_IP | cut -f 4 -d ':' )
            if [[ "$HTY_SERVICE" == "$SERVICE_NAME" || "$HTY_SERVICE" == "all" ]]; then
            	echo "********************$SERVICE_NAME部署服務開始********************"
                echo "scp /root/home/deployer/projects/${JAR_NAME}.jar root@${SERVER_IP}:/root/home/deployer/projects";
                scp /root/home/deployer/projects/${JAR_NAME}.jar root@${SERVER_IP}:/root/home/deployer/projects
                echo "scp complete!"
                ssh root@${SERVER_IP} "mkdir -p /root/home/deployer/workspace/${SERVICE_NAME}-${SERVICE_PORT} && cp /root/home/deployer/projects/${JAR_NAME}.jar /root/home/deployer/workspace/${SERVICE_NAME}-${SERVICE_PORT}/app.jar && curl -fsSL http://127.0.0.1/deployJar.sh | bash -s -- -t/root/home/deployer/workspace/${SERVICE_NAME}-${SERVICE_PORT}/app.jar -p${SERVICE_PORT} -a-Dspring.profiles.active=test -l -f/var/log/deployer/service/${SERVICE_NAME}.log"
                echo "********************$SERVICE_NAME部署服務結束********************"
            fi
            if [ "$HTY_SERVICE" == "all" ]; then
                sleep 5
            fi
        done
        if [ $HTY_SERVICE = $elastic ]; then
            echo "current service is htlb-elasticsearch-service"
            sleep 10
            ssh [email protected] "sh /root/elastic.sh restart"
        fi
fi
echo "********************部署結束********************"

 代碼部分解釋:es服務單獨判斷是由於es啓動的時候失敗了,需要先停掉es的節點,啓動成功以後再啓動es節點。所以寫了個腳本去操作。

all變量是當初想要一鍵啓動所有服務,但是由於服務越來越多,一鍵啓動的話風險太大,所以還是老老實實該啓動啥就啓動啥吧。

代碼中有一段需要執行的shell腳本。http://127.0.0.1/deployJar.sh,裏面就是一些普通腳本,判斷服務端口,殺掉以後進程,已經重啓服務的,也是該配置的核心,我就不放出來。需要的朋友可以私我哈。關注公衆號:FOSSspace,聯繫我哈。如果有困難,也可以幫你參考一下。

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