如何使用 CircleCI 设置 CI/CD 并将您的 NodeJS 项目部署到远程服务器

言鼎科技 2023-05-05 488
如何设置-ci-cd-with-circleci.png

在本文中,我将与您分享 CI/CD 的概念并将其应用到实际场景中。

目录:

什么是 CI/CD,为什么要使用 CI/CD

为什么选择 CircleCI

Node.js 演示 — Bitbucket — CircleCI

 什么是 CI/CD,为什么要使用 CI/CD

CI/CD 代表持续集成和持续交付。

  • 持续集成是将来自多个开发人员的所有代码更改自动合并到一个共享存储库中的过程。然后每个集成都由一个自动化工具进行验证,该工具会检查代码风格并在每次构建之前运行测试。

  • 持续交付通过在构建阶段之后将所有代码更改部署到测试环境和/或生产环境来扩展持续集成。换句话说,全新的功能、错误修复……将经常交付给测试人员/用户。

→ 这种 CI/CD 的做法大大降低了开发人员手动操作的成本,从而提高了生产力并缩短了部署时间。

实际场景:

  • 一群从事NodeJS 项目的开发人员

  • 开发人员的所有代码更改都被推送到 Bitbucket 存储库

  • 随着每次提交被推送到存储库,CircleCI 将被触发。它将检查最新代码、安装依赖项并运行测试

  • 毕竟测试通过,CircleCI通过SSH部署代码到远程服务器

 为什么选择 CircleCI 而不是 Jenkins(和其他替代品)

除了许多其他 CI/CD 工具外,在本文中,我只将 CircleCI 与 Jenkins 进行比较——Jenkins 是有史以来最流行的 CI/CD 工具。

首先,Jenkins 和 CircleCI 之间最明显的区别可能是您需要一个服务器来托管 Jenkins,这需要管理知识和大量时间进行配置/定制。同时,CircleCI 是一个云原生平台,这意味着您不需要设置任何服务器,它开箱即用。

其次,Jenkins 的界面比较陈旧和不直观,而 CircleCI 的设计非常友好。在配置方面,使用 CircleCI,yml 语法清晰易懂,便于开发人员阅读。

总之,CircleCI 是一个轻量级的 CI/CD 平台,它支持几乎所有开箱即用的编程语言。开发人员还可以部署到 AWS、Azure、Google Cloud、Heroku 和许多其他云托管服务。

演示

先决条件:

  • 存储在 Bitbucket 存储库中的 Node.js 项目

  • CircleCI账户

  • 可以通过 SSH 连接的远程服务器。在该服务器上,您必须安装git、Node.js 和pm2(推荐用于管理Node.js 进程的工具)

  • SSH基础知识

如何使用 CircleCI 设置 CI/CD 并将您的 NodeJS 项目部署到远程服务器

设置

1. 配置 CircleCI 以跟踪 Bitbucket 存储库上的提交

  • 在项目的根目录下创建一个名为 .circleci 的文件夹,将 config.yml 文件添加到该文件夹,内容如下:

有关如何配置 CircleCI 的更详细说明,请参阅此文档

  • 将您的 Bitbucket 存储库添加到 CircleCI 项目

→ 现在,CircleCI 能够执行config.yml 文件中指定的构建作业。

2. 配置远程服务器,使 CircleCI 可以执行部署作业

通过在终端上执行以下命令,生成我们将在整个教程中使用的 SSH 密钥对:

ssh-keygen -t rsa -C “ my_email@gmail.com ”

你会被问几个问题,记得让密码为空(在我写这篇文章的时候,CircleCI 要求密码为空)。

→ 结果是 2 个文件:id_rsa(私钥)和id_rsa.pub(公钥)

  • 在 Bitbucket repo 设置中,检查是否已自动添加 CircleCI Deploy Key,然后复制id_rsa.pub并在那里添加另一个密钥

如何使用 CircleCI 设置 CI/CD 并将您的 NodeJS 项目部署到远程服务器

  • 在 CircleCI 项目设置中,复制 id_rsa 并在那里添加您的私钥

如何使用 CircleCI 设置 CI/CD 并将您的 NodeJS 项目部署到远程服务器

 

  • 在您的远程服务器中,通过执行以下命令将您的公钥附加到~/.ssh中的authorized_keys

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

     

    • 在您的远程服务器中,将您的私钥复制到 ~/.ssh 文件夹并修改 ~/.ssh/config 文件以包括:

    托管 bitbucket.org主机名 bitbucket.org身份文件 ~/.ssh/id_rsa

     

    • 通过执行以下命令将您的私钥添加到 ssh-agent:

    评估“$(ssh-agent -s)”ssh-add -K ~/.ssh/id_rsa

     

    → 现在每次将代码推送到 Bitbucket 时,CircleCI 都会从那里提取代码并在他们的云上执行构建作业。之后,它通过 SSH 连接到远程服务器来执行部署作业,然后在远程服务器上自动运行 deploy 命令以从 bitbucket 中拉取代码,然后 pm2 以启动/重新启动 config.yml 文件中指定的进程。

    ssh -p your_port_number your_user@your _host"cd ../path/to/your/project;混帐拉;pm2 启动 hello_sts";

     

    你完成了!

    好工作!您已经使用 CircleCI 成功地自动化了开发和部署过程。现在,无需执行手动任务,您的团队可以毫不费力地及时交付产品。

    本基础教程旨在为您提供 CircleCI 的一些基础知识,以启动您的 DevOps 之旅。要掌握 CircleCI 的强大功能,请直接进入其文档。功能是无穷无尽的,有许多功能等待您去探索:

    • 一流的 Docker 支持。

    • 作业编排的工作流。

    • 使用 SSH 调试。缓存。

    • 使用可视化仪表板深入了解您的存储库。

    • 将您的应用程序部署到 AWS、Azure、Google Cloud、Heroku ……

    言鼎科技

    The End