AWS CodeCommitとGitlabのミラーリング


背景

GitlabとAWS CodeBuildを組み合わせてCIをしようとしましたが、入力SourceにGitlabを選択することができませんでした。
(Amazon S3 バケット、CodeCommit、GitHub、GitHub Enterprise、Bitbucketが対応している。)

しかし、とある理由でGitlab CEAWSCodeCommitしか選べない状況でした。
当初CodeCommitを使って対応しましたが、使いづらかったのでGitlabからミラーリングするようにしたお話です。

Gitlabのバージョン

GitLab CE v10.8以降

v10.8以降からCE版でもリポジトリのミラーリングが可能になりました。
v10.8以前はGitlab→AWS API Gateway→lamda→S3Gitlab→Jenkins→CodeBuildなど対応コストが少し高かったです。
ググると、この辺りの方法を用いた記事が上位にヒットするので、今はもっと簡単にできるよ!という意味で発信してます。

ミラーリング方法

  • 書くつもりでしたが、調べたところ、以下の記事が大変丁寧にまとまっていたため参照下さい。
  • 流石に味気ないので、追加情報を示します。
    • Git credentialsのユーザ名で、CommitのAuthorが上書きされることはありません
    • Git credentialsを発行したIAMユーザにSourceIP制限が有る場合、Gitlab CEが動作しているサーバのIPが設定されていなければミラーリングできません。
      • 私は詰まりました。。

問題点

CodeCommitへの反映まで、最大5分程度の遅延が有ります。
CICDパイプラインをリアルタイムに動かしたい場合は、Only protected branches設定を有効にするか、CodeCommit等のAWS正式対応なリポジトリを選ぶか、GitlabCIなどを使って独自にミラーリングする仕組みを構築する等の対応が必要です。。

参考文献