Git
GitLab
gcp

GitlabからGCP Cloud Source Repositories へ連携する

はじめに

Gitlab から Cloud Source Repositories へソースコードを同期します。
同期したあとは、Cloud Source Repositories から Cloud Buildに連携して、デプロイ自動化を行ったりできます!

※ プロバイダが、GitHubかBitBucketであれば、GCP標準で外部リポジトリ接続のサービスが提供されています。

手順

【GCP側操作】 リポジトリ作成

  • コンソール > Cloud Source Repositories で 新しいリポジトリを作成します
  • ここでは、 新しいリポジトリを作成 を選択します。 (Gitlabは外部リポジトリ連携が標準で不可のため)

image.png

  • 以下を指定
    • リポジトリ名
    • プロジェクト: GCPのプロジェクトを指定

image.png

【GCP側操作】 Gitlabからのアクセスするための user/passを発行

  • リポジトリにコードを追加 ページで以下を選択
    • ローカル Git リポジトリからコードを push
    • 手動で生成した認証情報

image.png

  • Git 認証情報を生成して保存します。 をクリック
    • アカウント確認があるので、OKして進む
    • Google Cloud Developer からの権限承認がでるので、OKしてすすむ

image.png

  • コピー&ペーストできるコマンドを ターミナルで実行 (※ bashでやるのがよいです。私はzshだとうまく行かなかったので)
eval 'set +o history' 2>/dev/null || setopt HIST_IGNORE_SPACE 2>/dev/null
 touch ~/.gitcookies
 chmod 0600 ~/.gitcookies

 git config --global http.cookiefile ~/.gitcookies

 tr , \\t <<\__END__ >>~/.gitcookies
source.developers.google.com,FALSE,/,TRUE,****************************************************
__END__
eval 'set -o history' 2>/dev/null || unsetopt HIST_IGNORE_SPACE 2>/dev/null
  • ~/.gitcookies にパスワードが生成されています。 これを後ほど Gitlab側の操作で使用します
    • サンプル: (= で区切られています)
    • [user].gmail.com : user
    • [password] : password
$ cat .gitcookies 
source.developers.google.com    FALSE   /   TRUE    2147483647  o   [user].gmail.com=[password]

【Gitlab側操作】 同期設定を行う

  • Setting > Repository を選択
  • 以下を設定して、 Mirror repository をクリック

image.png

項目
Git repository URL https://[user].gmail.com@source.developers.google.com/p/[project]/r/[repositry] "@の前にuser (例はgmail)" URLは
Mirror direction Push Gitlab → GCP
Authentication method Password
Password [password]
  • くるくるマークをクリックして、Errorが発生せず、 Last update の時間が表示されれば、ソースは同期完了です!

image.png