10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

メモ: CodePipelineでキックしたCodeBuildでgit submoduleを使う

Posted at

タイトル通りのメモです。元ネタはここです。

CodePipelineでCI/CDを組んでいて、CodeStar Connectionsを使ってCloneしたリポジトリの中のsubmoduleを後続のCodeBuildで使いたかったのですが、なかなか解決策にたどり着けませんでした。

結論から言うと、env.git-credential-helperを使ってごくシンプルに実現可能です。

buildspecの例は以下です。

version: 0.2

env:
  git-credential-helper: yes

phases:
  pre_build:
    commands:
      - git submodule update --init --recursive

注意点としては、Output artifact formatをFull clone(CloudFormationでは CODEBUILD_CLONE_REF)を指定する必要があることが挙げられます。これを指定しないと.gitフォルダが落ちて来ず、gitコマンドを使うことができません。

他の選択肢

この手法が使えない場合は、別のやり方を模索する必要があります。
CI用のユーザを新規に作成し、そのユーザのトークンをSSMパラメータ等を用いてCodeBuildに持ってくる方法などがあるようですが、やはりやや大仰に感じられますね。

また、CodeBuildにはGitSubmodulesConfig.FetchSubmodulesというオプションもあるのですが、こちらはPipelineでトリガーする場合には使えないようです。

Git submodules config is not supported for CodePipeline source

10
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?