CodeBuildでGitHubリポジトリのメタデータ(ブランチ、タグetc)を取得する方法


解決したいこと

CodeBuildからGithubのタグを取得して、CodeArtifactのタグに流用したいと思ったのでやってみました。前提としてCodePipelineでCI/CDを構成することとします。

解決方法

CodePipelineのソースステージでGitHub(バージョン2)を選択すると「完全クローン」を選択することができる。このオプションを選択すると内部的にgitリポジトリのクローンを作成するので、コミット履歴やメタデータを取り込めるようになります。

手順

CodePipelineのソースステージの設定でGitHub(バージョン2)を選択

すると出力アーティファクト形式に「完全クローン」の項目が出るので選択。
これを選択するとロールにcloneを許可するロールを作成する必要があるので合わせてこちらを実施。

あとは適当に動作確認ができるようにCodeBuildに設定を追加。

version: 0.2

env:
  git-credential-helper: yes
phases:
  install:
    runtime-versions:
      nodejs: 10
  pre_build:
    commands:
      - ls -lt
  build:
    commands:
      - git status
      - git describe --all

git describe --allの実行結果が出ているのでメタデータの取得ができているのが確認できました。あとは煮るなり焼くなり何なりと。

参考

  1. 公式チュートリアル
  2. GitHubアクセス許可を追加する/CodeBuildからgitcloneできるようにする権限付与設定