MENU
category

CodePipelineのソースでGitHubとCodeCommitを併用することは可能?

結論としては、可能。

開発の体制として、アプリケーションの開発部隊は、GitHub上でアプリケーションを管理。インフラ部隊はGitHubを利用していない。このような場合、アプリケーション部隊の利用するリポジトリのファイル構成をいじらずに、パイプラインの実行に必要なファイル(buildspec.ymlなど)を配置したいと思い、以下の構成で実現しました。

目次

実装例(Blue/Greenデプロイの場合)

CodePipelineのソースステージにおける、ソースを以下2つ定義する。

  • アプリケーションソースの格納:GitHub
  • パイプラインの実行に必要な以下のファイル:CodeCommit
    • appspec.yaml
    • taskdef.json
    • buildspec.yml


ここで、一つ疑問がわく。buildspecの「docker build」で指定するDockerfileは、buildspec.ymlが格納されたソース(CodeCommit)と異なり、アプリケーションソース側(GigHub)に存在しているが、どうやって参照すればいいのか・・?

結論、以下のように変数で参照することができる。

プライマリソースアーティファクトのディレクトリは、$CODEBUILD_SRC_DIR で参照できるようになる。他のすべての入力アーティファクトのディレクトリは、$CODEBUILD_SRC_DIR_yourInputArtifactName で参照できる。

例えば、以下のケースの場合。

  • Github を使用したソースアクションの出力アーティファクト名を SourceAppArtifact として指定
  • Github を使用したソースアクションの出力アーティファクト形式を [デフォルト] として設定
  • アプリケーションソースのディレクトリ直下に Dockerfile が存在

この場合、以下のようなコマンドからビルドすることができる。

docker build -t $REPOSITORY_URI:$IMAGE_TAG $CODEBUILD_SRC_DIR_SourceAppArtifact

■ 参考資料
入力アーティファクト
https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/action-reference-CodeBuild.html#action-reference-CodeBuild-input

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次