参考

jenkins + docker 自动部署

docker + gitlab + jenkins 自动部署及回滚

构建

构建策略

最多保存30天,最大保存10个

img

构建参数

名称默认值(例子)描述
DOCKER_IMAGE_TAGdevdocker镜像tag,根据环境变动
DOCKER_PROJECT填你自己的镜像仓库docker镜像仓库项目信息
DOCKER_USERNAME填你自己的仓库用户名docker仓库用户名
DOCKER_PASSWORD填你自己的仓库密码docker仓库密码
DOCKER_REPOSITORY_PATH填你自己的仓库地址docker仓库地址

在这里插入图片描述

源码管理

注意选择对应的分支
请添加图片描述

触发器

如果需要每天定时深夜执行(代码有更新才会触发)

img

构建环境

构建前删除工作空间

img

构建

后端maven构建

执行命令

clean
install -Pdev -Dmaven.test.skip=true

img

前端node.js构建

执行命令

yarn config set registry https://registry.npm.taobao.org/
yarn install
yarn generate

执行脚本替换UI端口和网关地址

#替换UI端口
sed -i 's/30002/18828/' default.conf
#替换网关地址
#sed -i 's/sc-gateway/1.2.3.4/' default.conf

在这里插入图片描述

执行shell

构建服务器执行脚本

#!/bin/sh -l
# 进入目录
cd sc-register

# 设置镜像名称
CONTAINER_NAME="sc-register-jenkins"

# 设置镜像tag
GIT_TAG=${DOCKER_IMAGE_TAG}

# 设置仓库地址
REPOSITORY_PATH=${DOCKER_REPOSITORY_PATH}
# 设置仓库用户名
USERNAME=${DOCKER_USERNAME}
# 设置仓库密码
PASSWORD=${DOCKER_PASSWORD}

# 设置项目名
PROJECT=${DOCKER_PROJECT}

# 设置镜像名
IMAGES_NAME=${REPOSITORY_PATH}/${PROJECT}/${CONTAINER_NAME}:${GIT_TAG}

# 构建Docker镜像
echo "start build Dockerfile"
docker build -t $IMAGES_NAME -f Dockerfile .
echo "end build Dockerfile"


# 推送Docker镜像
echo "start login"
docker login --username=${USERNAME} --password=${PASSWORD} ${REPOSITORY_PATH}
echo "end login"

echo "start push"
docker push $IMAGES_NAME
echo "end push"

#删除本地镜像
echo "start rmi"
docker rmi $IMAGES_NAME
echo "end rmi"

# 生成部署服务器执行脚本
echo "start touch pull"
rm -f ${CONTAINER_NAME}-pull.sh && touch ${CONTAINER_NAME}-pull.sh && echo -e \
"docker login --username=$USERNAME --password=$PASSWORD $REPOSITORY_PATH\n"\
"docker kill $CONTAINER_NAME\n"\
"docker rm $CONTAINER_NAME\n"\
"docker pull $IMAGES_NAME\n"\
"docker run --name $CONTAINER_NAME -e JAVA_OPTS=\"-DMYSQL_HOST=数据库ip -DMYSQL_PORT=3306  -DMYSQL_DB=base_nacos_test -DMYSQL_USER=root -DMYSQL_PWD=数据库密码  -Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom\" --restart=always --net=host -d $IMAGES_NAME" >> ${CONTAINER_NAME}-pull.sh
echo "end touch pull"

生成远端部署服务器执行脚本

# 生成部署服务器执行脚本
echo "start touch pull"
rm -f ${CONTAINER_NAME}-pull.sh && touch ${CONTAINER_NAME}-pull.sh && echo -e \
"docker login --username=$USERNAME --password=$PASSWORD $REPOSITORY_PATH\n"\
"docker kill $CONTAINER_NAME\n"\
"docker rm $CONTAINER_NAME\n"\
"docker pull $IMAGES_NAME\n"\
"docker run --name $CONTAINER_NAME -e JAVA_OPTS=\"-DMYSQL_HOST=数据库ip -DMYSQL_PORT=13306  -DMYSQL_DB=base_nacos_test -DMYSQL_USER=root -DMYSQL_PWD=数据库密码  -Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom\" --restart=always --net=host -d $IMAGES_NAME" >> ${CONTAINER_NAME}-pull.sh
echo "end touch pull"

请添加图片描述

部署

构建后执行shell

  • SSH登录部署服务器
  • 执行脚本上传到对应目录
  • 部署服务器在对应目录执行脚本

请添加图片描述

部署服务器目录

在 /home/sc/workspaces/cicd/allProd/

[uat]$ cd /home/sc/workspaces/cicd/allProd/
[uat]$ ll
-rwxrwxr-x 1 uat uat 594 Mar 14 10:08 sc-register-jenkins-pull.sh

脚本内容

# 登录docker镜像仓库
docker login --username=仓库名称 --password=仓库密码 仓库地址
# 杀死旧容器进程
docker kill 容器名
# 删除旧容器
docker rm 容器名
# 拉取新容器
docker pull 镜像名
# 运行新容器
docker run --name sc-register-jenkins -e JAVA_OPTS="-DMYSQL_HOST=数据库ip -DMYSQL_PORT=3306  -DMYSQL_DB=base_nacos_test -DMYSQL_USER=root -DMYSQL_PWD=数据库密码  -Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom" --restart=always -d 镜像名

Docker运行参数

名称默认值(例子)描述
restartalwaysdocker 重启时镜像也重启
环境变量
名称默认值(例子)描述
JAVA_OPTS-DMYSQL_HOST=数据库ip -DMYSQL_PORT=3306 -DMYSQL_DB=base_nacos_test -DMYSQL_USER=root -DMYSQL_PWD=数据库密码 -Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom配置数据量连接和JVM参数

执行命令

sudo chmod 775 /home/sc/workspaces/cicd/allProd/sc-register-jenkins-pull.sh && 
sudo nohup sh /home/sc/workspaces/cicd/allProd/sc-register-jenkins-pull.sh > /dev/null 2>&1 &
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐