Cloud Source Repositories への GitLab リポジトリのミラーリング

Google Cloud Source Repositories と GitLab リポジトリのミラーリング方法が少し複雑だったのでまとめました。

始める前に

  1. GCPプロジェクト作成
  2. 課金設定を有効にする
  3. gcloud コマンドでプロジェクトIDを選択し確認
    # プロジェクトIDを選択(セット)
    $ gcloud config set project PROJECT_ID
    
    # 選択されたか確認
    $ gcloud config get-value project
    
  4. Cloud Source Repositories API を有効にします
    $ gcloud services enable sourcerepo.googleapis.com
    

GitLab の Git リポジトリを用意

ミラーリング対象のリポジトリを用意します。
既存のリポジトリがあるなら、そのプロジェクトページを開いておきます。

新規で作る場合も同様に、作成後のページを開いておきます。

Cloud Source Repositories の Git リポジトリ作成

以下、コマンドで CSR に Git リポジトリを作成します。

$ gcloud source repos create REPO_NAME

静的認証情報の生成

GitLab のリポジトリミラーリング設定をする時に利用する「静的認証情報(リポジトリURL + パスワード)」を CSR のコンソール上で生成します。

  1. CSRの該当リポジトリページに移動
  2. [手動で生成した認証情報] > [Git認証情報を生成して保存します] を選択
  3. Google の OAuth2.0 認証画面で承認する
  4. 承認後に表示される [Configure Git] のスクリプトをコピーする
  5. ターミナルに貼り付けて実行 (~/.gitcookies に保存される)
  6. ~/.gitcookies に書き込まれた内容から リポジトリURL と パスワード を抽出する(以下スクリプトを保存して実行)
    #!/bin/bash if [ $# -ne 1 ] ;then echo "リポジトリ名を指定してください。" 1>&2 exit 1 fi # 【パスワードの抽出】 echo "password: " grep 'source.developers.google.com' ~/.gitcookies | tail -1 | cut -d= -f2 CSR_USER=$(grep 'source.developers.google.com' ~/.gitcookies | \ tail -1 | cut -d$'\t' -f7 | cut -d= -f1) CSR_REPO=$(gcloud source repos describe $1 --format="value(url)") # 【リポジトリURLの抽出】 echo "repo url: " echo $CSR_REPO | sed "s/:\/\//:\/\/${CSR_USER}@/"
    # 実行例
    $ ./gcloud_configure_git.sh REPO_NAME
    password:
    1//0gI_x-iHtpfdsF....
    
    repo url:
    https://git-REPO_USER@source.developers.google.com/p/PROJECT_ID/r/REPO_NAME
    

ミラーリングの設定

ハイライトされた部分が上記スクリプトから抽出した値です。

  1. ミラーリングする GitLab プロジェクトが表示されているブラウザ ウィンドウに戻ります。
  2. 画面左側のメニューで、[Settings] > [Repository] をクリックします。
  3. メインページ本文の [Repository Settings] セクションで、[Mirroring repositories] という見出しを見つけて、そのセクションの [Expand] ボタンをクリックします。
  4. 表示される [Mirror a repository] セクションで、次のフォーム値を入力します。
    • Git repository URL: Cloud Shell からユーザー名を含むリポジトリ URL をコピーします。
    • Mirror direction: [Push]。
    • Authentication method: [Password]。
    • Password: Cloud Shell からパスワードをコピーします
    • [Only mirror protected branches] はオフのままにします。

設定は以上です。

GitLab に Git Push して CSR に反映されるかを試します。

コメント

このブログの人気の投稿

Vue.jsでimgタグのsrcをバインドさせる際の注意点

Windowsコマンドプロンプトをかっこよくする

vscodeとPlantUMLでロバストネス図を書く