【AWS】CodePipelineからCodeBuildを実行した際に”not a git repository”エラーが発生する

AWS

やりたかったこと

CodeCommit→CodeBuildといったCI/CDパイプラインをCodePipelineを用いて構築していました。
コミットに対するGitタグを、CodeBuild内でビルドしたDockerイメージのタグとして利用しようとしていました。

事象

CodeBuild単独で実行すると成功することを確認して、いざCodePipelineで実行…‼︎
とすると、エラーが発生しCodeBuildが失敗していました。エラーメッセージは以下の通り。
fatal: not a git repository (or any parent up to mount point /codebuild)

原因

もともと、Sourceステージの設定時に出力アーティファクト形式を、「CodePipelineのデフォルト」に設定していましたが、これが原因でした。
image.png
下にちゃんと書いてあるのですが、「CodePipelineのデフォルト」を選択すると、ソースをzip形式でまとめたものがアーティファクトとして出力され、gitメタデータは含まないようです。
そのため、この出力アーティファクトをもとに後続のCodeBuildがgitコマンドを打つと、gitリポジトリでないためエラーになったというわけですね。

解決策

出力アーティファクト形式を「完全クローン」に設定することで解決しました。
「完全クローン」に設定することで、gitクローンが作成されるため、CodeBuild内でgitコマンドを使用できるようになりました。
スクリーンショット 2021-11-17 22.26.45.png

まとめ

  • Sourceステージ以降でgitコマンドを使用する場合は「完全クローン」を指定する
  • 書いてあることはちゃんと読まないとハマる

コメント