jenkins 部署发布 gin-vue-admin

前置环境 部署相关可以参考这篇文章 https://www2.jianshu.com/p/7be08071f2ca

1.harbor创建项目相关

新建项目



新增项目管理员




公开项目

git 仓库服务器(192.168.137.10)新增 diy_gin_vue_admin 仓库

[root@localhost ~]# cd /data/git_repo/
[root@localhost git_repo]# ll
总用量 0
drwxr-xr-x. 7 git git 119 8月  27 00:12 php_test.git
[root@localhost git_repo]# git init --bare diy_gin_vue_admin.git
提示:使用 'master' 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中
提示:配置使用初始分支名,并消除这条警告,请执行:
提示:
提示: git config --global init.defaultBranch <名称>
提示:
提示:除了 'master' 之外,通常选定的名字有 'main'、'trunk' 和 'development'。
提示:可以通过以下命令重命名刚创建的分支:
提示:
提示: git branch -m <name>
已初始化空的 Git 仓库于 /data/git_repo/diy_gin_vue_admin.git/
[root@localhost git_repo]# chown -R git:git diy_gin_vue_admin.git/

然后把拉取到的 gin_vue_admin 代码提交到 diy_gin_vue_admin 仓库
./web是前端项目,目录下框架包含Dockerfile,可以直接使用
.server/是后端项目,目录下也自带包含Dockerfile,直接使用
具体项目结构可以查看 https://www.gin-vue-admin.com/guide/introduce/project.html ,官方介绍

2.jenkins新建diy_gin_vue前端项目




Execute shell 脚本内容

# Jenkins机器:编译完成后,build生成一个新版本的镜像,push到远程docker仓库

# Variables
DOCKERFILE_HOME='/var/lib/jenkins/workspace/diy_gin_vue/web'
HARBOR_IP='192.168.137.11'
REPOSITORIES='diy_gin_vue_admin/vue-docker'
HARBOR_USER='test'
HARBOR_USER_PASSWD='Harbor123456'
HARBOR_USER_EMAIL='test@qq.com'

# Delete image early version.
sudo docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP}:80 
IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'`
if [ -n "${IMAGE_ID}" ];then
    sudo docker rmi ${IMAGE_ID}
fi

# Build image.
cd ${DOCKERFILE_HOME}
TAG=`date +%Y%m%d-%H%M%S`
sudo docker build -t ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} . &>/dev/null

# Push to the harbor registry.
sudo docker push ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} &>/dev/null

测试构建


harbor镜像仓库查看

新增发布docker容器操作


Command内容

# 拉取镜像,发布
HARBOR_IP='192.168.137.11'
REPOSITORIES='jenkins/maven-docker'
HARBOR_USER='test'
HARBOR_USER_PASSWD='Harbor123456'

# 登录harbor
docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP}:80

# Stop container, and delete the container.
CONTAINER_ID=`docker ps | grep "maven-docker" | awk '{print $1}'`
if [ -n "$CONTAINER_ID" ]; then
    docker stop $CONTAINER_ID
    docker rm $CONTAINER_ID
else #如果容器启动时失败了,就需要docker ps -a才能找到那个容器
    CONTAINER_ID=`docker ps -a | grep "maven-docker" | awk '{print $1}'`
    if [ -n "$CONTAINER_ID" ]; then  # 如果是第一次在这台机器上拉取运行容器,那么docker ps -a也是找不到这个容器的
        docker rm $CONTAINER_ID
    fi
fi

# Delet eeasy-springmvc-maven image early version.
IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'`
if [ -n "${IMAGE_ID}" ];then
    docker rmi ${IMAGE_ID}
fi

# Pull image.
# TAG=`curl -s http://${HARBOR_IP}/api/repositories/${REPOSITORIES}/tags | jq '.[-1]' | sed 's/\"//g'` 
# TAG=`curl -s http://192.168.137.11/api/repositories/jenkins/maven-docker/tags | jq '.[-1]| {name:.name}' | awk -F '"' '/name/{print $4}'`
TAG=`curl -s http://192.168.137.11/api/v2.0/projects/jenkins/repositories/maven-docker/artifacts |awk -F'name":"' '{print $2}'|cut -d '"' -f1`
docker pull ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} &>/dev/null

# Run.
docker run -d --name maven-docker -p 8080:8080 ${HARBOR_IP}:80/${REPOSITORIES}:${TAG}

重新构建



应用服务器(192.168.137.13)上查看容器

[root@localhost project]# docker ps -a
CONTAINER ID   IMAGE                                                            COMMAND                   CREATED         STATUS                      PORTS                                               NAMES
0796a7cace61   192.168.137.11:80/diy_gin_vue_admin/vue-docker:20230827-191415   "/docker-entrypoint.…"   8 seconds ago   Up 7 seconds                80/tcp, 0.0.0.0:8089->8080/tcp, :::8089->8080/tcp   vue-docker
b235bd6b3fb3   192.168.137.11:80/jenkins/maven-docker:20230826-023949           "catalina.sh run"         41 hours ago    Exited (143) 40 hours ago                                                       maven-docker

页面访问http://192.168.137.13:8089/查看

3. 新建jenkins新建diy_gin_vue后端项目



Build Steps -> Execute shell
写入shell命令,用于jenkins服务器上执行:

# Jenkins机器:编译完成后,build生成一个新版本的镜像,push到远程docker仓库

# Variables
DOCKERFILE_HOME='/var/lib/jenkins/workspace/diy_gin_vue/server'
HARBOR_IP='192.168.137.11'
REPOSITORIES='diy_gin_vue_admin/gin-server-docker'
HARBOR_USER='test'
HARBOR_USER_PASSWD='Harbor123456'
HARBOR_USER_EMAIL='test@qq.com'

# Delete image early version.
sudo docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP}:80 
IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'`
if [ -n "${IMAGE_ID}" ];then
    sudo docker rmi ${IMAGE_ID}
fi

# Build image.
cd ${DOCKERFILE_HOME}
TAG=`date +%Y%m%d-%H%M%S`
sudo docker build -t ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} . &>/dev/null

# Push to the harbor registry.
sudo docker push ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} &>/dev/null

新增构建步骤 -> Execute shell script on remote host using ssh
写入Command命令,用于docker应用服务器上执行:

# 拉取镜像,发布
HARBOR_IP='192.168.137.11'
REPOSITORIES='diy_gin_vue_admin/vue-docker'
HARBOR_USER='test'
HARBOR_USER_PASSWD='Harbor123456'

# 登录harbor
# 拉取镜像,发布
HARBOR_IP='192.168.137.11'
REPOSITORIES='diy_gin_vue_admin/gin-server-docker'
HARBOR_USER='test'
HARBOR_USER_PASSWD='Harbor123456'

# 登录harbor
docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP}:80

# Stop container, and delete the container.
CONTAINER_ID=`docker ps | grep "gin-server-docker" | awk '{print $1}'`
if [ -n "$CONTAINER_ID" ]; then
    docker stop $CONTAINER_ID
    docker rm $CONTAINER_ID
else #如果容器启动时失败了,就需要docker ps -a才能找到那个容器
    CONTAINER_ID=`docker ps -a | grep "gin-server-docker" | awk '{print $1}'`
    if [ -n "$CONTAINER_ID" ]; then  # 如果是第一次在这台机器上拉取运行容器,那么docker ps -a也是找不到这个容器的
        docker rm $CONTAINER_ID
    fi
fi

# Delet eeasy-springmvc-maven image early version.
IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'`
if [ -n "${IMAGE_ID}" ];then
    docker rmi ${IMAGE_ID}
fi

# Pull image.
# TAG=`curl -s http://${HARBOR_IP}/api/repositories/${REPOSITORIES}/tags | jq '.[-1]' | sed 's/\"//g'` 
# TAG=`curl -s http://192.168.137.11/api/repositories/jenkins/maven-docker/tags | jq '.[-1]| {name:.name}' | awk -F '"' '/name/{print $4}'`
TAG=`curl -s http://192.168.137.11/api/v2.0/projects/diy_gin_vue_admin/repositories/gin-server-docker/artifacts |awk -F'name":"' '{print $2}'|cut -d '"' -f1`
docker pull ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} &>/dev/null

# Run.
docker run -d --name gin-server-docker -p 8888:8888 ${HARBOR_IP}:80/${REPOSITORIES}:${TAG}

并存并执行构建


harbor查看多了新的镜像了

docker应用服务器上查看

[root@localhost project]# docker ps -a
CONTAINER ID   IMAGE                                                                   COMMAND                   CREATED          STATUS                      PORTS                                               NAMES
17e47a9bde95   192.168.137.11:80/diy_gin_vue_admin/gin-server-docker:20230827-193840   "/bin/sh -c './serve…"   2 minutes ago    Up 2 minutes                0.0.0.0:8888->8888/tcp, :::8888->8888/tcp           gin-server-docker
0796a7cace61   192.168.137.11:80/diy_gin_vue_admin/vue-docker:20230827-191415          "/docker-entrypoint.…"   29 minutes ago   Up 29 minutes               80/tcp, 0.0.0.0:8089->8080/tcp, :::8089->8080/tcp   vue-docker
b235bd6b3fb3   192.168.137.11:80/jenkins/maven-docker:20230826-023949                  "catalina.sh run"         41 hours ago     Exited (143) 41 hours ago                                                       maven-docker

再次查看gin_vue_admin万张登录页初始化数据



访问存在验证码图片超时问题,需要修改vue项目以下选项





因为vue端口和服务端ip地址改了,所以相关vue前端配置也得一起改掉才行,改完之后提交代码重新构建,再次访问:


操作前往初始化:




大功告成,登陆成功

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容