如何使用 CircleCI 設(shè)置 CI/CD 并將您的 NodeJS 項(xiàng)目部署到遠(yuǎn)程服務(wù)器

言鼎科技 2023-05-05 489
如何設(shè)置-ci-cd-with-circleci.png

在本文中,我將與您分享 CI/CD 的概念并將其應(yīng)用到實(shí)際場景中。

目錄:

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

為什么選擇 CircleCI

Node.js 演示 — Bitbucket — CircleCI

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

CI/CD 代表持續(xù)集成和持續(xù)交付。

  • 持續(xù)集成是將來自多個開發(fā)人員的所有代碼更改自動合并到一個共享存儲庫中的過程。然后每個集成都由一個自動化工具進(jìn)行驗(yàn)證,該工具會檢查代碼風(fēng)格并在每次構(gòu)建之前運(yùn)行測試。

  • 持續(xù)交付通過在構(gòu)建階段之后將所有代碼更改部署到測試環(huán)境和/或生產(chǎn)環(huán)境來擴(kuò)展持續(xù)集成。換句話說,全新的功能、錯誤修復(fù)……將經(jīng)常交付給測試人員/用戶。

→ 這種 CI/CD 的做法大大降低了開發(fā)人員手動操作的成本,從而提高了生產(chǎn)力并縮短了部署時間。

實(shí)際場景:

  • 一群從事NodeJS 項(xiàng)目的開發(fā)人員

  • 開發(fā)人員的所有代碼更改都被推送到 Bitbucket 存儲庫

  • 隨著每次提交被推送到存儲庫,CircleCI 將被觸發(fā)。它將檢查最新代碼、安裝依賴項(xiàng)并運(yùn)行測試

  • 畢竟測試通過,CircleCI通過SSH部署代碼到遠(yuǎn)程服務(wù)器

 為什么選擇 CircleCI 而不是 Jenkins(和其他替代品)

除了許多其他 CI/CD 工具外,在本文中,我只將 CircleCI 與 Jenkins 進(jìn)行比較——Jenkins 是有史以來最流行的 CI/CD 工具。

首先,Jenkins 和 CircleCI 之間最明顯的區(qū)別可能是您需要一個服務(wù)器來托管 Jenkins,這需要管理知識和大量時間進(jìn)行配置/定制。同時,CircleCI 是一個云原生平臺,這意味著您不需要設(shè)置任何服務(wù)器,它開箱即用。

其次,Jenkins 的界面比較陳舊和不直觀,而 CircleCI 的設(shè)計(jì)非常友好。在配置方面,使用 CircleCI,yml 語法清晰易懂,便于開發(fā)人員閱讀。

總之,CircleCI 是一個輕量級的 CI/CD 平臺,它支持幾乎所有開箱即用的編程語言。開發(fā)人員還可以部署到 AWS、Azure、Google Cloud、Heroku 和許多其他云托管服務(wù)。

演示

先決條件:

  • 存儲在 Bitbucket 存儲庫中的 Node.js 項(xiàng)目

  • CircleCI賬戶

  • 可以通過 SSH 連接的遠(yuǎn)程服務(wù)器。在該服務(wù)器上,您必須安裝git、Node.js 和pm2(推薦用于管理Node.js 進(jìn)程的工具)

  • SSH基礎(chǔ)知識

如何使用 CircleCI 設(shè)置 CI/CD 并將您的 NodeJS 項(xiàng)目部署到遠(yuǎn)程服務(wù)器

設(shè)置

1. 配置 CircleCI 以跟蹤 Bitbucket 存儲庫上的提交

  • 在項(xiàng)目的根目錄下創(chuàng)建一個名為 .circleci 的文件夾,將 config.yml 文件添加到該文件夾,內(nèi)容如下:

有關(guān)如何配置 CircleCI 的更詳細(xì)說明,請參閱此文檔。

  • 將您的 Bitbucket 存儲庫添加到 CircleCI 項(xiàng)目

→ 現(xiàn)在,CircleCI 能夠執(zhí)行config.yml 文件中指定的構(gòu)建作業(yè)。

2. 配置遠(yuǎn)程服務(wù)器,使 CircleCI 可以執(zhí)行部署作業(yè)

通過在終端上執(zhí)行以下命令,生成我們將在整個教程中使用的 SSH 密鑰對:

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

你會被問幾個問題,記得讓密碼為空(在我寫這篇文章的時候,CircleCI 要求密碼為空)。

→ 結(jié)果是 2 個文件:id_rsa(私鑰)和id_rsa.pub(公鑰)

  • 在 Bitbucket repo 設(shè)置中,檢查是否已自動添加 CircleCI Deploy Key,然后復(fù)制id_rsa.pub并在那里添加另一個密鑰

如何使用 CircleCI 設(shè)置 CI/CD 并將您的 NodeJS 項(xiàng)目部署到遠(yuǎn)程服務(wù)器

  • 在 CircleCI 項(xiàng)目設(shè)置中,復(fù)制 id_rsa 并在那里添加您的私鑰

如何使用 CircleCI 設(shè)置 CI/CD 并將您的 NodeJS 項(xiàng)目部署到遠(yuǎn)程服務(wù)器

 

  • 在您的遠(yuǎn)程服務(wù)器中,通過執(zhí)行以下命令將您的公鑰附加到~/.ssh中的authorized_keys

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

     

    • 在您的遠(yuǎn)程服務(wù)器中,將您的私鑰復(fù)制到 ~/.ssh 文件夾并修改 ~/.ssh/config 文件以包括:

    托管 bitbucket.org主機(jī)名 bitbucket.org身份文件 ~/.ssh/id_rsa

     

    • 通過執(zhí)行以下命令將您的私鑰添加到 ssh-agent:

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

     

    → 現(xiàn)在每次將代碼推送到 Bitbucket 時,CircleCI 都會從那里提取代碼并在他們的云上執(zhí)行構(gòu)建作業(yè)。之后,它通過 SSH 連接到遠(yuǎn)程服務(wù)器來執(zhí)行部署作業(yè),然后在遠(yuǎn)程服務(wù)器上自動運(yùn)行 deploy 命令以從 bitbucket 中拉取代碼,然后 pm2 以啟動/重新啟動 config.yml 文件中指定的進(jìn)程。

    ssh -p your_port_number your_user@your _host"cd ../path/to/your/project;混帳拉;pm2 啟動 hello_sts";

     

    你完成了!

    好工作!您已經(jīng)使用 CircleCI 成功地自動化了開發(fā)和部署過程。現(xiàn)在,無需執(zhí)行手動任務(wù),您的團(tuán)隊(duì)可以毫不費(fèi)力地及時交付產(chǎn)品。

    本基礎(chǔ)教程旨在為您提供 CircleCI 的一些基礎(chǔ)知識,以啟動您的 DevOps 之旅。要掌握 CircleCI 的強(qiáng)大功能,請直接進(jìn)入其文檔。功能是無窮無盡的,有許多功能等待您去探索:

    • 一流的 Docker 支持。

    • 作業(yè)編排的工作流。

    • 使用 SSH 調(diào)試。緩存。

    • 使用可視化儀表板深入了解您的存儲庫。

    • 將您的應(yīng)用程序部署到 AWS、Azure、Google Cloud、Heroku ……

    言鼎科技

    The End