大道至简,知易行难
广阔天地,大有作为

使用Jenkins自动化构建并部署Nodejs工程

一、安装并配置NodeJS插件
在“系统管理-插件管理-可选插件”中,在右上角输入“nodejs”,然后选择插件NodeJS Plugin安装插件:

Jenkins安装NodeJS插件

Jenkins安装NodeJS插件

然后,在“系统管理-全局工具配置”中配置NodeJS插件,使用自动安装或手工指定均可:

配置NodeJS插件

配置NodeJS插件

之后,我们就能在项目设置的“Build Environment”中看到NodeJS的编译选项了 :

Jenkins中Build Environment的NodeJS配置

Jenkins中Build Environment的NodeJS配置

二、构建配置
新建一个自由风格的项目:

新建一个自由风格项目

新建一个自由风格的项目

然后配置源码管理方式,这里我们使用Bitbucket(Git):

使用Bitbucket源码管理(Git)

使用Bitbucket源码管理(Git)

然后在Build中Add build step增加一个执行Shell脚本(实际最后是调用了npm run build)的步骤,请注意开头的 #!/usr/bin/env bash 是重要的:

增加npm build的Build Step

增加npm build的Build Step

其中,npm install如果不是每次都选择了删除Workspace的话只需要执行一次,可以将其注释掉;另外,笔者将npm run build封装成了一个脚本。

三、通过Publish over SSH插件发布到远程服务器(安装插件)
在“系统管理-插件管理-可选插件”中,在右上角输入“Publish over SSH”,然后选择插件Publish over SSH Plugin安装插件:

安装Publish over SSH插件

安装Publish over SSH插件

插件成功安装后,在“系统管理-系统设置”会出现相关配置项:

设置Publish over SSH插件

设置Publish over SSH插件

其中:
1、Passphrase,在使用username/password登录时为username的password,在使用私钥登录时为私钥的password;
2、Path to key,SSH私钥的文件路径,可以是绝对路径,也可以是相对$JENKINS_HOME的相对路径;
3、Key,PEM文本格式的SSH私钥;
4、Name,SSH服务器的名称。在Job中使用Publish over SSH插件时,此名称将出现在SSH Server中Name的下拉列表中;
5、Hostname,通过SSH连接到的机器的主机名或IP;
6、Username,SSH服务使用的用户名,使用Key进行连接时为Key指定的用户名:
7、Remote Directory,运程主机上真实存在的文件夹,而且Username指定的用户要有访问此文件夹的权限,插件会将把文件复制到该文件夹下;
当Key和Path to key同时设置时,Key的优先级较高,私钥的password是Passphrase中设置的内容。
请注意,在此处设置的密码密钥信息默认会应用到每一个SSH Server上(当然每一个SSH Server也可以使用单独的密码密钥)。

四、通过Publish over SSH插件发布到远程服务器(配置Post-build Actions)
接下在,我们就能够在Job中的SSH Server中选择Publish Over SSH中所配置的运程主机了。在Job设置中的Post-build Actions中增加一步“Send files or execute commands over SSH”,即能够Job中使用Publish over SSH插件:

增加一个Publish over SSH的Post-build action

增加一个Publish over SSH的Post-build action

其中:
1、Name,刚刚在“系统管理-系统设置”中设置的SSH Server的Name;
2、Source files,要拷贝到运程机上的文件,是相对于Workspace的路径,支持表达式;
3、Remove prefix,拷贝文件时要过滤的文件夹;
4、Remote directory,文件得到到远程机上的文件夹,此文件夹是相对于“SSH Server”中的“Remote directory”的,假设不存在将会自动创建。
5、Exec command,在远程主机上运行的脚本,如应用部署脚本等。例如,本例中的命令即是讲npm所编译出的dist的文件解压到Nginx指定目录。请注意,脚本开头的 #!/usr/bin/env bash 同样是重要的。

转载时请保留出处,违法转载追究到底:进城务工人员小梅 » 使用Jenkins自动化构建并部署Nodejs工程

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址