如果无法使用 AWS CodeBuild 支持的运行环境,请采取对应的解决措施
※ 截至2020年7月8日
※ AWS已收到反馈
升级图像版本即可解决问题。
现象
通过将GitHub和AWS CodeBuild进行整合,实现了自动执行测试的功能。
在项目中有机会将使用的Node.js版本从10升级到12,决定同时将CodeBuild中处理的Node.js版本也进行升级。
CodeBuild使用的Node.js是使用CodeBuild支持的运行时版本。同时,版本是通过buildspec.yml进行管理的。
有可能不支持12.x版本,所以我也查看了文件以确保。
以下是可以指定的支持运行时。
运行时名称
版本
具体版本
特定主要版本和最新次要版本
最新版本
镜像/镜像nodejs
12
nodejs: 12
nodejs: 12.x
nodejs: latest
所有Amazon Linux 2镜像Ubuntu标准:3.0Ubuntu标准:4.0(追加)在给AWS发送反馈后,他们将”All Amazon Linux 2 images”更改为”All supported Amazon Linux 2 images”。
图像使用了amazonlinux2-x86_64-standard:1.0进行操作。
在图像/图片的值中写着”All Amazon Linux 2 images”。
看来似乎可以成功将其升级到12.x版本。
于是,我尝试将buildspec.yml的内容更改如下。
version: 0.2
phases:
install:
runtime-versions:
- nodejs: 10
+ nodejs: 12
pre_build:
commands:
- npm install
build:
commands:
- npm test -- --coverage
artifacts:
files:
- coverage/lcov-report/**/*
当我立即执行CI时,出现了一个错误。
YAML_FILE_ERROR: Unknown runtime version named '12' of nodejs. This build image has the following versions: 10, 8
12版本没有得到支持。虽然文档中提到了支持,但为什么会这样呢?
可能之前使用了不正确的12描述方式。尝试使用12.x进行修正并重新执行,但这次却出现了不同的错误。
YAML_FILE_ERROR: Major version of alias '12.x' is not supported in runtime 'nodejs'.
处理
也许是形象有问题。我试着修改了以下使用的形象。
amazonlinux2-x86_64-standard:1.0 → amazonlinux2-x86_64-standard:3.0
亚马逊Linux2-x86_64标准版1.0 → 亚马逊Linux2-x86_64标准版3.0
尝试执行这个操作后,不再出现错误!看起来是AWS文档的一处遗漏修正。(或者是我漏看了什么)