centOS7 搭建jenkins 自动部署angular5项目 学习教程

首先安装jenkins不多说,网上教程到处都是。

下面记录下过程中我遇到的问题。

1 安装支持gitlab插件

jenkins若想从gitlab或github上自动拉代码打包部署,是需要插件支持的。如果刚装完jenkins没装插件,会找不到添加git仓库的地方。以gitlab为例,需要安装gitlab 的插件。

在系统设置中,插件管理,搜索,安装就行

安装完需要重启。jenkins的重启和停止,只需要在浏览器地址localhost:restart,或者stop

2 过程中遇到的几个问题

1 安装完成,设置好环境之后,构建是选择的是shell命令,一开始build时,总提示npm命令找不到,我这里打包的是angular项目。

百度了下,是环境变量的问题。

在终端中输入echo $PATH 找到环境变量

在jenkins中配置系统的环境变量 ,位置是系统设置->Global Properties

2 配置好后,又说需要一个终端来执行命令。网上找博客说是shell命令分交互式,非交互式,登录式,非登陆式。作为一个菜鸡,我还没搞懂这个,别人博客上说shell脚本前面加这个就可以。

#!/bin/bash -ilex 

加上这个好像也不行,找了会百度,又说要jenkins要用root用户来执行。配置如下

先修改jenkins配置文件的用户  文件是  /etc/sysconfig/jenkins

将$JENKINS_USER修改为 root

再设置下jenkins相关文件夹权限

chown -R root:root /var/lib/jenkins

chown -R root:root /var/cache/jenkins

chown -R root:root /var/log/jenkins

重启下jenkins,查看jenkins用户

ps -ef | grep jenkins # 若显示为root用户,则表示修改完成

3 弄完之后,确实可以执行shell脚本了,但是执行npm run build打包时报错了,原因是git上放的是window系统的node_modules

依赖包,拉到linux系统上,build报错,估计是node_modules底层文件两个系统有区别。按照提示说要执行下面命令

npm rebuild node-sass --force 

加上改命令之后,又报错了,错误如下

10:34:49 Unable to save binary /var/lib/jenkins/workspace/angualrTest/node_modules/node-sass/vendor/linux-x64-57 : { Error: EACCES: permission denied, mkdir '/var/lib/jenkins/workspace/angualrTest/node_modules/node-sass/vendor/linux-x64-57'
10:34:49     at Object.fs.mkdirSync (fs.js:885:18)
10:34:49     at Function.sync (/var/lib/jenkins/workspace/angualrTest/node_modules/mkdirp/index.js:71:13)
10:34:49     at checkAndDownloadBinary (/var/lib/jenkins/workspace/angualrTest/node_modules/node-sass/scripts/install.js:114:11)
10:34:49     at Object.<anonymous> (/var/lib/jenkins/workspace/angualrTest/node_modules/node-sass/scripts/install.js:157:1)
10:34:49     at Module._compile (module.js:652:30)
10:34:49     at Object.Module._extensions..js (module.js:663:10)
10:34:49     at Module.load (module.js:565:32)
10:34:49     at tryModuleLoad (module.js:505:12)
10:34:49     at Function.Module._load (module.js:497:3)
10:34:49     at Function.Module.runMain (module.js:693:10)
10:34:49   errno: -13,
10:34:49   code: 'EACCES',
10:34:49   syscall: 'mkdir',

原因是npm命令创建文件夹失败,没权限,真不知道为啥。最后找到解决方法,npm命令前加上这两句

npm config set user 0 
npm config set unsafe-perm true 

再打包就不报错了

猜你喜欢

转载自blog.csdn.net/zgq_hw/article/details/86364078
今日推荐