美文网首页Java-FrameworkDocker
Jenkins+Docker 持续集成、部署(CI/CD)项目实

Jenkins+Docker 持续集成、部署(CI/CD)项目实

作者: 追星人小豪 | 来源:发表于2020-05-11 16:19 被阅读0次

    简介

    前端项目 Vue,后端项目 egg.js

    传统做法,前端项目打包得到 dist 静态文件,然后人肉复制到后端项目的静态目录下,打包整个后端工程并放到服务器,安装依赖启动服务,整个过程不仅繁琐还容易出错,还易出现"明明我本地没问题的啊,怎么线上不行了"、“运维这你的问题”

    使用 Jenkins+Docker 进行部署

    1.前端项目构建,在 Docker 容器中打包,对 dist 静态文件归档

    2.后端项目构建,拿到上次归档静态文件,打包、安装依赖,并把整个后端工程打包成一个镜像

    3.进行镜像发布,一般使用 docker-compose 进行发布

    整个过程都在 Jenkins 流水线中完成,运维只需要在线上机器上 pull 指定的镜像并进行容器热更新即可,减少了人工犯错的可能,大大的提高了效率


    准备

    一台 Linux 机器,并安装 Git,Jenkins 和 Docker,网上教程很多,此处不再搬砖

    新建 Jenkins 多分支流水线任务

    可参考 Jenkins 配置多分支流水线项目(github)

    配置邮件提醒

    可参考 Jenkins Pipeline 配置自动发送 QQ 邮件

    编写 Jenkinsfile

    项目根目录下必须包含 Jenkinsfile 文件
    Jenkinsfile 基本语法,语法比较简单,可参考 Jenkins Pipeline 语法
    我的前端 Jenkinsfile:


    流程:
    • 检查参数
    • 安装依赖并打包成静态文件(Docker 中)
    • 归档静态文件
      withDockerContainer 声明该管道在 Docker 内执行,会启动容器并把当前工作目录挂载映射到 Docker 容器内,在 Docker 容器内操作不会污染到宿主机,如为了加速可以在容器内安装 cnpm 而不影响到宿主机。该管道执行后,容器会自动停止

      使用 archiveArtifacts artifacts 对静态文件归档
      归档的静态文件在:
      ${JENKINS_URL}job/${project_name}/job/${GIT_BRANCH}/${BUILD_NUMBER}/artifact/${tar_file_name}

    后端 Jenkinsfile:


    流程:
    • 检查参数
    • 安装依赖,因为用了 ts,全部转为 js
    • 拿到前端归档文件移动到指定目录
    • 构建镜像(使用 Dockerfile)
    • 发布镜像
    • 发送邮件通知

    使用 copyArtifacts filter 获得上一次成功归档的静态文件,注意需要先安装 Copy Artifact 插件



    构建项目

    点击对应分支并点击构建即开始构建项目,构建完成后,会发送邮件通知



    可以设置 web-hook 进行自动化构建,即 push 或者 merge 代码后,会对指定分支进行自动构建
    gitlab 已经实现,后续会放上教程
    github 目前还没是实现(努力 ing......)

    相关文章

      网友评论

        本文标题:Jenkins+Docker 持续集成、部署(CI/CD)项目实

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