美文网首页
jenkins 部署发布 gin-vue-admin

jenkins 部署发布 gin-vue-admin

作者: 码农工号9527 | 来源:发表于2023-08-26 20:37 被阅读0次

前置环境 部署相关可以参考这篇文章 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前端配置也得一起改掉才行,改完之后提交代码重新构建,再次访问:


操作前往初始化:




大功告成,登陆成功

相关文章

  • k8s-基于k8s构建Jenkins CI/CD平台

    发布流程设计 在Kubernetes平台部署Jenkins 构建slave镜像 Jenkins Master/Sl...

  • CD

    CD持续部署 发布流程 1、jenkins安装好 Publish Over SSH 插件 2、jenkins服务器...

  • jenkins打包,发布,部署

    1.定时任务在哪里设置 前言 跑自动化用例每次用手工点击jenkins出发自动化用例太麻烦了,我们希望能每天固定时...

  • Jenkins离线部署

    Jenkins部署 部署服务器 版本 安装jenkins 修改jenkins启动默认端口 启动jenkins 使用...

  • 2022-04-07

    jenkins安装部署记录 docker方式部署: docker pull jenkins/jenkins 报错f...

  • Jenkins自动发布-openssh7.1配置

    在jenkins部署脚本自动发布的时候,在系统设置中,会用到jenkins插件ssh-plugin所带的“s...

  • jenkins+gitlab实现代码提交的自动检查

    gitlab的搭建及jenkins的搭建部署参考作者发布的相关文章,这里直接进入主题。jenkins新建项目 1、...

  • docker部署gitlab+Jenkins

    docker部署gitlab、jenkins docker部署gitlab、jenkins 首先下载gitlab镜...

  • Hbuilder项目迁移到cli项目

    Hbuilder发布不能通过命令行的方式发布,无法实现jenkins自动部署. 记录下Hbuilder项目迁移到c...

  • 自动发布到远程服务器

    关键词:自动发布版本 参考: 远程部署项目(linux) jenkins把包传到远程服务器上 自动部署war包到远...

网友评论

      本文标题:jenkins 部署发布 gin-vue-admin

      本文链接:https://www.haomeiwen.com/subject/lsfimdtx.html