# 控制器自动打包拓扑图项目代码
# 背景
目前拓扑图是个独立的项目,每次更改代码后需要打包->复制文件去控制器项目。
频繁地修改代码下这种方式是不可取的,于是在控制器的打包脚本中,增加将拓扑图打包到指定路径的逻辑,解决这种问题。
# 实现
# 拉取拓扑图项目代码
公司项目使用的gitlab
,而gitlab
拉取代码一般都通过生成个设备的秘钥,但是我们打包服务器通常不是固定的一台,所以通过注册一个个人token
去拉取代码。
git clone http://oauth2:<你的token>@code.sangfor.org/<namespace>/<repo_name>.git
# 拉取node.js
因为公司是内网环境,不能直接拉取公网的node.js包,所以将node包下载好后放在svn服务器上(旧有逻辑),打包时拉取下来
svn export svn://path --force --username=1 --password=1 --force --no-auth-cache
拉下来后解压
echo ">> tar -xvf..."
tar -xvf ./node-v16.15.0-linux-x64.tar.xz
rm -rf ./node-v16.15.0-linux-x64.tar.xz
修改权限
echo ">> chmod node"
chmod +x ./node-v16.15.0-linux-x64/bin/*
if [ $? -ne 0 ]; then
echo "chmod node error!"
exit 1
fi
添加临时环境变量(重点)
export PATH=$PATH:$PWD/node-v16.15.0-linux-x64/bin
因为不需要安装node到环境中,所以这里添加node到临时环境变量中,只在本线程中生效
# 安装项目依赖
因为公司内网搭建了自己的npm服务器,所以这里先要切换下npm服务器路径再进行安装
echo ">> npm registry"
npm config set registry http://path
echo ">> npm install..."
npm install
echo ">> npm run build..."
npm run build
# 复制打包文件
打包好后复制文件到所需文件夹路径即可
echo ">> copy dist"
cd ../
cp -r UED-Graph/dist/* ./WLAN/js/components/vendor/topo
echo ">> delete UED-Graph"
rm -rf ./UED-Graph
# 遇到的问题
# shell文件格式
因为是在windows下进行的编写,所以传到linux后运行时会报格式问题
进vim修改下格式即可。
:set fileformat=unix
:wq
# 报错GLIBC_2.16 not found
这是因为Jenkins环境老旧
打包流水线不止是打包前端代码,还有硬件那边的代码,环境依赖不敢随便升级
这联系后台人员去处理了