node.js - 对于后端 NodeJS 应用程序,我是否应该跳过 AWS CodePipeline 上的构建阶段
问题描述
我编写了一个后端 NodeJS (Typescript) 应用程序(连接到数据库等,通常的东西),并成功创建了一个 CodePipeline,它在目标 EC2 上提取源,然后运行 npm install & start。
我的一个朋友指出我跳过了构建阶段,我真的想不出一个有效的解释。我知道我尝试过但最终放弃了,但不幸的是我找不到证明这样做的理由。
所以我的问题是:后端应用程序应该像前端应用程序一样构建吗?有没有关于如何做的好资源?
另外,构建阶段的意义何在?与直接在 EC2 上提取源代码并编译它们有何不同?只是为了节省编译时间吗?
非常感谢!
解决方案
顾名思义,构建阶段用于构建二进制/工件。举个例子:在部署ECS之前,我们需要构建docker镜像,并且需要像ECR一样上传到registry。使用 CodeBuild(Build Stage)可以实现这个 docker 镜像的创建和上传。然后使用 Deploy Stage 将 docker 映像部署到 ECS。另一个示例是为 Java 应用程序构建 jar 文件并将其上传到 S3 以将其部署到 Lambda。在 CodeBuild 中,您可以安排执行顺序。首先执行源代码分析然后构建创建然后自动化单元测试等...另外请注意,您也可以使用构建阶段进行部署。没有限制。考虑 Java 示例。创建 Jar 文件后,CodeBuild 将其上传到 S3,然后 CodeBuild 将此 Jar 文件部署到相应的 Lambda。
Also, what's the point of the Build stage? How is it really different
from just pulling the sources & compiling them on the EC2 directly? Is
it just to save compilation time?
注册您的上述观点:
CodeBuild 为每个构建启动一个新的 docker 容器。所有构建命令都在这个 docker 容器内执行(CodeBuild 读取一个名为 buildspec.yml 的文件。您需要在 buildspec.yml 中添加构建/部署命令,并且需要在代码存储库中维护此文件。CodeBuild 执行本文中提到的命令文件。)对于您的情况,npm build 命令将在此 docker 内执行。然后它创建构建并将其上传到您的 EC2。执行完所有操作后,CodeBuild 会销毁此 docker 映像。
通过使用这种方法
- 您可以跟踪所有构建的记录。
- 保持 EC2 清洁。这种方法避免了在 EC2 中安装不必要的软件包。
- 易于安装和配置构建所需的运行时。
推荐阅读
- c++ - 带矩阵的无向图的直径
- excel - 根据文件路径重命名文件并另存为 CSV 文件
- machine-learning - 如何在保存为 .pth 文件的 AI 模型上获取层执行时间?
- python - 用于从字符串 excel 数据中提取性别的用户定义函数
- java - 如何编写不可变列表
到一个文件? - c# - 如何在服务器端检查 Google ReCaptcha 是 v2 还是 v3
- migration - 如何将网站从共享主机迁移到 VPS?
- python - Python,Windows 10 上的 Colorama - 添加 init(autoreset=True) 颜色后消失
- reactjs - 可拖动的材质 UI 选项卡
- php - Symfony 未捕获的 PHP 异常 ErrorException 在 session_start()