Jenkins前端自动化部署

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

懒,是第一生产力,如果在页面上点点按钮,然后就可以把以前打包上传服务器的事都解决了,这样不是有更多精力干别的事了?

公司其实早些时候,我看也有这些工具,但是项目一直没有上,趁着这次要提升效率,所以怂恿着产品,就开始上手Jenkins。这篇文章,只是以流水的形势,记录一下我中间踩过的坑,避免以后有人再踩坑!

首先,第一个坑,构建环境node

上网查了,要装node,所以去公司的Jenkins后台一看,一脸懵逼,和别人的截图不一样……

Jenkins前端自动化部署

原来,公司的这个是有权限控制的,如果想装一些插件,需要走工作量申请。然后,问了下公司的IT,原来我们项目是以挂载机去跑的job,所以,需要在自己的挂载机上面装node!

安装node,这里建议安装较新的版本

wget https://nodejs.org/dist/v12.16.3/node-v12.16.3-linux-x64.tar.xz

解压文件重命名

xz -d node-v12.16.3-linux-x64.tar.xz 
tar -xvf node-v12.16.3-linux-x64.tar
mv node-v12.16.3-linux-x64 nodejs

设置快捷方式

ln -s /root/nodejs/bin/node /usr/local/bin/node 
ln -s /root/nodejs/bin/npm /usr/local/bin/npm 

测试

node -v
npm -v

至此,挂载机的node环境已经配置完毕。

第二坑,node-sass安装报错

这个坑,是有点深,安装的时候,一直提示EACCES:permission denied,网上搜了好多方法,无解,但是感觉是没权限。记得npm提供的有解决方案:Resolving EACCES permissions errors when installing packages globally

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH
source ~/.profile

第二坑,也爬了出来!

第三坑,node-sass安装超时

如果用到了sass总是会自动去下载平台相关的安装包,首先要知道的是,安装 node-sass 时在 node scripts/install 阶段会从 github.com 上下载一个 .node 文件,大部分安装不成功的原因都源自这里,因为 GitHub Releases 里的文件都托管在 s3.amazonaws.com 上面,而这个网址在国内总是网络不稳定!!!

所以,只能改源:

npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/

例如我的Command

cd /usr/G3_Vue #进入项目目录
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
npm install
npm run build
cd dist
rm -rf dist.tar.gz #删除上次打包生成的压缩文件
tar -zcvf dist.tar.gz * #把生成的项目打包成dist方便传输到远程服务器
cd ../

第四坑,把打包好的文件通过SSH部署到服务器:Send build artifacts over SSH

Jenkins前端自动化部署

这里卡了一下午,是卡在了Remote directory,这里的路径我虽然写的是根目录,但是,实际上还真不一定是根目录,得看服务器当时是怎么配置的了,我这边IT配置的是root这个文件夹,所以,导致我一直以为我代码写的有问题,该下班的时候才发现,我代码是没问题的,只不过文件上传到别的目录下了。

好了,以上的4个坑,都已经说完了,花费了我一天的时间,希望我上面的流水账,能让别人少走弯路!

添加新评论