解决Jenkins自动构建nodejs项目无法完成的问题
2015-12-02 19:02
579 查看
最近添置服务器 之前只有一个的时候使用比较原始的方式
就是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目录)可能不在系统的环境变量中,会导致上述错误
配置完成后 点击构建 执行 蓝色圆圈 构建完成
一个简单的本地测试项目的就完成了
就是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目录)可能不在系统的环境变量中,会导致上述错误
配置完成后 点击构建 执行 蓝色圆圈 构建完成
一个简单的本地测试项目的就完成了
相关文章推荐
- 转:配置nodemanager启动weblogic服务器
- node异步转同步,KO 恶魔金字塔
- nodejs创建一个应用
- ATS统计量proxy.node.client_throughput_out的单位调研
- nodejs操作excel并配合edatagrid使用
- (二)、NodeJS 、Express4安装使用方法
- nodejs下打包模块archiver详解
- NodeJs随手笔记--严格模式
- datanode 出来了,master:18088也可以啦 但是pi 运行不出来
- 本地json文件的编辑器,node-webkit开发的exe程序
- 本地json文件的编辑器,node-webkit开发的exe程序
- 关于在Ubuntu下安装nodejs以及使用addons API的一系列命令。
- LintCode: Delete Node in the Middle of Singly Linked List
- [LeetCode]Populating Next Right Pointers in Each Node II
- hbase ERROR: Can't get master address from ZooKeeper; znode data == null问题解答
- Hadoop DataNode与DFSClient交互
- Nodejs-connect 中间件
- Delete Node in a Linked List 删除链表的一个节点
- 项目中部署Grunt
- 【leetcode】Count Complete Tree Nodes (Java)