跳至主要內容

部署

大约 5 分钟指南CI/CD部署

注意

目前作者使用的部署方式为阿里云效 + Docker一键部署。部署方式大同小异,均是将待部署的应用打包成Docker镜像,然后通过Docker命令启动服务。

作者使用的均为个人免费版,配置与企业版略有差异。本文以quan-app-aggregations服务部署配置为例。

本项目内置了Docker脚本,配合云效部署脚本,用于一键部署到 Linux 服务器。

使用阿里云效持续集成

第一步,按照官方文档open in new window,创建一个流水线。

第二步,添加流水线源

提示

作者使用的是码云,可以按照自己的代码库配置。

第三步,构建配置

提示

  1. 配置构建集群:查看帮助open in new window

  2. 点击Java 构建 打开编辑弹窗,重点关注 任务步骤 配置

  3. 配置镜像构建并推送至阿里云镜像仓库个人版,请按照操作指引添加服务连接。查看帮助open in new window

点击 任务步骤 > Java 构建
    步骤名称:自定义
    JDK版本:选择1.8
    Maven版本:不选择
    重点关注构建命令,配置如下:
    # gradle build default command
    ./gradlew build
    echo 
    echo 复制Dockerfile
    cp quan-app/quan-app-aggregations/src/main/docker/Dockerfile quan-app/quan-app-aggregations/build/libs
    cp quan-app/quan-app-aggregations/src/main/docker/runboot.sh quan-app/quan-app-aggregations/build/libs 
    echo 
    echo 开始构建镜像

示例:

点击 任务步骤 > 添加步骤

提示

配置镜像构建并推送至阿里云镜像仓库个人版 查看帮助open in new window

配置好阿里云镜像仓库后,即可在仓库选项中选择。

针对项目相关参数说明(其它参数按照云效默认配置即可):

配置说明示例
标签服务名称-日期;docker执行脚本固定为该格式quan-app-aggregations-$
Dockerfile路径构建脚本会将默认的文件复制到构建目录,因此需要填写构建目录下的文件路径quan-app/quan-app-aggregations/build/libs/Dockerfile

示例:

第四步,部署配置
新增一个任务,选则:部署/Docker部署,并点击部署配置进行编辑

新建主机组

提示

如果是阿里云ECS服务器实例,可以点击阿里云ECS,直接添加。

如果是自有主机,点击自有主机后,按照界面的提示,将代码复制到自己的 Linux 服务器上运行即可添加。

部署脚本配置

提示

此脚本以quan-app-aggregations服务配置为例,实现比较简单仅供参考,可以修改为自己的应用服务或自己实现脚本配置。

该示例中的 Docker镜像 是从作者的阿里云镜像仓库个人版中拉取,必须替换为自己的镜像配置。

示例中的所有 变量 均固定在脚本中;它们也可以配置到云效的 部署脚本变量配置 中,从而更好的维护脚本参数。

echo 
echo 正在停止服务
docker stop `docker ps -a| grep quan-app-aggregations | awk '{print $1}'`
echo 
echo 清理服务部署文件
docker rm `docker ps -a| grep quan-app-aggregations | awk '{print $1}'`
echo 
echo 清理服务镜像
docker rmi `docker images | grep -E "quan-app-aggregations" | awk '{print $3}' | uniq `
echo 
echo 拉取最新镜像
docker pull registry.cn-shenzhen.aliyuncs.com/quan100/images:quan-app-aggregations-${DATETIME}
echo  
echo 运行镜像
docker run -d --privileged=true --restart=always --name quan-app-aggregations --network quan-app-net -p 10020:10020 -e "SPRING_PROFILES_ACTIVE=prod" -e "jasypt.encryptor.password=这里配置yml配置解密所需的密码" -v /data/projectLog/quan-app-aggregations:/root/data/projectLog/quan-app-aggregations registry.cn-shenzhen.aliyuncs.com/quan100/images:quan-app-aggregations-${DATETIME}

# 检查服务是否部署成功
# 本机可访问的应用服务地址为:http://localhost:10020/health
echo "检查服务运行状态..."
for (( i=0; i<${check_max_count}; ++i ))
do
    if [ $(curl -sIL -w "%{http_code}" -o /dev/null http://localhost:10020/health) -eq 200 ];then
        echo "服务启动成功"
        break
    else
        if [[ i -eq ${check_max_count} ]];then
            echo "检查服务运行状态超过限制次数,请手动检查"
            exit 1
        else
            sleep ${check_sleep}
        fi
    fi
done

注意⚠️

docker run 命令中的 -e "SPRING_PROFILES_ACTIVE=prod" -e "jasypt.encryptor.password=这里配置yml配置解密所需的密码" 需修改为自己的配置。若已经在项目中配置,可剔除 docker run 命令中的配置。

部署脚本变量配置

提示

部署脚本中添加变量后,需通过可视化界面编辑新增才能生效。

变量格式:${变量名称} 示例:$

当前部署脚本中应用的变量:

变量类型说明
check_max_countint配置检查的最大次数
check_sleepint每次检查完后的停顿时间

示例:

第五步,检查完整的流程配置

提示

流程配置完成后,即可点击保存并运行。静待部署结果 ~

配置代码源触发部署

只需要push提交代码到仓库master分支即可。

参考:配置代码源触发open in new window

上次编辑于:
贡献者: wangquan