我写了一个后端NodeJS(Typescript(应用程序(连接到数据库等,这是常见的东西(,并成功创建了一个CodePipeline,它在目标EC2s上拉取源,然后运行npm install&开始
我的一个朋友指出,我跳过了构建阶段,我真的无法想出一个有效的解释。我知道我试过了,但最终放弃了,但不幸的是,我找不到这样做的理由
所以我的问题是:后端应用程序应该像前端应用程序一样构建吗?关于如何做到这一点,有什么好的资源吗?
此外,构建阶段的意义何在?这与仅仅提取来源有什么不同;直接在EC2上编译?这只是为了节省编译时间吗?
非常感谢!
顾名思义,Build阶段用于构建二进制/工件。举个例子:在部署ECS之前,我们需要构建docker镜像,并需要像ECR一样将其上传到注册表。使用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构建命令将在此docker中执行。然后它创建构建并上传到您的EC2。执行完所有操作后,CodeBuild将销毁此docker映像。
通过使用这种方法
- 您可以跟踪所有构建的记录
- 保持EC2清洁。这种方法避免了在EC2中安装不必要的软件包
- 易于安装和配置构建所需的运行时