热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vueeach_jenkins编译vue项目自动发布

有个vue项目,打算放到jenkins上编译,顺便加上webhook提交代码后自动编译发布到对应的远程服务器nginx下。jenkins触发代码提交后自

有个 vue 项目,打算放到 jenkins 上编译,顺便加上 webhook 提交代码后自动编译发布到对应的远程服务器 nginx 下。

jenkins 触发代码提交后自动构建请看这里: jenkins之webbook

一、配置 jenkins

系统管理 -> 全局工具配置 安装 nodejs 模块f0ec1ced349d4ff89bc6f9d706d06845.png

二、编写 jenkins 执行脚本

  • 第一步:首先需要初始化 nodejs 环境

    下面是初始化脚本,只需要执行一次即可

#!/usr/bin/env bash
nodeName=$1
NODE_HOME=${JENKINS_HOME}"/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/"${nodeName}
PATH=$PATH:${NODE_HOME}/bin
export NODE_HOME PATH
echo "环境变量===========>"
echo "node_home "${NODE_HOME}
echo "path "${PATH}
registry=$2
nodeModules=${3//","/" "}
echo "开始初始化nodejs资源,请稍后..."
npm install cnpm -g --registry=${registry}
if [[ -n "${nodeModules}" ]];then
echo "要初始安装的模块:"${nodeModules}
cnpm install -g --unsafe-perm ${nodeModules} --save-dev
else
echo "没有要初始安装的模块"
fi
echo "环境版本===========>"
echo "node版本:"
node -v
echo "npm版本:"
npm -v
echo "cnpm版本:"
cnpm -v
echo "nodejs资源初始化完成"

参数说明 :
  • 参数一($1):必须,使用的 nodejs 名称,对应第一步在 jenkins 中安装的 nodejs 模块名称,如果你安装了多个版本的,会根据这个名称去定义环境变量来使用你指定的版本。我写的是 nodejs-12.16.2

  • 参数二($2):必须,指定的镜像站,我写的是 https://registry.npm.taobao.org

  • 参数三($3):非必须,指定要初始化安装的模块,记得模块用英文逗号分隔,我写的是 postcss-import,autoprefixer,cssnano,postcss-loader,stylus-loader,css-loader,autoprefixer-loader,style-loader,node-sass,sass-loader,chalk,each-async,indent-string,npm-lifecycle

我的 jenkins 的初始化配置
9b1763637b31d09f1c35f8a00b7a8797.png
jenkins-初始化nodejs项目
  • 第二步:编写 jenkins 执行项目编译的脚本

    这个脚本会直接将 jenkins 工作空间所对应的项目代码进行编译,并且将编译好的文件发到对应的远程服务器 nginx 下,前提是你已经配置好了远程服务器的 nginx
前置条件:
  • 远程服务器 nginx,必须先配置过公钥,实现了 ssh 免密登录

#!/usr/bin/env bash
# node名称
nodeName=$1
# nginx代理的静态文件夹根目录
nginxSource=$2
# Jenkins项目名称
jenkinsProjectName=$3
# nginx 下项目名称
projectName=$4
# Jenkins编译项目相对路径
executableFolder=$5
# 运行服务器位置
serverDomain=$6
# 编译期额外安装的模块
nodeModules=${7//","/" "}
NODE_HOME=${JENKINS_HOME}"/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/"${nodeName}
PATH=${NODE_HOME}/bin:$PATH
export NODE_HOME PATH
echo "环境变量===========>"
echo "node_home "${NODE_HOME}
echo "path "${PATH}
echo "环境版本===========>"
echo "node版本:"
node -v
echo "npm版本:"
npm -v
echo "cnpm版本:"
cnpm -v
jenkins_home=${JENKINS_HOME}
# Jenkins的工作目录
jenkins_workspace=${jenkins_home}"/workspace"
#进入jenkins项目模块
cd ${jenkins_workspace}/${jenkinsProjectName}
#删除node包
rm -rf node_modules
#删除编译的可执行文件包
rm -rf ${executableFolder}
#删除上次编译重命名的编译包
rm -rf ${projectName}
#开始编译
if [[ -n "${nodeModules}" ]];then
echo "要安装的模块:"${nodeModules}
cnpm i ${nodeModules} --save
else
echo "没有要安装的模块"
fi
cnpm i
cnpm run build
mv ${executableFolder} ${projectName}
echo "projectName:${projectName}"
echo "serverDomain:${serverDomain}"
echo "nginxSource:${nginxSource}"
scp -o StrictHostKeyChecking=no -r ${projectName} ${serverDomain}:${nginxSource}

参数说明 :
  • 参数一($1):必须,使用的 nodejs 名称,对应第一步在 jenkins 中安装的 nodejs 模块名称,如果你安装了多个版本的,会根据这个名称去定义环境变量来使用你指定的版本。我写的是 nodejs-12.16.2

  • 参数二($2):必须,远程服务器的 nginx 代理的静态文件夹根目录。我写的是 /root/data/nginx

  • 参数三($3):必须,jenkins 下的项目名称,会根据这个寻找项目来编译。我写的是 flow-dashboard-web

  • 参数四($4):必须,远程服务器的 nginx 下对应本项目的文件夹名称,一般都会将其配置到 nginx 的代理路径下。我写的是 flow-dashboard-web

  • 参数五($5):必须,jenkins 下项目编译后生成的可执行的文件夹名称。vue 项目生成的一般为 dist,我写的是 dist

  • 参数六($6):必须,远程服务器的地址,格式为 用户名@ip。我写的是 root@root@172.26.80.xxx (ip 最后 3 位我用 x 代替了)

  • 参数七($7):非必须,编译期额外安装的模块,用英文逗号分隔。这里我没写,有一些通过 cnpm i 或 npm i 无法直接安装的模块,就在这里写上,会额外开始安装

我的 jenkins 的项目配置
e02777581f895eadccd8b138ec177fd4.png
jenkins下vue项目配置

我没有用到 nodejs 插件b38ca534e86d4a7821f8d95326db6e9b.png

到这里已经全部完成,以上脚本可以适当简化,我将所有可变参数都提出来了,以后可以构建非 vue 项目。配合 webhook 实现了提交代码自动在 jenkins 编译,发布到了远程 nginx ,刷新页面即可




推荐阅读
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 深入浅出 webpack 系列(二):实现 PostCSS 代码的编译与优化
    在前一篇文章中,我们探讨了如何通过基础配置使 Webpack 完成 ES6 代码的编译。本文将深入讲解如何利用 Webpack 实现 PostCSS 代码的编译与优化,包括配置相关插件和加载器,以提升开发效率和代码质量。我们将详细介绍每个步骤,并提供实用示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • 本文深入探讨了使用Puppet进行软件包分发与管理的方法。首先介绍了fpm这一跨平台的软件包制作工具,其简便的操作流程使得软件包的创建变得轻松快捷。fpm的项目地址为:https://github.com/jordansissel/fpm。通过结合Puppet和fpm,可以实现高效、可靠的软件包管理和部署。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • Vue应用预渲染技术详解与实践 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • 在腾讯云服务器上部署Nginx的详细指南中,首先需要确保安装必要的依赖包。如果这些依赖包已安装,可直接跳过此步骤。具体命令包括 `yum -y install gcc gcc-c++ wget net-tools pcre-devel zlib-devel`。接下来,本文将详细介绍如何下载、编译和配置Nginx,以确保其在腾讯云服务器上顺利运行。此外,还将提供一些优化建议,帮助用户提升Nginx的性能和安全性。 ... [详细]
  • 深入解析 Vue 中的 Axios 请求库
    本文深入探讨了 Vue 中的 Axios 请求库,详细解析了其核心功能与使用方法。Axios 是一个基于 Promise 的 HTTP 客户端,支持浏览器和 Node.js 环境。文章首先介绍了 Axios 的基本概念,随后通过具体示例展示了如何在 Vue 项目中集成和使用 Axios 进行数据请求。无论你是初学者还是有经验的开发者,本文都能为你解决 Vue.js 相关问题提供有价值的参考。 ... [详细]
  • AppFog 是一个基于 CloudFoundry 的多语言 PaaS(平台即服务)提供商,允许用户在其平台上轻松构建和部署 Web 应用程序。本文将通过详细的图文步骤,指导读者如何在 AppFog 免费云平台上成功部署 WordPress,帮助用户快速搭建个人博客或网站。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有