在现代开发中,自动化和快速部署是至关重要的。特别是在前端开发中,我们经常需要与后端服务一起工作。常常需要在自己的电脑上开发和调试前端代码,同时需要与后端服务进行相应的集成。而这个集成过程是需要不断地手动部署来完成的,这样的过程不仅费时费力,也容易出现错误。这时,持续集成(CI)就成为了我们前端开发者的一个重要的利器了。本文将介绍如何使用 PM2 和 Nodejs 实现双方持续集成的方法。
什么是PM2
PM2 是一个 Nodejs 进程管理器,它可以帮助我们在应用程序处于生产环境时进行进程管理和监控。它的功能包括自动重启,在应用程序挂掉时重新拉起应用程序,自动负载均衡以及进程监控等。对于 Nodejs 应用程序而言,使用 PM2 可以让我们的应用更加稳定和高效。
什么是持续集成
持续集成(Continuous Integration, CI)是一种软件开发实践,他的目的是让项目能够更加可持续、高效的进行开发。CI 的核心要素是持续构建、持续测试和持续部署。持续集成是通过不断地构建、测试和部署来减少代码集成问题的,目的是让开发者尽早发现问题,并在问题变得复杂之前就进行解决。
实现 PM2 和 Nodejs 的持续集成
下面,我们将会讲述如何实现使用 PM2 和 Nodejs 的持续集成。
第一步:安装 PM2
在终端运行以下命令安装 PM2:
npm install pm2 -g
第二步:创建一个项目
在终端运行以下命令创建一个新项目:
mkdir pm2-ci-example cd pm2-ci-example npm init -y
由于我们在本文中只关注 PM2 和 Nodejs 的持续集成,因此我们会省略掉其他的步骤,仅关注必要的内容。
第三步:编写 Nodejs 代码
现在,让我们在项目的根目录中创建一个简单的 Nodejs 文件 app.js ,并输出 "Hello World!" 信息:
console.log('Hello World!');
第四步:运行项目
现在,我们可以在终端中运行以下命令来运行我们的应用程序:
node app.js
如果运行正确,我们会在终端中看到如下的输出:
Hello World!
第五步:使用 PM2 运行项目
现在,我们可以运行以下命令使用 PM2 来运行我们的应用程序:
pm2 start app.js --name "pm2-ci-example"
这样,我们的应用程序就已经被 PM2 启动了。我们可以使用以下命令来查看 PM2 中正在运行的进程:
pm2 list
我们可以看到,我们的应用程序已经被 PM2 启动:
┌─────┬────────────────────┬──────────┬───────┬────────┬─────────┬──────────┐ │ id │ name │ mode │ status │ restart│ uptime │ memory │ ├─────┼────────────────────┼──────────┼────────┼────────┼─────────┼──────────┤ │ 0 │ pm2-ci-example │ fork │ online │ 0 │ 0s │ 10.203MB │ └─────┴────────────────────┴──────────┴────────┴────────┴─────────┴──────────┘
第六步:定制部署脚本
现在,我们需要在我们的项目中创建以下两个脚本:“start” 和 “stop”。
在 package.json 中添加以下 "scripts" 配置:
"scripts": { "start": "pm2 start app.js --name \"pm2-ci-example\"", "stop": "pm2 stop pm2-ci-example" }
上述代码中,我们使用 PM2 提供的启动和停止命令来创建一个名为 "start" 的脚本和一个名为 "stop" 的脚本。
第七步:使用 Git 和 GitHub 实现自动化
我们只需要将项目推送到远程的 GitHub 仓库,即可触发持续集成的过程。在这里,我们使用 GitHub 的 Actions 工具,来实现自动推送和自动化测试。
在项目的根目录下,我们可以创建一个名为 ".github/workflows" 的文件夹,然后在该文件夹中创建一个名为 "ci.yml" 的文件,该文件包含以下内容:
-- -------------------- ---- ------- ----- -- --- ----- --------- - ------ ----- ------ -------- ------------- ------ - ----- ------- ------------ ---- --- ------- - ----- ---- ---- --- ----展开代码
上述代码中,我们定义了一个名为 "CI" 的 Workflow,它会在推送到 "master" 分支时被触发。当此次触发时,会运行包含了两个步骤的任务。第一个步骤是安装依赖项,第二个步骤是运行测试。
在项目中添加测试:
在项目的根目录下,我们可以创建一个名为 "test" 的文件夹作为测试文件夹,在该文件夹中创建一个名为 "app.test.js" 的文件,该文件包含以下内容:
-- -------------------- ---- ------- ----- ------ - ------------------ ----- ---- - ------------------------------ ---------------- -------- -- -- - --------- --- ------- ------ -- - ---------- -------- ------- ------- ------- -- - ------------------- ------ ------- --- --- ---展开代码
上述代码中,我们使用 assert 库来编写一个简单的断言,以确保我们的应用程序能够成功运行。
第八步:推送代码到 GitHub
我们可以将项目推送到 GitHub,这时我们应该能够在 GitHub 上的 Actions 中看到我们的 Workflow。
第九步:触发自动化测试
我们可以手动触发自动化测试进行验证或者在推送代码到 GitHub 后,Actions 会自动触发测试。
第十步:实现自动化部署
我们可以在 Workflow 的最后一行添加以下代码来实现自动化部署:
-- -------------------- ---- ------- - ----- ------ ----- ------------------------------ ----- ---------------- --- ----------------------- -- --------------- --- ---------------------- -- ------------ --- ------------------- -- ------------ --- ------------------- -- ------- -- ------- ----------------------------展开代码
上述代码中,我们使用了 easingthemes/ssh-deploy 工具来实现自动化部署。在这里,需要配置 GitHub 的 Secrets。
最后,我们只需推送代码到 GitHub,就可以自动化测试和部署我们的服务了。是不是非常方便呢?
结尾
通过本文的介绍,相信大家已经能够了解如何使用 PM2 和 Nodejs 来实现双方持续集成了。这种持续集成的方式可以帮助我们快速部署我们的服务,提高我们的开发效率和工作效率。如果您有任何问题或建议,请在评论区留下您的宝贵意见。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67946dc5504e4ea9bd8f3aec