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 root@127.0.0.1:/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 root@127.0.0.1 "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 root@127.0.0.1 "sh /root/elastic.sh restart"
        fi
fi
echo "********************部署结束********************"

 代码部分解释:es服务单独判断是由于es启动的时候失败了,需要先停掉es的节点,启动成功以后再启动es节点。所以写了个脚本去操作。

all变量是当初想要一键启动所有服务,但是由于服务越来越多,一键启动的话风险太大,所以还是老老实实该启动啥就启动啥吧。

代码中有一段需要执行的shell脚本。http://127.0.0.1/deployJar.sh,里面就是一些普通脚本,判断服务端口,杀掉以后进程,已经重启服务的,也是该配置的核心,我就不放出来。需要的朋友可以私我哈。关注公众号:FOSSspace,联系我哈。如果有困难,也可以帮你参考一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值