首先安装jenkins不多说,网上教程到处都是。
下面记录下过程中我遇到的问题。
1禁用Jenkins的日志保存
Jenkins的日志文件非常大,不禁用的话,服务器磁盘很快就会满。
在jenkins的设置面板 设置 -》 系统日志 -》日志级别 -》配置级别
添加一条日志配置 javax.jmdns off ,重启jenkins
2 安装支持gitlab插件
jenkins若想从gitlab或github上自动拉代码打包部署,是需要插件支持的。如果刚装完jenkins没装插件,会找不到添加git仓库的地方。以gitlab为例,需要安装gitlab 的插件。
在系统设置中,插件管理,搜索,安装就行
安装完需要重启。jenkins的重启和停止,只需要在浏览器地址localhost:restart,或者stop
3 过程中遇到的几个问题
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
再打包就不报错了