使用 Jenkins 构建 nodejs 应用
准备工作
安装 Jenkins
安装如下插件,并重启 Jenkins
- GIT client plugin
 - GIT plugin
 - Git server plugin
 - SSH Credentials Plugin
 - SSH plugin
 - Publish Over SSH
 
系统配置
进入系统管理=>系统设置,进行以下配置- 增加远程服务器的 remote server
每需要连接一个新的远程服务器,都需要在此配置服务器的连接属性。- SSH remote hosts
配置Hostname,Port,User Name,Password - Publish over SSH
配置 SSH Servers,配置Name,Hostname,Username,Remote Directory
点击展开高级配置,勾选Use password authentication, or use a different key,并配置Password
配置端口,默认为22,配置Timeout,此处因为 nodejs 构建时需要进行npm install操作,耗时可能受网络影响较大,故可以配置较高数值。 
 - SSH remote hosts
 
- 增加远程服务器的 remote server
 
构建项目
点击新建按钮,选择
构建一个自由风格的软件项目项目配置
- 根据自己的需求配置项目的基本信息,如 
nodejs_deploy 源码管理
选择自己的代码管理系统,这里我们用Git,注意:如果是 public 的项目,则只需要填写Repository URL即可;如果是 private 的项目,则需要选择正确的Credentials,Credentials 的配置方法如下:- 在 Jenkins 主页点击进入 Credentials
 - 在 Domain 中选择,这里选 Global
 - 添加 Credentials
- 在 
${Jenkins主目录}/.ssh/目录下,生成公钥和私钥 - 复制公钥文件到当前目录下 
cp id_rsa.pub authorized_keys Username填写你现在登录的用户名Private Key选择Enter directly,使用cat id_rsa获取私钥,并复制到Key中Passphrase为你生成公钥和私钥时填写的密码Description填写描述,方便在项目中选择
 - 在 
 - 在 Git 项目配置中(这里有可能是 Gitlab,总之就是你的项目主页),将刚才生成的公钥添加到项目的 
Publish Keys列表中完成授权 
选择刚才创建的 Credentials,发现配置信息那里的错误消失了,说明连接源码库成功
最后,填写需要构建的分支,默认为*/master
到这一步,可以保存,然后点击立即构建,测试项目能否成功拉取代码构建步骤
- 开始构建后,Jenkins 会先帮我们拉取代码
 - 在项目配置中,可以添加构建步骤,分别对应如下
Execute Windows batch command: Windows 系统节点下地自动化批处理任务Execute shell: 在命令行中执行脚本Execute shell script on remote host using ssh: 使用 SSH 链接到远程服务器并执行脚本Invoke Ant: 整合 Apache AntInvoke top-level Maven targets: Maven 构建指令Send files or execute commands over SSH: 使用 SSH 传送文件到服务器并执行脚本
 nodejs 项目的构建
- 重新生成源码包,并使用当前构建号将源码包命名存储
新建Execute shell,执行下面的命令(这里的命令有一些环境参数可用,具体可点击文本框下面的链接查看可用参数)
这样,就将原有源码包删除,生成最新源码包,并存放到当前项目目录下的rm -rf ${WORKSPACE}/${JOB_NAME}.tar.gz tar -zcvf /tmp/${JOB_NAME}.tar.gz -C ${WORKSPACE}/ . mv /tmp/${JOB_NAME}.tar.gz ${WORKSPACE}/ cp ${WORKSPACE}/${JOB_NAME}.tar.gz ${JENKINS_HOME}/jobs/${JOB_NAME}/builds/${BUILD_NUMBER}.tar.gzbuilds文件夹中 - 到服务器停止原来的进程,并删除原来的源码包
新建Execute shell script on remote host using ssh,执行下面的命令forever stop nodejs/app.js rm -rf nodejs/nodejs_deploy.tar.gz - 将最新源码包发送到服务端,解压,然后执行 nodejs 基本的构建步骤
新建Send files or execute commands over SSHSource files填写nodejs.tar.gzRemote directory填写nodejs
执行下面的命令tar -zxvf ~/nodejs/nodejs_deploy.tar.gz -C ~/nodejs/ cd nodejs npm install bower install node --harmony `which gulp` forever start -c "node --harmony" app.js 
至此,nodejs 项目构建完毕并启动(上述所有的构建过程都可以根据自己的项目需要进行配置)
- 重新生成源码包,并使用当前构建号将源码包命名存储
 
- 根据自己的需求配置项目的基本信息,如 
 
回滚项目
我们使用构建一个项目的方式,来实现原有项目的回滚
点击新建按钮,选择
构建一个自由风格的软件项目项目配置
根据自己的需求配置项目的基本信息,如
nodejs_revert配置回滚构建号
勾选参数化构建过程,添加参数String Parameter,并起个名字,这里叫VERSION构建步骤
- 拷贝该构建号的源码包到此项目的 
WORKSPACE下
新建Execute shell,执行下面的命令(这里的命令有一些环境参数可用,具体可点击文本框下面的链接查看可用参数)cp -rf ${JENKINS_HOME}/jobs/nodejs_deploy/builds/${VERSION}.tar.gz ${WORKSPACE}/. - 到服务器停止原来的进程,并删除原来的源码包
新建Execute shell script on remote host using ssh,执行下面的命令forever stop nodejs/app.js rm -rf nodejs/nodejs_deploy.tar.gz - 将最新源码包发送到服务端,解压,然后执行 nodejs 基本的构建步骤
新建Send files or execute commands over SSHSource files填写${VERSION}.tar.gzRemote directory填写nodejs
执行下面的命令mv -f ~/nodejs/${VERSION}.tar.gz ~/nodejs/nodejs_deploy.tar.gz tar -zxvf ~/nodejs/nodejs_deploy.tar.gz -C ~/nodejs/ cd nodejs npm install bower install node --harmony `which gulp` forever start -c "node --harmony" app.js 
- 拷贝该构建号的源码包到此项目的 
 
配置完成后,项目的构建按钮变成了
Build with Parameters,点击后输入参数即可进行构建版本的回滚