※ 2020年7月8日現在
※ AWSにはフィードバック済み
イメージのバージョンを上げると解決する。
現象
GitHubとAWS CodeBuildを連携して、テストの自動実行をしていた。
プロジェクトで利用しているNode.jsのバージョンを10
から12
に上げる機会があり、同じくCodeBuildで扱うNode.jsのバージョンも上げることにした。
CodeBuildで扱うNode.jsは、CodeBuildでサポートされているランタイムを利用していた。
また、バージョンはbuildspec.yml
で管理していた。
12.xに対応していない可能性があるので、ドキュメントも念のため確認した。
https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html
phases/install/runtime-versions
The following supported runtimes can be specified.
Runtime name | Version | Specific version | Specific major and latest minor version | Latest version | Image/Images |
---|---|---|---|---|---|
nodejs | 12 | nodejs: 12 | nodejs: 12.x | nodejs: latest | All Amazon Linux 2 images Ubuntu standard:3.0 Ubuntu standard:4.0 |
(追記)AWSにフィードバックを送信したところ、"All Amazon Linux 2 images"の部分を"All supported Amazon Linux 2 images"に変更してくれました。
イメージはamazonlinux2-x86_64-standard:1.0
を利用していた。
表のImage/Images
の値には、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
CIを実行してみたところ、エラーが発生しなくなった!
どうやらAWSのドキュメントの修正漏れだったようだ。(もしくは私が何か見逃しているか)