使用GitHub Actions部署Next.js应用程序“HNG Boilerplate”的文档

💡 原文英文,约700词,阅读约需3分钟。
📝

内容提要

本指南提供了使用GitHub Actions的CI/CD流水线部署Next.js应用程序的逐步说明,包括构建、上传和部署应用程序。

🔎

延伸解读

工作流触发与依赖关系

构建工作流在推送到 dev 分支时触发,且仅当仓库不是 fork 时运行。部署工作流通过 workflow_run 事件监听构建工作流的完成,并检查其结论是否为 success,只有成功后才执行部署。这种设计确保了部署仅在构建通过后发生,避免了因构建失败导致的部署错误。

构建产物的处理与传输

构建工作流使用 tar 命令将 .next 和 public 目录打包为 boilerplate.tar.gz,并通过 actions/upload-artifact 上传。部署工作流下载该工件后,使用 appleboy/scp-action 将压缩包和环境变量文件传输到服务器的 /tmp/expressjs 目录。这种分离构建与部署的方式提高了流程的清晰度和可重用性。

服务器端部署与进程管理

部署工作流通过 SSH 在服务器上执行一系列命令:安装 PM2、创建目录、解压工件、移动环境变量文件,并将 .next/standalone 中的文件复制到当前目录。最后使用 PM2 重启名为 nextjs_boilerplate 的应用,并更新环境变量。PM2 确保了 Node.js 应用在后台持续运行。

Nginx 配置与 SSL 证书

Nginx 作为反向代理,将域名请求转发到本地运行的应用端口。配置中设置了 proxy_pass 和必要的头部信息以支持 WebSocket 升级。使用 Certbot 自动获取并安装 SSL 证书,通过 sudo certbot --nginx -d 命令简化了 HTTPS 的配置过程,提升了安全性。

❓

Q&A

如何使用GitHub Actions部署Next.js应用程序?

使用GitHub Actions部署Next.js应用程序需要设置CI/CD流水线,包括构建应用程序、上传工件和在配置了Nginx的服务器上进行部署。

部署'HNG Boilerplate'需要哪些前提条件?

需要一个GitHub仓库、SSH访问的服务器、安装了Nginx的服务器和指向服务器IP地址的域名。

在部署过程中如何处理环境变量?

在部署工作流中,通过解码环境变量的秘密并将其写入.env文件来处理环境变量。

如何配置Nginx以支持'HNG Boilerplate'?

需要编辑Nginx的站点配置,设置server_name和proxy_pass,以将流量路由到运行在服务器上的'HNG Boilerplate'应用程序。

构建和上传工作流的主要步骤是什么?

主要步骤包括设置Node.js、安装依赖、构建应用程序、归档生产工件并上传这些工件。

如何使用Certbot为域名获取SSL证书?

可以使用命令'sudo certbot --nginx -d yourdomain.com'来自动获取和安装SSL证书。

🏷️

标签

➡️

继续阅读