合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
# :-: jenkins+gitlab+docker容器化工程自动化部署 ![](https://img.kancloud.cn/d7/fc/d7fc48ab3ea5ce585a027ca8270c46fa_800x467.png) 在软件开发过程中,如果我们每一次提交的代码都能够进行一次完整的编译、测试、打包、发布,就能及早发现问题、及早修复,在保证代码质量的同时让产品快速迭代。这就是持续集成(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 ![](https://img.kancloud.cn/1c/ba/1cbafaae85b2b107277f6b35d7312199_935x397.png) ``` #!/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} ``` ![](https://img.kancloud.cn/82/51/8251394b5abf91b541ce7aff800a0f15_695x575.png)