こうこく
作 ▸

AWS CodeBuildのbuildspec.ymlをルートじゃなくてサブディレクトリ以下に置く場合

CodeBuildのビルド設定ファイル buildspec.yml は基本的にはソースディレクトリのルートに置くことになっているが、人生いろいろあるのでサブディレクトリ以下に置くこともあるかもしれない

CodeBuild のビルド仕様に関するリファレンス - AWS CodeBuild

例えば画面とAPIのソースコードが同じリポジトリに入ってるとかで frontend/deploy/buildspec.yml だったりするかもしれない

そんなときでも buildspec.yml の中身はカレントディレクトリがルートであることを念頭に書く

frontend/deploy/buildspec.yml
version: 0.2
phases:
  install:
    runtime-versions:
      nodejs: 12
    commands:
      # frontend/package.json があり、ビルドしたファイルは frontend/dist 以下に生成されるとする
      - cd ./frontend
      - npm install --production
      - npm run build
artifacts:
  files:
    # ルートから見た場所を指定する
    - frontend/dist/*
  # ↓これをyesにすると中間のパス (ここでは frontend/dist) を無視して対象のファイルだけを出力できる
  discard-paths: yes

こうすると BuildArtifact の中身は frontend/dist 以下のファイルだけがキレイに入ってる

この例の BuildArtifact はCodePipelineのデプロイステージでS3に直接お出ししてSPAにする感じです

この記事に何かあればこちらまで (非公開)