現象
buildspec.yml で CodeBuild を動かすと、以下エラーが発生してビルドがストップする。
[Container] 2019/10/16 11:28:42 Phase complete: DOWNLOAD_SOURCE State: FAILED
[Container] 2019/10/16 11:28:42 Phase context status code: YAML_FILE_ERROR Message: did not find expected comment or line break at line 20
環境
- buildspec.yml の version: 0.2
原因
エラーが示した line 20 は以下の $DRYRUN
... の行。
build:
commands:
- [[ $DRYRUN != 1 ]] || bash -c "./deploy.sh -e ${BUILD_STAGE} ${MODE}"
当該行は、そもそも YAML の構文に従っていなかった。具体的には論理和 ||
の部分。
|
が複数行を記述するための予約文字になっているため、文字列として認識されない。
同様に &&
も &
がアンカーの予約文字になっている。
対応
ダブルクオートでくくることで構文エラーを回避できる。
- "[[ $DRYRUN != 1 ]] || bash -c \"./deploy.sh -e ${BUILD_STAGE} ${MODE}\""