🔻

GitLab.comでのGroup運用と外部サービス(Unity Cloud Build)連携

に公開

はじめに

クラウドサービスのGitLab.comをBronze Planで契約して使っています。開発チームの仕事はUnityアプリの制作だったりするので、masterへのマージ毎に、やはりクラウドサービスのUnity Teams AdvancedのCloud Buildでビルドしてたりします。

運用もうまくいって安心しきっていた2018年9月上旬のある日、UnityのCloud Buildが延々と失敗し始め、正常化へ向けた試行錯誤の道のりが始まるのでした。

ビルド環境の構成

・GitLab.com [Bronze Plan]でソースを管理
・LFSは、GitLab.comサービス提供のものを使っています
・Unity Teams AdvancedのCloud BuildでUnityアプリをビルド
 → GitLab.com のmasterブランチを監視して自動ビルドしています

#気を付けること
では、結論から。

  • Unity Cloud BuildのGitLab.com参照設定は、gitではなくhttpsで行いましょう

  • GitLab.comのユーザ割り当ては、所属Groupによる継承に頼らずprojectに直接ユーザを割り当てましょう

以上です

#気を付けないと何が起こるか

× Unity Cloud BuildからGitLab.comのリポジトリを取得するのにgitプロトコルを使っていると

  • こんなエラーに悩まされました
「Error downloading object: xxx.png : batch request: ssh_exchange_identification: Connection closed by remote host: exit status 255」

→cloneは成功するのですが、checkoutで失敗します。LFSサーバからファイルをある程度の本数ダウンロードしてきて安心していると、途中で「Connection closed by remote host」されます。
 →LFSを使わないのならば問題ないと思いますが、LFS使いますよねUnityのリソースとかに。
 →gitではなくhttpsを使えば問題ないよ。とのこと(GitLab.comのサポート担当)
 →それまで問題なく動作していたcheckoutが失敗し始めた原因は、実は調査中断したままです。(GitLab.comがGCPへ移行した影響だと思いましたよその時は・・・)

× GitLab.comにはGroupという機能があり、開発メンバーはこのGroupに所属させますよね? そうすれば、Group内に置いたproject毎にいちいちメンバーアサインしなくて済みますし

  • Groupを介して間接的にprojectへのアクセス権限を与えると、Unity Cloud Buildの参照先一覧に、そのprojectが出てこなくて詰みます
Unity Cloud Buildの設定で、
GitLab authentication の機能を使い、Group Repositories を HTTPS で指定しようとする。
 1) Navigate to the Cloud Build Config Page of your Project
 2) Click on Edit Source Control
 3) Select your repository <---- ここでRepositoryの一覧が表示されるが、目的のRepositoryが表示されない

→いやいや普通にアクセス権のあるユーザなら参照先一覧に出るし。とのこと(Unityのサポート担当)
 →httpsで参照しようとすると一覧に出てこないのですが、実はこの状態でもgitプロトコルで直接参照設定するとcloneは可能です。
 →でも、gitプロトコルではLFSからのダウンロードで上記エラーが出るのでダメですね。

→GitLab.com のproject設定において、projectへユーザを"直接"割り付けることで、さっくりと Unity Cloud Buildの参照先一覧に表示されます。これにて一件落着となります。

例: URL が h ttps://gitlab.com/{Group}/{Repository}.git の場合、
     ユーザを{Repository}に割り付けると、参照先一覧に表示される。

→この件、GitLab.com側の問題か、Unity Cloud Build側の問題かの原因調査は放置中です

× GitLab.comの有償プランは、基本的にGroup内に所属するメンバー数で支払額が決まります。なので、運用中はGroupの参加ユーザを固定にしておきます

aaaa.png

  • Groupへのユーザ追加がdisableになるのは良いのですが、この設定を行うとprojectへのユーザ割り当てのメニューが出てこなくなって、軽めに詰みます

→先のエラー時、projectへユーザを割り当ててみたらどうなるか試したかったのですが、メニューが見つからなくて、しばらく悩みました。
  →一時的にチェックボックスを外して追加しましょう。

~~
お世話になったGitLabコミュニティの方々、Unityサポートの方、GitLabサポートの方、重ねて感謝いたします。こんなメモが誰かの役に立ったりすることがあったりなかったりしますように。

それでは良いGitLabライフを。

Discussion