GitLabで自動ビルド環境を作りたい!
こう思った理由
ゲーム制作にはいろいろな人が参加します。
プログラマー・ゲームデザイナー・グラフィックデザイナー・サウンドクリエイター...
チームメンバー全員がUnityを扱えれば最高ですが、必ずしも全員がUnityを扱うスキルが必要でしょうか。
これは議論の余地がありますが、僕は「全員がUnityを扱えなくても良い」と考えます。
そのため、Unityを扱えずとも、進捗状況を確認できる環境の構築が必須になりました。
なぜ「全員がUnityを扱えなくても良い」と考えるか
- デザイナー・サウンドクリエイター陣にUnityを教えるコストが高い。
- 自動ビルド環境が整っていないと、Unityを使用しない人もUnityをインストールしなくてはならない。
- 全員にGitの使い方を教えるのもコストが高い。
- 現在の進捗状況を確認する方法が別にあれば、全員がUnityを使わなくても良くなる。
準備項目
- GitLabアカウントを作成する
- 自身のローカル環境にあるUnityプロジェクトをGit管理下に置く
- GitLabで公開されている「unity3d-gitlab-ci-example」をローカルにcloneする
- Unityプロジェクトの中に「.gitlab-ci.yml」ファイルをコピーして、不要な項目を削除する
- Unityプロジェクトの中に「ci」フォルダをコピーする
- 「Assets/Scripts/Editor」フォルダを自身のUnityプロジェクトの同じ階層にコピーする
- GitLabの「Setting」欄の「CI/CD」メニューの中の「Variables」の「Key」欄に「UNITY_USERNAME」と「UNITY_PASSWORD」を追加し、「Value」欄にそれに対応した値を追加する
- GitLabにUnityプロジェクトをpushする
- 生成されたArtifactsをダウンロードし、その中の「Unity3d.alf」ファイルをUnity公式サイトのライセンス確認ページへアップロードし、「Unity_v2019.x.ulf」ファイルをダウンロードする
- GitlabのSettings→CI/CD→Variablesに「UNITY_LICENSE_CONTENT」を追加し、Unity_v2019.x.ulfの中身をコピーする
以上の作業を行います。画像を使って解説します。
GitLabアカウントの作成
GitLab.comのSign upページに行き、アカウントを作成します。
GitLab.com
自身のローカル環境にあるUnityプロジェクトをGit管理下に置く
Gitの使い方は僕なんかよりよっぽど詳しい人達がいるので、その人達を参考にしてください。
GitLabで公開されている「unity3d-gitlab-ci-example」をローカルにcloneする
unity3d-gitlab-ci-exampleのclone httpをコピーし、cloneコマンドでローカルに落とします。
Unityプロジェクトの中に「.gitlab-ci.yml」ファイルをコピーして、不要な項目を削除する
「unity3d-gitlab-ci-example」の中の「.gitlab-ci.yml」ファイルをコピーして、Unityプロジェクトの直下にペーストします。
「.gitlab-ci.yml」の中の「Build」項目内のビルドするファイルの種類は、必要なものを残して、あとは削除しても問題ありません。
ついでに、「Build」項目内でWebGLでのビルドを記入しない場合は、最後の「Pages」の項目も必要ありません。
Unityプロジェクトの中に「ci」フォルダをコピーする
「unity3d-gitlab-ci-example」内の「ci」フォルダはそのまま、Unityプロジェクトの直下にコピーします。
「Assets/Scripts/Editor」フォルダを自身のUnityプロジェクトの同じ階層にコピーする
「unity3d-gitlab-ci-example」内の「Scripts/Editor」フォルダは、Unityプロジェクトの「Assets」フォルダー内にコピーすれば問題ないと思われます。「unity3d-gitlab-ci-example」の構成と同じにしてください。
GitLabの「Setting」欄の「CI/CD」メニューの中の「Variables」の「Key」欄に「UNITY_USERNAME」と「UNITY_PASSWORD」を追加し、「Value」欄にそれに対応した値を追加する
黄色くマーカーしたところです。ここには、いつも使用している自分のユーザーネーム(メールアドレス)とパスワードを「Value」に入れています。一番上の「UNITY_LICENSE_CONTENT」はまだ入力する必要がありません。
GitLabにUnityプロジェクトをpushする
これでようやくプッシュまでの準備は完了です。一回目のプッシュが終わったあとも、もう少し作業が残っています。もう少しの辛抱です。
生成されたArtifactsをダウンロードし、その中の「Unity3d.alf」ファイルをUnity公式サイトのライセンス確認ページへアップロードし、「Unity_v2019.x.ulf」ファイルをダウンロードする
「Job」の中の「get-activation-file」を走らせて、この画面が出たら成功です。「Artifacts」をダウンロードし、「Unity3d.alf」ファイルを取得したら、Unity公式サイトのライセンス確認ページで「Unity3d.alf」ファイルをアップロードします。
Unityライセンス確認ページ
GitlabのSettings→CI/CD→Variablesに「UNITY_LICENSE_CONTENT」を追加し、Unity_v2019.x.ulfの中身をコピーする
黄色くマーカーした場所です。Valueの値は、テキストエディタで「Unity_v2019.x.ulf」を開いて見ることができる文章です。まるっとコピーして、Valueの中に入れます。
これでGitLab-CIで自動ビルドができるようになると思います。以降は、Pushするたびに自動で最新の進捗を実行ファイルにしてくれます。
Unity内でエラーが出る場合
「Assets/Scrpts/Editor」にコピーしたファイルがUnityでエラーを出している場合があります。その時は、エラーを吐いている行をコメントアウトすれば大丈夫です。
さいごに
Unityアドベントカレンダーパート3の15日目の記事はこんな感じです。「Unityが使えないメンバーにも今の開発状況を遊ばせたいなぁ...」という方々への参考になれば幸いです。閲覧いただきありがとうございました。