站点图标 Linux-技术共享

Jenkins+Gitlab+Docker容器化工程自动化部署

d7fc48ab3ea5ce585a027ca8270c46fa_800x467

在软件开发过程中,如果我们每一次提交的代码都能够进行一次完整的编译、测试、打包、发布,就能及早发现问题、及早修复,在保证代码质量的同时让产品快速迭代。这就是持续集成(CI)、持续部署(CD)的好处。

目前 CI/CD 的方案有很多,本文将展示一个用 Docker + Jenkins 实现的完整过程。

本文的 CI/CD 流程

开发人员提交代码到自己的分支并 push 到远程仓库 ==> 触发远程仓库(GitHub/GitLab)的 Webhooks ==> Jenkins 接到通知自动执行之前准备好的一个流程(克隆代码,对代码进行编译、测试、打包,没有问题后会执行 docker 命令进行镜像构建)==> 最终发布到测试服务器中。

环境说明

  • 本文选用的测试环境是阿里云的服务器,所以全程也是在服务器上操作的,无需本地安装 docker,当然在本地操作也是可以的。
  • 本文选用的远程代码库是 Gitlab 仓库。
  • 本文中所用的 Jenkins 也是用的 docker 版。

步骤1:

创建springboot项目

步骤2:

创建Jenkins项目maven类型

步骤3:

配置 Webhooks

步骤4:

编写自动任务脚本进行 CI/CD

#!/bin/bash
set fileformat=unix 

APP_PATH="/usr/hj/apps/hmall-service-auth-jwt"
APP_NAME="hmall-service-auth-jwt"
IMAGE_NAME=${APP_NAME}
CONTAINER_NAME=${APP_NAME}

cp /var/lib/jenkins/workspace/${APP_NAME}/target/${APP_NAME}.jar  ${APP_PATH}

echo "删除之前的镜像和容器"
docker stop ${CONTAINER_NAME}
docker rm   ${CONTAINER_NAME}
docker rmi  ${IMAGE_NAME}


echo "构建镜像" 
cd ${APP_PATH}
docker  build  -t ${IMAGE_NAME}  .
         
echo "发布应用" 

docker  run  -d  -p  9001:9001    -e "spring.profiles.active=test"    ${APP_NAME}  --name   ${CONTAINER_NAME}  ${IMAGE_NAME}

 
退出移动版