内容简介:使用Node.js和Jenkins创建一个持续部署管道
作者 | Nic Raboy
翻译 | 袁思思
来源 | DZone
原文 | https://dzone.com/articles/create-a-continuous-deployment-pipeline-with-nodej
之前我已经写过一个关于使用Jenkins来持续部署 Java 应用的文章,灵感来自于我为 Couchbase Connect 2016开发的一个主题演示。我知道Java不是现存的唯一的流行开发技术。Node.js是一个非常流行的技术,并且是使用Jenkins插入到持续部署管道中的完美候选者。
我们将看到 基于变更到GitHub资源库, 用Jenkins如何持续部署一个node.js应用。所以我们先弄清楚计划。我们将使用现有的node.js资源库,我已经上传到GitHub好一阵了。当变更到这个资源库,Jenkins将构建应用并且部署,或者运行应用。因为node.js的性质,构建进程将包括确保NPM模块的存在。
软件需求
为了成功运行这个指导,必须满足一些软件需求:
-
Node.js 6+
-
JDK 8+
-
Jenkins 2.32+
-
Couchbase Server 4.6+
因为这是个node.js管道,当然我们需要安装它。然而,因为Jenkins是一个Java应用,我们还需要安装Java。我的示例应用不用Couchbase,但这不是这次的重点。但是如果正在和我用一样的应用,你还是需要安装 Couchbase Server的。所有列出的软件都该放在同样的主机上。再生产环境中,你将可能希望它们分散在多台机器上。
作为NoSQL数据库
安装配置Couchbase Server
这时候,需要先下载好Couchbase Server。安装完后配置,需要创建一个名为restful-sample 的Bucket,这个Bucket可能需要一个主下标。关于Couchbase配置和Bucket创建的说明,可以看看我之前写过的关于这个主题的教程。它实际上是伴随创建Couchbase,Express Framework, Angular,和Node.js (CEAN) 堆栈应用的教程。当Couchbase准备好了,我们就能集中在配置Jenkins和创建工作流了。
用必要的插件配置Jenkins
到现在,你应该已经下载好Jenkins了。如果还没有,到Jenkins网站上获取WAR文件。开始Jenkins,执行下面的命令,从Command Prompt 或Terminal:
java -jar jenkins.war -httpPort=8080
这将让Jenkins可以从浏览器http://localhost:8080 进入。在第一次启动,将会出现配置向导。
这个配置向导中的第一个屏幕将会问你Jenkins生成的密码。在屏幕上显示的地方找到它。第二屏将会问你想安装 哪个插件 。
现在,我们将安装建议的插件。我们将在之后安装额外的插件。第三屏将会要求创建第一个管理员用户。从技术上讲,你所使用的密码是一个管理用户,但是你也许想创建一个新密码。
在创建一个用户后,Jenkins已经准备好启动了。然而我们将要需要另一个插件,它可以根据我们所希望的创建和部署node.js应用变得不同。从Jenkins主屏幕,选择“Manage Jenkins”,看到一个管理选择列表。
我们关心的是管理可用的插件。选择“Manage Plugins”后,我们希望所有并且安装一个名为Post-Build Script的插件。
这个插件允许在创建阶段完成后执行 shell 命令或脚本。在这个例子里,我们将创建并部署到同样的主机,通过shell命令可以在本地运行所有。在生产环境中,你也许想要使用SSH插件来迁移代码到一个远程服务器,并且在那运行。通过可用的插件,让我们在Jenkins中为node.js创建持续部署工作流。
为Node.js创建Jenkins持续部署工作流
重申一下,我们的目标是创建一个工作流,将从GitHub上pull一个项目,通过安装所有相关内容构建它,并且在一个服务器上,在这种情况下,本地机器通过运行它进行部署。从创建一个新的项目开始,也就是所谓的新工作或工作流。
我们将创建一个Freestyle Project,你可以任意起个名字。在下一屏上有三件事需要完成。工作区的资源将来自GitHub。在你自己的项目里,它可以从别处获取,但对于这个,我们需要定义资源控制信息。
GitHub项目是一个我之前创建和编写的,之前提过。这个项目可以在下面这个地址找到:
https://github.com/couchbaselabs/restful-angularjs-nodejs
现在在生产环境中,将可能希望设置GitHub hooks来触发工作进程,但是因为这所有都在本地主机上,GitHub将不允许。相反,我们将手动触发工作。
在配置资源控制部分后,将需要安装构建步骤。node.js安装只包含安装相关项,但是在这步里也可以简单的有单元测试和其他测试。在我之前的Java例子里,构建步骤有更多的内容。在这个node.js例子里我们有如下:
npm install
最后,我们将定义项目构建后的情况。
在这个例子中,我们将在机器上部署本地应用。可能在你的生产情节中不是这样。所以需要在post-build步骤中注意,有下面的命令:
npm stop
npm start
在开始应用之前,我们将停止任何已经运行的实例。一旦停止,我们可以开始新版本。但是这些停止和启动任务从哪来?
"scripts": {
"start": "forever start app.js",
"stop": "forever stopall"
}
上面是从GitHub项目的package.json文件中获取的。为node.js每个任务开始和结束一个 forever 脚本。继续并试着运行工作,从选择列表里选择Build Now。它将获得项目,安装相关内容,并且让项目在 http://localhost:3000上可用。只要确保Couchbase Server是在为这个项目运行,否则将出现错误。
你已经看到如何使用Jenkins来持续部署你的node.js应用了,基于GitHub上已经做出的变更。这个指导的一个类似的版本,为了Java应用创建的,叫做Create a Continuous Deployment Pipeline with Jenkins and Java,如果你是个Java开发人员,值得一看。
上期回顾
私有云 | 混合云 | 自动化运维
关于BoCloud博云
BoCloud 博云,为企业级客户提供针对互联网化、大数据业务应用、去IOE 化(X86 服务器规模化应用)的底层云化架构和智能云运维系统,运用最新容器技 术协助企业完成IT 系统云架构的实施和运维, 帮助企业客户降低成本、提升效率、简化运维、提高系统可靠性和安全性。凭借对客户业务流程和应用的深刻理 解,以及先进技术产品的持续研发, BoCloud 博云以创新云技术支撑企业核心业务,促进企业IT 系统的不断进化。
www.bocloud.com.cn
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 速度不够,管道来凑——Redis管道技术
- Golang pipline泛型管道和类型管道的性能差距
- Linux 管道那些事儿
- mongodb 聚合管道
- Redis管道
- Clojure 集合管道函数练习
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。