Linux系统使用docker安装jenkins:实现springboot项目自动化部署、实现maven项目自动化部署、实现vue项目自动化部署、实现微信小程序项目自动化部署

Linux系统使用docker安装jenkins:实现springboot项目自动化部署、实现maven项目自动化部署、实现vue项目自动化部署、实现微信小程序项目自动化部署

2023-03-23

最近把项目的自动化部署,部署到linux服务器上了。服务器网络更稳定,24小时在线。不依赖个人开发者电脑了。

本文详细记录了linux系统下,使用docker安装和配置jenkins。

并且实现了自动化部署springboot项目、maven项目、vue项目、微信小程序项目

docker安装jenkins比较方便,几个命令就搞定了,也方便后期迁移。


一、 安装docker

  1. 安装

    yum -y install docker-io 	# 安装docker依赖包,仅此一条命令就可以搞定;
    
  2. 启动Docker

    service docker start	# 启动docker
    
  3. 加入开机启动

    chkconfig docker on		# 加入开机启动
    
  4. 查看版本

    docker version # 查看docker版本
    
    Client:
     Version:         1.13.1
     API version:     1.26
     Package version: docker-1.13.1-208.git7d71120.el7_9.x86_64
     Go version:      go1.10.3
     Git commit:      7d71120/1.13.1
     Built:           Mon Jun  7 15:36:09 2021
     OS/Arch:         linux/amd64
    
    Server:
     Version:         1.13.1
     API version:     1.26 (minimum version 1.12)
     Package version: docker-1.13.1-208.git7d71120.el7_9.x86_64
     Go version:      go1.10.3
     Git commit:      7d71120/1.13.1
     Built:           Mon Jun  7 15:36:09 2021
     OS/Arch:         linux/amd64
     Experimental:    false
    
  5. docker安装完成

二、使用docker拉取jenkins镜像

  1. 登录镜像库
    https://hub.docker.com/explore/

  2. 搜索jenkins
    在这里插入图片描述

  3. 拉取镜像

     docker pull jenkins/jenkins # 拉取jenkins镜像
    

    在这里插入图片描述

  4. 查看本地的镜像

    docker images 
    

    在这里插入图片描述

    发现本机中,已经有jenkins镜像了。

三、使用docker启动jenkins容器

  1. 编写启动容器脚本

    # 启动jenkins容器的脚本,可以保存到 .sh文件中
    docker run -d -uroot -p 9096:8080 -p 50006:50000 --name jenkins --privileged=true  -v /docker_chen/jenkins9096/jenkins_home:/var/jenkins_home jenkins/jenkins
    
  2. 查看容器运行状态

    docker ps -a
    

    up 28 hours ,说明正常启动着,已经运行了28个小时了
    在这里插入图片描述

四、访问jenkins页面,进行配置

  1. 由于启动时,映射了9096端口,使用IP:9096访问即可
    比如: http://localhost:9096
    进入后,页面如下,插件安装,跳过所有的插件,不安装。等后边搜索插件安装。
    在这里插入图片描述

  2. 到数据卷安装目录,找到初始密码
    数据卷目录,或者去登录容器找到对应密码

    # docker 数据卷目录,或者去登录容器找到对应密码
    cd /docker_chen/jenkins9096/jenkins_home/secrets
    
    # 或者进入容器找对应密码
    docker exec -it jenkins bash
    
    [root@csbl secrets]# cat initialAdminPassword 
    4d14082024d1433dbf8d418d3ac545cb
    
  3. 设置新的账号密码,任意设置
    root 8d3ac545cb

五、进入jenkins容器,设置上海时区

  1. 进入jenkins容器

    # 进入容器
    docker exec -it jenkins bash
    
  2. 设置时区为上海

    # 设置时区为上海
    echo 'Asia/Shanghai' >/etc/timezone
    
  3. 重启容器

    # 重启容器
    docker restart jenkins
    #在System Information页面中,可以看到时区已经设置成功 user.timezone	Asia/Shanghai
    

六、安装jinkins插件

  1. 配置jenkins插件镜像地址
    设置为清华大学的镜像: https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
    在这里插入图片描述

  2. 搜索插件,之后点击下载安装
    建议安装以下插件,比较常用:
    中文语音:Chinese (Simplified)Version
    凭据保存:Credentials Binding
    maven打包:Maven Integration
    svn拉取代码:Subversion
    SSH远程服务器:Publish Over SSH
    node环境Vue打包:NodeJS Plugin
    在这里插入图片描述

七、配置jenkins中的jdk和maven

  1. 将maven、jdk1.8和node.js放置到共享数据卷中,之后在jenkins页面中配置
    此处跳过了在宿主机linux系统安装maven和jdk的过程,还有安装node.js的过程

  2. 点击全局工具配置,进行jdk/maven/node.js等工具的配置
    在这里插入图片描述

  3. 配置参考如下:
    在这里插入图片描述

    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. maven打包注意有5分钟的静默期
    意思是,小于5分钟时间间隔的打包,将会被忽略,不会去打包哈。

    在这里插入图片描述

八、配置jenkins的Publish over SSH

由于jinkins是在容器中运行,而部署的项目在宿主机中,这个情况下,容器就需要SSH来与宿主机通信,上传文件到宿主机和执行宿主机的脚本等等。

  1. 点击 系统配置,进入对SSH的设置

    在这里插入图片描述

  2. 设置SSH的地址和账号密码
    在这里插入图片描述

九、创建maven自动打包任务

  1. 创建任务
    在这里插入图片描述

  2. 设置打包记录保持7天,最大10个,防止把服务器磁盘撑满
    在这里插入图片描述

  3. 配置SVN源码地址,同时设置svn的账号凭据
    在这里插入图片描述

    在这里插入图片描述

  4. svn的其他配置参考
    在这里插入图片描述

  5. 设置构建触发器
    满足特定条件去触发打包操作
    这里,直接使用简单的轮询方案,每10分钟去查询svn版本是否有变化,如果有新版本代码,才会触发打包动作。
    在这里插入图片描述

  6. 设置Build打包的maven指令

    clean install -Dmaven.test.skip=true 
    

    在这里插入图片描述

  7. 配置SSH Publishers

    打包成功后,使用SSH连接到宿主机,之后执行宿主机的项目部署脚本
    在这里插入图片描述

    脚本参考:

    核心业务:

    1. 备份原项目的包

    2. 将target中maven打好的包,复制到部署的指定目录;

    3. 之后,重启项目

    #[root@csbl jenkins9096]# cat jenkins_bs_java_server.sh 
    #!/bin/bash
    ## 供jenkin打包,调用自动部署项目
    # @version 2023-03-16 chen  
    # jenkins打包后的目录
    target="/docker_chen/jenkins9096/jenkins_home/workspace/JAVA_SERVER/taxation-sns-server/bootstrap/target"
    
    # 项目部署的目录
    bs_target="/root/taxation-sns-server-28585"
    
    # 测试目录
    #bs_target="/root/taxation-sns-server-28585/testLib"
    # 文件夹是否存在
    echo "$target/lib"
    if [ -d "$target/lib" ]; 
    then
            timeVar=`date +%Y-%m-%d-%H.%M.%S` 
            echo -e "\033[32m 【$timeVar$target/lib  Exist,Begin Copy...   \033[0m" #绿色
    
    
            # 备份原文件,将原文件夹修改成时间戳后缀
            mv $bs_target/lib $bs_target/lib.bak.$timeVar
    
            # 复制目标文件
            cp -r $target/lib $bs_target
            cp $target/taxation-sns-server-*.jar $bs_target/lib
     
            timeVar=`date +%Y-%m-%d-%H.%M.%S`
            echo -e "\033[32m 【$timeVar$target/lib Copy... SUCCESS \033[0m" #绿色
    
            # 停止服务
            cd $bs_target/bin
            ./stop.sh
            # 启动服务
            ./start.sh
    
            timeVar=`date +%Y-%m-%d-%H.%M.%S` 
            echo -e "\033[32m 【$timeVar$target/lib ReStart SUCCESS \033[0m" #绿色
    else
            echo -e "\033[31m $target/lib  File Not Exist! Please check  \033[0m"  #红色
    fi
    

十、创建Vue自动打包任务

  1. 创建任务,选择自由风格
    在这里插入图片描述

  2. 进行配置
    丢弃旧的构建、SVN配置、构建触发器等,跟创建maven自动打包的一样,注意更换svn仓库地址。

  3. 构建环境设置,选择 Provide Node 环境
    在这里插入图片描述

  4. 构建后操作配置
    构建打包完成后,SSH连接宿主机服务器,调用服务器脚本
    在这里插入图片描述

  5. 服务器脚本,参考:
    脚本参考:

    核心业务:

    1. 备份原项目的包
    2. 将npm打好的dist包,复制到部署的指定目录;
    3. 部署完成,由于前端是Nginx部署,这里只需要前两步即可。
    #[root@csbl jenkins9096]# cat jenkins_bs_vue_dist.sh 
    #!/bin/bash
    ## 供jenkin打包,调用自动部署项目
    # @version 2023-03-16 chen  
    # jenkins打包后的目录
    target="/docker_chen/jenkins9096/jenkins_home/workspace/VUE_DIST"
    
    # 项目部署的目录
    bs_target="/root/"
    
    # 测试目录
    #bs_target="/root/taxation-sns-server-28585/testLib"
    # 文件夹是否存在
    echo "$target/dist"
    if [ -d "$target/dist" ]; 
    then
            timeVar=`date +%Y-%m-%d-%H.%M.%S` 
            echo -e "\033[32m 【$timeVar$target/dist  Exist,Begin Copy...   \033[0m" #绿色
    
    
            # 备份原文件,将原文件夹修改成时间戳后缀
            mv $bs_target/dist $bs_target/dist.bak.$timeVar
    
            # 复制目标文件
            cp -r $target/dist $bs_target
     
            timeVar=`date +%Y-%m-%d-%H.%M.%S`
            echo -e "\033[32m 【$timeVar$target/dist Copy... SUCCESS \033[0m" #绿色
    
    else
            echo -e "\033[31m $target/dist  File Not Exist! Please check  \033[0m"  #红色
    fi
    
    

十一、创建微信小程序自动更新任务

主要实现思路:

  1. jenkins拉取最新版微信小程序代码
  2. 使用miniprogram-ci 实现更新到微信小程序平台
  3. jenkins触发拉取代码后,去触发调用js脚本
  1. 创建自动化分格任务

  2. 丢弃旧的构建、SVN配置、构建触发器等,跟创建vue自动打包的一样,注意更换svn仓库地址

  3. 构建环境

    由于小程序不需要单独打包,这里可以跳过。
    在这里插入图片描述

  4. 构建后操作,调用服务器脚本
    在这里插入图片描述

  5. 服务器bash脚本jenkins_bs_mini.sh参考:

    核心业务:

    1. 由jenkins调用触发此脚本
    2. 此脚本核心业务是:去调用upload.js脚本
    #[root@csbl jenkins9096]# cat jenkins_bs_mini.sh 
    #!/bin/bash
    ## 供jenkin打包,调用自动部署项目
    # @version 2023-03-16 chen  
    # jenkins打包后的目录
    target="/docker_chen/jenkins9096/jenkins_home/workspace/MINI"
    
    # 项目部署的目录
    bs_target="/root"
    
    # 获取前两个参数
    iVersion=$1
    iDesc=$2
    
    # 测试目录
    #bs_target="/root/taxation-sns-server-28585/testLib"
    # 文件夹是否存在
    echo "$target/node_modules"
    if [ -d "$target/node_modules" ]; 
    then
            timeVar=`date +%Y-%m-%d-%H.%M.%S` 
            echo -e "\033[32m 【$timeVar】MINI  $target  Exist,Begin CI...   \033[0m" #绿色
    
            node -v
            cd /docker_chen/jenkins9096/miniTool/src
            node upload.js $iVersion $iDesc
    
            timeVar=`date +%Y-%m-%d-%H.%M.%S`
            echo -e "\033[32m 【$timeVar$target MINI  SUCCESS \033[0m" #绿色
    
    else
            echo -e "\033[31m $target MINI  File Not Exist! Please check  \033[0m"  #红色
    fi
    
    
    
  6. 准备微信小程序自动化CI的资料
    登录小程序管理后台,获取到小程序的APPID、部署私钥 private.xxx.key等

  7. 编写upload.js脚本
    在宿主机中,创建目录miniTool

    mkdir miniTool
    

    进入miniTool文件夹,安装miniprogram-ci依赖

    cd miniTool
    npm install miniprogram-ci --save
    

    安装完成后,如图:
    注意: private.xxx.key,需要去微信小程序管理后台下载获取。

    在这里插入图片描述

    新建src目录,编写upload.js文件

    mkdir src
    cd src
    vi upload.js
    

    upload.js文件如下:

    [root@csbl src]# cat upload.js 
    // 自动化部署微信小程序的脚本
    // /docker_chen/jenkins9096/jenkins_home/workspace/MINI
    // npm install miniprogram-ci --save
    
    const ci = require('miniprogram-ci')
    
    
    // 数组的第一第二位,默认接收的是node.exe路径和upload.js路径(所要执行的文件),
    // 从第三位开始,就是对应运行命令node所携带的各个参数(按顺序)。
    
    // 调用脚本: node upload.js 6.6.0.svnV "描述"
    // 建议版本设置为 6.6.0.svnV : 6.6是大版本,0是修复小版本,svnV是svn版本管理的版本
    
    const version = process.argv[2];
    // 自定义备注
    const desc = process.argv[3];
    
    console.log(version, desc);
    
    const project = new ci.Project({
        appid: 'wx3ecaa6216dc9b271',
        type: 'miniProgram',
        // projectPath: "D:\\work\\space2\\taxation-sns-mini-source/",
        projectPath: "/docker_chen/jenkins9096/jenkins_home/workspace/MINI",
        privateKeyPath: '../private.wx3ecaa6216dc9b271.key',
        ignores: ['node_modules/**/*'],
    })
    // 在有需要的时候构建npm
    const warning = ci.packNpm(project, {
        ignores: ['pack_npm_ignore_list'],
        reporter: (infos) => { console.log(infos) }
    })
    console.warn(warning)
    
    
    const uploadResult = ci.upload({
        project,
        version: version,
        desc: desc,
        setting: {
            es6: true, // es6 转 es5
            minifyJS: true, //压缩 JS 代码
            minifyWXML: true, //压缩 WXML 代码
            minifyWXSS: true, //压缩 WXSS 代码
            minify:true //压缩所有代码,对应小程序开发者工具的 "压缩代码"
        },
        onProgressUpdate: console.log,
    })
    
    console.log(uploadResult)
    
  8. upload.js文件的执行

    # 核心程序是:node执行js文件
    node upload.js
    
  9. 触发微信小程序自动部署成功
    登录微信管理后台,可以查看到效果:
    在这里插入图片描述

后记:

程序员,时刻要开发节省自己时间的软件

提高自己水平的同时,节省自己的时间!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Goldchenn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值