流水线使用(测试->构建->部署上线)
创始人
2024-05-25 06:49:13
0

流水线介绍(可直接查阅云效中流水线介绍)


流水线在项目中的使用


1、选择我的流水线—>新建流水线

在这里插入图片描述

2、选择流水线模板(可以根据需求选择不同模板)

在这里插入图片描述

3、流水线配置

在这里插入图片描述
在这里插入图片描述

①选择代码源:我目前展示的是直接使用codeup中的代码源,如果第一次可以使用示例代码源进行试使用,后面可以使用Codeup中的代码源

②代码仓库:配置服务器连接后,自动扫描获取到了你的所有项目

③选择默认分支:一般是开发分支,而不是master分支,具体看平时提交到哪个分支

④开启分支模式(企业中肯定是要开启的,这里只是个人项目,不需要开启)

⑤工作目录:可以自定义,也可以不需要管,我这里不管

在这里插入图片描述

测试这一块,需要注意一下jdk版本以及maven版本

4、流水线:Java构建上传编辑

在这里插入图片描述

注意一下:

这里分为Java构建 和 构建物上传,Java构建一目了然,同样,除jdk和maven版本需要注意保持一致其他默认,构建物上传的话,就需要特别注意打包路径了,需要配置两行,一行是jar包配置,一行是部署脚本配置。部署脚本后面会提供并解释。
在这里插入图片描述在这里插入图片描述

推荐本地打包一下,查看打包后的jar包名称是什么,别配置错了。各位此处唯一需要更改的就是jar包名称。

5、流水线:主机部署编辑

在这里插入图片描述

可以看到,需要注意右边的三点,其他不需要变,直接选择即可:

主机组:新建主机组,可以根据实际情况,如果是购买的阿里云的服务器,选第一个,如果是腾讯云,华为云之类的非阿里云服务器,选第二个。或者没有服务器,选第三个。我这里是选择的第三个作为示例。。

在这里插入图片描述
在这里插入图片描述

将体验ESC中的这三个复制到对应的流水线
在这里插入图片描述

下载路径:这个下载路径可以不需要更改,只需要注意记住就是,后面的部署脚本需要填写这个配置。

部署脚本:由于前面阿里云已经构建完成,在下载路径会有对应的package.tar的压缩包,所以部署脚本存在的目的,就是解压这个压缩包到指定路径,并执行我们项目中的脚本文件,我的部署脚本如下:

mkdir -p /home/admin/spring-boot-template-1.0-SNAPSHOT
tar zxvf /home/admin/app/package.tgz -C /home/admin/spring-boot-template-1.0-SNAPSHOT/
sh /home/admin/spring-boot-template-1.0-SNAPSHOT/deploy.sh restart

非常好理解:各位唯一需要对应更改的地方就是将脚本中所有的spring-boot-template-1.0-SNAPSHOT更改为你的jar包名称即可,其他无需更改。

部署策略:随便都行,看你自己选,不影响部署结果。

至此,流水线配置完成了。虽然我写的多,那是我习惯性的保姆意识导致的,其实流程非常短,且简单。

二、项目配置(流水线运行之前需要在项目里添加以下两个)

项目配置需要注意两点:

其一脚本文件deploy.sh,其二pom文件打包命令

注意一下,别混淆了项目中的脚本文件,和流水线中的部署脚本。流水线中的部署脚本用于解压项目构建后的压缩包,以及执行deploy.sh文件。而deploy.sh文件则是具体的部署脚本,包含了最基本的nohup java -jar xxx.jar &这个基本的部署命令。

1、脚本文件deploy.sh

文件位置:项目最外层,与pom文件同一层级

文件内容:

#!/bin/bash#修改APP_NAME为云效上的应用名
APP_NAME=spring-boot-template-1.0-SNAPSHOTPROG_NAME=$0
ACTION=$1
APP_START_TIMEOUT=20    # 等待应用启动的时间
APP_PORT=8088          # 应用端口
HEALTH_CHECK_URL=http://127.0.0.1:${APP_PORT}/first # 应用健康检查URL
HEALTH_CHECK_FILE_DIR=/home/admin/status   # 脚本会在这个目录下生成nginx-status文件
APP_HOME=/home/admin/${APP_NAME} # 从package.tgz中解压出来的jar包放到这个目录下
JAR_NAME=${APP_HOME}/target/${APP_NAME}.jar # jar包的名字
JAVA_OUT=${APP_HOME}/logs/start.log  #应用的启动日志#创建出相关目录
mkdir -p ${HEALTH_CHECK_FILE_DIR}
mkdir -p ${APP_HOME}/logs
usage() {echo "Usage: $PROG_NAME {start|stop|restart}"exit 2
}health_check() {exptime=0echo "checking ${HEALTH_CHECK_URL}"while truedostatus_code=`/usr/bin/curl -L -o /dev/null --connect-timeout 5 -s -w %{http_code}  ${HEALTH_CHECK_URL}`if [ "$?" != "0" ]; thenecho -n -e "\rapplication not started"elseecho "code is $status_code"if [ "$status_code" == "200" ];thenbreakfifisleep 1((exptime++))echo -e "\rWait app to pass health check: $exptime..."if [ $exptime -gt ${APP_START_TIMEOUT} ]; thenecho 'app start failed'exit 1fidoneecho "check ${HEALTH_CHECK_URL} success"
}
start_application() {echo "starting java process"nohup java -jar ${JAR_NAME} > ${JAVA_OUT} 2>&1 &echo "started java process"
}stop_application() {checkjavapid=`ps -ef | grep java | grep ${APP_NAME} | grep -v grep |grep -v 'deploy.sh'| awk '{print$2}'`if [[ ! $checkjavapid ]];thenecho -e "\rno java process"returnfiecho "stop java process"times=60for e in $(seq 60)dosleep 1COSTTIME=$(($times - $e ))checkjavapid=`ps -ef | grep java | grep ${APP_NAME} | grep -v grep |grep -v 'deploy.sh'| awk '{print$2}'`if [[ $checkjavapid ]];thenkill -9 $checkjavapidecho -e  "\r        -- stopping java lasts `expr $COSTTIME` seconds."elseecho -e "\rjava process has exited"break;fidoneecho ""
}
start() {start_applicationhealth_check
}
stop() {stop_application
}
case "$ACTION" instart)start;;stop)stop;;restart)stopstart;;*)usage;;
esac

内容很长,不管,直接负责粘贴即可,需要更改的地方就三个。

其一是APP_NAME改为你的jar包名称;

其二是APP_PORT改为你的项目端口号;

其三是健康检查URL,改为你自己项目的随便一个接口,最好是个无需登录授权的接口;

2、pom文件

pom打包插件如下配置:

org.springframework.bootspring-boot-maven-plugin
2.7.6repackagebuild-infotruecom.normstar.szcp.ServiceSupportUserApplication

唯一需要改的是mainClass,改为你自己的启动类

这里贴出我的健康检查URL

package com.normstar.szcp.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class FirstController {@GetMapping("/first")public String first() {return "成功";}}

将以上所有更改提交并push到线上git,然后就可以回到流水线,直接点运行了。
在这里插入图片描述

3、特别注意一下:

其一,如果你的前文提到的流水线打包路径配的不正确,有可能会出现构建成功,部署成功,但是其实压根啥都没运行的情况,所以构建日志一点要看,尤其是构建的最后一步,构建物上传,请仔细查看,是否出现No file or directory find 之类的语句,出现了,代表你工作目录配错了。
在这里插入图片描述
其二,部署日志也要看,只有出现如下健康检查URL通过了,才是部署成功
在这里插入图片描述
如果部署失败了,别急,去看项目日志,根据deploy.sh文件中的配置,应用的启动日志在这里:
JAVA_OUT=${APP_HOME}/logs/start.log

我的位置:
在这里插入图片描述
如果start.log中确实有错误提示,那么就是你jar包的问题,流水线是没问题的。要么百度,要么直接修改,解决了重新运行流水线就行。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...