DevOps—基于 Jenkins 构建 Vue 前端工程自动化流程

这篇具有很好参考价值的文章主要介绍了DevOps—基于 Jenkins 构建 Vue 前端工程自动化流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. CI/CD流程

一个完整的生产环境的 CI/CD 流程,往往会包括以下这些阶段:
编码 → 提交 → 构建 → 测试 → 交付 → 部署
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
这里只是演示,就省略了测试相关阶段,只包含提交、构建、发布、部署,一个简单的流程如下:
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生

2. 基于 jenkin 构建 vue 前端自动化流程

2.1 插件安装

vue 应用构建依赖于 Nodejs,需要在 Jenkins 上安装 Nodejs 插件,并且进行一些配置。
点击系统管理,进入插件管理页面
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
点击可选插件,搜索 nodejs 进行安装
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
安装完成之后,进入全局工具配置页面,对 nodejs 插件进行配置,选择你需要的版本并配置别名:
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
发布到远程服务,需要用到 publish over ssh 插件,也需要先安装并且进行配置。和上面一样在插件管理搜索安装,之后需要系统配置中进行配置。
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
这里需要新增 SSH Server,就像平常通过 ssh 连接远程服务器一样,需要填写名称、远程机器 ip,远程机器登录账号,其中的远程机器目录可以填写,这个路径必须在远程机器中已存在,不存在不会自动创建,填写之后后面传输文件时,文件的路径就相对于这个路径,否则就相对于账号的家目录。
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
之后,通过高级选项配置登录密码或者密钥:
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
这里填入密码,或者填写 ssh 连接生成的密钥,就和平常通过 ssh 免密登录远程机器一样。填写完成之后,在最下面可以进行连接测试,连接测试成功这个配置就是可用的了。
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生

2.2. 流程构建

Jenkins 自动化流程构建可以用多种形式,这里演示最基本的两种,分别是自由风格项目和流水线模式。

2.2.1 自由风格项目

在工作台页面点击新建任务
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
新建一个自由风格项目
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
点击确定之后,进入任务配置。

(1)scm 配置

在源码管理这里,选择 Git,填写 Git 仓库地址。如果出现以下提示,是 Git 插件存在问题,查看一下全局配置,在机器上安装 Git,之后对 Git 插件进行一下配置即可。
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
这里是我在前面文章中搭建起来的 GitLab 上创建的一个仓库
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
将 Git 仓库地址填入,就像平常拉取 GitLab 中的代码一样需要登录凭证,这里也需要创建登录信息
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
创建一个 Git 登录凭证,并选择使用,Git 仓库不再有错误提示即已连接成功。下方的分支更改为 publish 分支,这是为了通过分支的合并触发自动构建。
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
(2)触发机制
在构建触发器这里,选择轮询,H/15 * * * * 表示每15分钟轮询一次,轮询会监测 Git 仓库相应分支的 Head,如果对比上次有变化,就会触发构建。可以点击问号,查看相应选项的帮助文档。
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
(3)构建
由于这里是构建 vue 应用,之前也提前安装了 nodejs 插件,在构建环境中,选中 node 和 npm,并且选择配置好的 nodejs 版本。
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
之后,在构建中选择构建步骤,选择执行 shell
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
在输入框中输入构建集成发布的脚本

node -v
npm -v
cd ./hello-world
npm install
npm run build
zip -r $WORKSPACE/publish.zip ./dist

jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
脚本比较简单,就是前端应用发布的基本脚本。
要注意的一点是,如果使用了私服 npm 包,使用 npm install --registry="指定包源"进行依赖包还原
$WORKSPACE 是 Jenkins 中的环境变量,指向当前构建的根目录,即当前git仓库的更目录。可用的环境变量可以通过构建配置页面中的链接进行查看。

(4)远程发布
如过需要进行远程发布,即把构建发布好的应用传输到其他服务器上,就要使用 publish over ssh 插件了,前面我已经配置好了远程服务器,这里在上一步的脚本构建之后再增加一个构建步骤
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
填写好相应的文件路径配置,注意各个路径都是相对路径,及各自所相关的路径是哪一个,这里若弄不清楚,可以各种情况尝试一下看下结果,自然就清晰了。
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
之后,编写文件传输后在远程服务器上执行的脚本,文件传输到远程服务器之后,往往还有很多操作,如解压、备份等,这里需要一定的 shell 基础。

#! /bin/sh
datename=$(date +%Y%m%d%H%M%S)
echo "开始备份"
if [ -d "/home/website/publish/" ];then
zip -r "/home/website/backup/publish-$datename.zip" /home/website/publish
rm -rf /home/website/publish
fi
echo "备份结束"
echo "开始部署"
if [ -d "/home/temp/publish/" ];then
rm -rf /home/temp/dist
fi
cd /home/temp
unzip ./publish.zip
mv /home/temp/dist /home/website/publish
rm -rf /home/temp/dist
echo "部署结束"

jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
可以在上方的高级设置中设置一下跟踪远程脚本,这样就可以看到我们的脚本在远程服务的执行情况,方便发现部署过程中的错误
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
也可以设置一下远程连接超时时间,避免脚本执行较久时 ssh 连接断开,导致部署失败。默认时120000毫秒,设置为0即不限时间。
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
配置完成之后,返回项目,点击开始构建
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
之后点击下方的构建记录,在控制台输出可以看到构建过程
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
登录远程服务器,可以看到发布之后的文件
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
之后通过 nginx 反向代理到 publish 文件夹,前端就可以正常访问了,后续的开发代码提交之后,只要合并到 publish 分支,Jenkins 会根据设置的轮询间隔监测分支的变动,自动进行构建发布备份等操作。当然你也可以设置监测 master 分支,根据 post-commit 触发构建,这样每次有代码提交,都会触发构建。

2.2.2 Pipeline

Pipeline 是 Jenkins 的一套插件,有特定的语法,比起自由风格项目,更能将软件发布的各个阶段规范化,更加清晰地定义构建发布的各个阶段。更加详细的介绍可参考官方文档:管道 (jenkins.io)

Pipeline 的定义写在一个 Jenkinsfile 文件,这个文件可以直接在 Jenkins 项目配置页面中编写,也可以包含在项目代码库中,官方更加推荐写在项目代码库,加入到版本控制中。

下面将刚才的自由风格项目改造为 pipeline 流水线项目:

新建一个项目,这次选择 pipeline 类型
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
一样配置构建触发器
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
之后在下方的流水线配置中进行构造 jenkinsfile 编写

pipeline {
    agent any
    
    environment {
        def BUILDVERSION = sh(script: "echo `date +%Y%m%d%H%M%S`", returnStdout: true).trim()
    }

    stages {
        stage('环境验证') {
            steps {
                nodejs('nodejs-14.16.1') {
                    sh 'node -v'
                    sh 'npm -v'
                }
            }
        }
        stage('拉取源码') {
            steps {
                echo '开始拉取代码'
                git branch: 'publish', credentialsId: '260b288d-5229-4ee9-b2eb-73f1cde84c77', url: 'http://xxx.xxx.xxx.xxxx:8929/gitlab-instance-08a71c21/vue-test.git'
                echo '拉取代码完成'
            }
        }
        stage('还原项目') {
            steps {
                dir('./hello-world') {
                    echo '开始还原项目'
                    nodejs('nodejs-14.16.1') {
                        sh 'npm install'
                    }
                    echo '还原项目结束'
                }
            }
        }
        stage('生成项目') {
            steps{
                dir('./hello-world') {
                    echo '删除上次生成结果文件夹'
                    sh 'rm -rf ./dist'
                    echo '开始生成项目'
                    nodejs('nodejs-14.16.1') {
                        sh 'npm run build'
                    }
                    echo '生成项目结束'
                }
            }
        }
        stage('部署项目') {
            steps{
                dir('./hello-world') {
                    echo '开始部署'
                    sh 'pwd'
                    sh "zip -r $WORKSPACE/publish-${BUILDVERSION}.zip ./dist"
                    sshPublisher(
                        publishers: [
                          sshPublisherDesc(
                            configName: 'test', 
                            transfers: [
                              sshTransfer(
                                cleanRemote: false, 
                                excludes: '', 
                                execCommand: """
                                    #! /bin/sh
                                    echo "开始备份"
                                    if [ -d "/home/website/publish/" ];then
                                    zip -r "/home/website/backup/publish-${BUILDVERSION}.zip" /home/website/publish
                                    rm -rf /home/website/publish
                                    fi
                                    echo "备份结束"
                                    echo "开始部署"
                                    if [ -d "/home/temp/publish/" ];then
                                    rm -rf /home/temp/dist
                                    fi
                                    cd /home/temp
                                    unzip ./publish.zip
                                    mv /home/temp/dist /home/website/publish
                                    rm -rf /home/temp/dist
                                    echo "部署结束"
                                """, 
                                execTimeout: 0, 
                                verbose: true,
                                flatten: false, 
                                makeEmptyDirs: false, 
                                noDefaultExcludes: false, 
                                patternSeparator: '[, ]+', 
                                remoteDirectory: "/temp",
                                remoteDirectorySDF: false,
                                removePrefix: "", 
                                sourceFiles: "publish.zip"
                              )
                            ],
                            usePromotionTimestamp: false, 
                            useWorkspaceInPromotion: false, 
                            verbose: true
                          )
                        ]
                      )
                    echo '部署结束'
                }
            }
        }
    }
}

jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
这里的 pipeline 表示一个工作空间,jenkins 根据这个关键字分配一个工作空间进行构建工作的执行。一个 stage 代表一个构建阶段,各个构建阶段相互是独立的,可以通过定义全局变量等进行一些全局配置,如这里的 BUILDVERSION 环境变量。

这里就不具体介绍 pipeline 语法了,详细的可以参考官方文档:使用 Jenkinsfile
也可以通过配置页面的流水线语法链接,调整到 Jenkins 的帮助文档,里面有一个代码片段生成器,可以帮助生成一些基本操作的代码,这里生成的代码一般不要更改,包括换行,直接拷到 jenkinsfile 中使用即可。
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
当然,这里的片段生成器不是万能的,很多插件的代码这里也生成不了,对于插件只要用到哪个了解哪个即可,jenkins 的插件很多,我们也没办法每个都了解。

配置完成之后,点击立即构建,可以看见每次构建的流水线管道,包括每一个阶段的执行情况
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
点击每一次的构建记录,通过控制台输出一样可以看到具体的构建过程输出
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生
在远程服务器上,通过备份记录,也可以看到直接部署成功了
jenkins vue前端自动构建,云原生系列,jenkins,前端,devops,云原生

这里通过一个前端工程简单地介绍了以下 Jenkins 自动化流水线构建是怎么实现的,也是工作中实际应用的一个简化版本。下一篇将介绍以下怎么基于 Jenkins 搭建 .net core 应用的自动化构建流程。

上一篇:DevOps— CI/CD 工具 Jenkins
下一篇:DevOps—基于Jenkins构建.Net Core应用自动化流程文章来源地址https://www.toymoban.com/news/detail-610587.html

到了这里,关于DevOps—基于 Jenkins 构建 Vue 前端工程自动化流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jenkins+GitLab+Docker搭建前端自动化构建镜像容器部署(无本地证书,映射证书)

    前言 🚀 需提前安装环境及知识点: 1、Docker搭建及基础操作 2、DockerFile文件描述 3、Jenkins搭建及基础点 🚀 目的: 将我们的前端项目打包成一个镜像容器并自动发布部署,可供随时pull访问 1、在当前项目的根目录创建Dockerfile文件并写入如下代码: 代码片段详细描述: 注意

    2024年02月15日
    浏览(37)
  • vue前端使用Jenkins自动构建项目,保姆级教程

    1. 开始前的准备工作 在阿里云控台界面搜索 容器镜像服务 添加个人版的容器镜像服务 然后在服务器上安装docker使用下面两个脚本文件 创建一个脚本 install_before_docker_env.sh 创建第二个脚本 install_docker-new.sh 在服务根目录下创建一个 install 目录将两个脚本文件放入 cd 到 instal

    2024年02月05日
    浏览(47)
  • Jenkins自动拉取SVN源代码构建打包vue前端项目

    目录 1.功能需求 2.安装插件 2.1 安装NodeJS插件 2.2  安装SVN插件 3.配置环境 3.1  NodeJS环境 4.新建任务配置部署信息 4.1  源代码管理 4.2  构建触发器 4.3  构建环境  4.4  构建步骤 5.构建项目  5.1 点击查看控制台日志 使用Jenkins从SVN上拉取Vue项目进行自动构建打包。如果需要发

    2023年04月22日
    浏览(32)
  • 『DevOps』如何使用 Webhook 在 Jenkins 项目中实现自动构建

    📣读完这篇文章里你能收获到 全文采用图文形式讲解 在Jenkins配置Webhook 实现代码推送时Jenkins自动构建 感谢点赞+收藏,避免下次找不到~ 在现代软件开发中,持续集成和自动化构建是至关重要的环节。本文将介绍如何利用Jenkins和Generic Webhook Trigger Plugin插件实现自动构建代码

    2024年02月08日
    浏览(31)
  • DevOps搭建(十九)-Jenkins+K8s自动化CI搭建详细步骤

    完整的pipeline-auto.yml脚本如下 完整的Jenkinsfile脚本如下 在Jenkins插件管理中搜索GitLab插件进行安装。 进入Jenkins项目配置里的 构建触发器 ,勾选如下选项: 从系统管理-系统配置-Gitlab将验证去掉,生产最好配置保证安全。 如果是GitLab和Jenkins在同一台服务器,需要开启允许请求

    2024年01月23日
    浏览(67)
  • Gitlab自动触发jenkins完成自动化构建 jenkins

     首先安装gitlab插件,我已经安装过了,首次请在 可选插件 中进行搜索。   进入项目配置--构建触发器: Build when a change is pushed to GitLab. GitLab webhook URL: 请复制此处的URL,后续有用。  然后点击高级   “Allowed branches”触发分支可以用默认的全部分支,也可以选择仅由指定名

    2024年02月16日
    浏览(41)
  • 【前端自动化部署】,Devops,CI/CD

    提到 Jenkins ,想到的第一个概念就是 CI/CD 在这之前应该再了解一个概念。 DevOps Development 和 Operations 的组合,是一种方法论,并不特指某种技术或者工具。 DevOps 是一种重视 Dev 开发人员和 Ops 运维人员之间沟通、协作的流程。通过自动化的软件交付,使软件的构建,测试,发

    2024年02月10日
    浏览(32)
  • 前端自动化部署,Devops,CI/CD

    提到 Jenkins,想到的第一个概念就是 CI/CD 在这之前应该再了解一个概念。 DevOps  Development  和  Operations  的组合,是一种方法论,并不特指某种技术或者工具。DevOps 是一种重视  Dev  开发人员和  Ops  运维人员之间沟通、协作的流程。通过自动化的软件交付,使软件的构建

    2024年02月10日
    浏览(44)
  • Jenkins自动化构建

    Jenkins 是一款开源 CICD 软件,用于自动化各种任务,包括构建、测试和部署软件 Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序 安装方法 因为 Jenkins 本身是没有在 dnf 的软件仓库包中的,所以我们需要连接 Jenkins 仓库: wget 是 Linux 中下载文件的

    2024年02月15日
    浏览(27)
  • 实战-基于Jenkins+K8s构建DevOps平台(九)

    第一部分:安装持久化存储nfs 1、在k8s-master和k8s-node1上安装nfs服务 [root@k8s-master ~]# yum install nfs-utils -y [root@k8s-master ~]# systemctl start nfs [root@k8s-master ~]# systemctl enable nfs [root@k8s-node1 ~]# yum install nfs-utils -y [root@k8s-node1 ~]# systemctl start nfs [root@k8s-node1 ~]# systemctl enable nfs [root@k8s-node2 ~

    2024年02月08日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包