背景
GitlabとAWS CodeBuildを組み合わせてCIをしようとしましたが、入力SourceにGitlabを選択することができませんでした。
(Amazon S3 バケット、CodeCommit、GitHub、GitHub Enterprise、Bitbucketが対応している。)
しかし、とある理由でGitlab CE
かAWSCodeCommit
しか選べない状況でした。
当初CodeCommitを使って対応しましたが、使いづらかったのでGitlabからミラーリングするようにしたお話です。
Gitlabのバージョン
GitLab CE v10.8以降
v10.8以降からCE版でもリポジトリのミラーリングが可能になりました。
v10.8以前はGitlab→AWS API Gateway→lamda→S3
、Gitlab→Jenkins→CodeBuild
など対応コストが少し高かったです。
ググると、この辺りの方法を用いた記事が上位にヒットするので、今はもっと簡単にできるよ!という意味で発信してます。
ミラーリング方法
- 書くつもりでしたが、調べたところ、以下の記事が大変丁寧にまとまっていたため参照下さい。
- 流石に味気ないので、追加情報を示します。
-
Git credentials
のユーザ名で、CommitのAuthorが上書きされることはありません。 -
Git credentials
を発行したIAMユーザにSourceIP制限が有る場合、Gitlab CEが動作しているサーバのIPが設定されていなければミラーリングできません。- 私は詰まりました。。
-
問題点
CodeCommitへの反映まで、最大5分程度の遅延が有ります。
CICDパイプラインをリアルタイムに動かしたい場合は、Only protected branches
設定を有効にするか、CodeCommit等のAWS正式対応なリポジトリを選ぶか、GitlabCIなどを使って独自にミラーリングする仕組みを構築する等の対応が必要です。。