解决Jenkins自动构建nodejs项目无法完成的问题
来源:互联网 发布:淘宝半价群是真的吗 编辑:程序博客网 时间:2024/06/05 16:37
最近添置服务器 之前只有一个的时候使用比较原始的方式
就是1 手动ftp上传文件
2 ps -ef|grep node* 找到在后台运行的node项目 kill这个进程
3 进入项目目录 nohup npm start &启动
这样重复的工作在数量少的情况下没感觉什么。一旦要几台服务器做负载均衡的时候,就显得比较繁琐了。
于是开始尝试用jenkins自动构建
测试环境 Jenkins+JDK8+win10 nodejs5.0.0 SVN1.8
网上这方面的资料比较少,主要是这么奇葩的搭配
Jenkins本身是Java编写的对maven有支持,不过我这边是node没啥卵用。
网上随便搜了一篇教程跟着写踩了几个坑记下来防止再坑
前面一切正常,新建job选择了自由风格 就是第一项。
问题1:
因为是Windows系统 增加构建步骤的时候不要选择 execute shell,而应该选择execute Windows batch Command 小问题
问题2:
在execute Windows batch Command 写入
cd mytest
npm start (express4.0模块的启动命令)
然后构建运行 问题来了 根本停不下来啊,服务完全启动了但就是不报构建成功。(一直是红色圆圈)
进控制台看log 一切正常 各种请求都能响应。
这应该是jenkins判断任务完成的机制的问题。百度了半天未果
然后找了半天在界面上发现了这个
翻译结果
为建设项目运行一个窗口批处理脚本。该脚本将以当前目录的工作区作为运行。你在文本框中输入的文本将作为一个批处理文件执行,并将被认为是失败如果在执行%errorlevel%不是0。
如果在供应链管理中已经有一个批处理文件,可以在批处理文件中键入路径(相对于工作区目录),并且简单地执行。
问题一下子明白了 输入的命令的返回结果不是0
在cmd中输入echo %errorlevel% 就能打印错误码了
关于命令的返回码 可以参考这篇文章http://blog.chinaunix.net/uid-10347480-id-3263127.html 点击打开链接
继续输入npm start后发现 因为是在Windows上前台启动这时候如果无法打印输出 %errorlevel% 控制台在打印log状态,是不是可以认为是没有返回呢?或者说没有返回0?
于是考虑转为后台启动,Windows上后台启动就无法使用nohup了。而且nohup的启动方式关闭时也不方便用统一的脚本重启。
这就是node这边代码的问题了,想着干脆一步到位把守护进程也加上吧 找到了forever和pm2这两个模块。测试之后(使用环境为centos)发现pm2的似乎功能能强大一点,比较遗憾的是Windows上使用pm2有些问题,无法正常启动,于是改成用forever
npm install forever -g 全局安装
forever命令无法接npm start了 只好用 forever start bin/www的形式 这里注意不要进入bin目录去 start www 因为node中如果使用相对路径 可能会把根目录对应到启动位置,而默认的npm start的启动位置是bin那一级,可能会出现读不到对应资源的情况
于是
execute Windows batch Command中的内容变成了这样
cd mytest
forever start bin/www
这里有个问题是可能会报错forever 不是内部命令
这是由于Jenkins使用系统环境变量而不是某个用户的环境变量,forever命令所在的目录(就是npm目录)可能不在系统的环境变量中,会导致上述错误
配置完成后 点击构建 执行 蓝色圆圈 构建完成
一个简单的本地测试项目的就完成了
- 解决Jenkins自动构建nodejs项目无法完成的问题
- jenkins解决构建完成后自动杀掉衍生进程
- jenkins 自动构建项目
- 解决Jenkins无法编译Egret5.0项目的问题
- 解决Jenkins构建Android app无法找到SDK路径问题
- Mark jenkins + git 完成自动构建
- jenkins+docker+nodejs项目的自动部署环境(案例)
- 打造jenkins+docker+nodejs项目的自动部署环境(webhook)
- jenkins配置java的maven项目自动构建
- 使用jenkins进行项目的自动构建部署
- Jenkins自动构建的方法
- Jenkins自动构建的方法
- 记一次解决jenkins持续构建,自动部署的问题
- Eclilpse导入maven项目,无法自动构建为java项目的问题
- jenkins 自动构建项目工具学习资料
- 从码云上导入maven项目到eclipse(解决导入maven项目不自动构建的问题)
- jenkins构建Protractor项目报错解决
- 解决无法切换到jenkins用户的问题
- jmap 应用
- 模型和自定义控件的两种方式(代码和xib)
- 接口
- CF235C Cyclical Quest
- 后台的学习(第一篇)
- 解决Jenkins自动构建nodejs项目无法完成的问题
- C++ 指针与引用 (OI向
- fzu月赛(2015.11)
- MongoDB 文档的更新操作
- oc中的copy与mutableCopy
- Android ListView使用BaseAdapter 优化
- java设计模式之单例模式
- mysql 使用federated 引擎实现dblink 远程表访问
- EventKit