CodePipeline経由と直接実行の場合でCodeBuildのファイルパーミッションが異なるという話

CodeBuildでソースにGitHubを指定した場合のビルドで、

  • 直接CodeBuildで「ビルドの開始」を押した時
  • CodePipelineのBuildから実行された時

のそれぞれで、ファイルパーミッションが変わってしまっている?という話です。

Java(Gradle)でビルドするジョブで、後者の場合 gradlew の実行権限が付与されていないために、ビルドエラーになることで気づきました。

buildspec.yml

以下のように、buildフェーズの際にカレントディレクトリのファイル一覧を出力させてデバッグします。

version: 0.2

phases:
  build:
    commands:
      - ls -la
      - ./gradlew bootJar

artifacts:
  files:
    - build/libs/*.jar

cache:
  paths:
    - '/root/.gradle/**/*'

直接実行

f:id:jappy:20190114145654p:plain

gradlew に実行可能権限が付いています。

CodePipeline経由で実行

f:id:jappy:20190114145609p:plain

gradlew に実行可能権限が付いていません。
実行前に付与してあげれば済むはずですが、一応覚えておきたいポイントだなと思いました。