GitLab-CIを使ってUnityプロジェクトに自動ビルド環境を構築しよう

# 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アカウントの作成
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413999/df24c819-5cea-04d4-24a1-36a89debcc73.png)
GitLab.comのSign upページに行き、アカウントを作成します。
[GitLab.com](https://gitlab.com/users/sign_up)

### 自身のローカル環境にあるUnityプロジェクトをGit管理下に置く
Gitの使い方は僕なんかよりよっぽど詳しい人達がいるので、その人達を参考にしてください。

### GitLabで公開されている「unity3d-gitlab-ci-example」をローカルにcloneする
![キャプチャ1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413999/240515fb-6c9f-d2ff-84d4-6258f7032ab6.png)
[unity3d-gitlab-ci-example](https://gitlab.com/ghegedus/unity3d-gitlab-ci-example)のclone httpをコピーし、cloneコマンドでローカルに落とします。

### Unityプロジェクトの中に「.gitlab-ci.yml」ファイルをコピーして、不要な項目を削除する
![キャプチャ2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413999/5bfa8bc8-8124-f7ca-2843-31d349690a03.png)
「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」欄にそれに対応した値を追加する
![キャプチャ3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413999/6517d6d4-3c10-93a1-39b6-8efb26611dec.png)
黄色くマーカーしたところです。ここには、いつも使用している自分のユーザーネーム(メールアドレス)とパスワードを「Value」に入れています。一番上の「UNITY_LICENSE_CONTENT」はまだ入力する必要がありません。

### GitLabにUnityプロジェクトをpushする
これでようやくプッシュまでの準備は完了です。一回目のプッシュが終わったあとも、もう少し作業が残っています。もう少しの辛抱です。

### 生成されたArtifactsをダウンロードし、その中の「Unity3d.alf」ファイルをUnity公式サイトのライセンス確認ページへアップロードし、「Unity_v2019.x.ulf」ファイルをダウンロードする
![キャプチャ4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413999/69f68f8c-85fc-f688-464d-68677135c47f.png)
「Job」の中の「get-activation-file」を走らせて、この画面が出たら成功です。「Artifacts」をダウンロードし、「Unity3d.alf」ファイルを取得したら、Unity公式サイトのライセンス確認ページで「Unity3d.alf」ファイルをアップロードします。
[Unityライセンス確認ページ](https://license.unity3d.com/manual)

### GitlabのSettings→CI/CD→Variablesに「UNITY_LICENSE_CONTENT」を追加し、Unity_v2019.x.ulfの中身をコピーする
![キャプチャ5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413999/f6d799c6-f568-2b57-53f2-2f43abed55e8.png)
黄色くマーカーした場所です。Valueの値は、テキストエディタで「Unity_v2019.x.ulf」を開いて見ることができる文章です。まるっとコピーして、Valueの中に入れます。

これでGitLab-CIで自動ビルドができるようになると思います。以降は、Pushするたびに自動で最新の進捗を実行ファイルにしてくれます。

## Unity内でエラーが出る場合
「Assets/Scrpts/Editor」にコピーしたファイルがUnityでエラーを出している場合があります。その時は、エラーを吐いている行をコメントアウトすれば大丈夫です。

## さいごに
Unityアドベントカレンダーパート3の15日目の記事はこんな感じです。「Unityが使えないメンバーにも今の開発状況を遊ばせたいなぁ...」という方々への参考になれば幸いです。閲覧いただきありがとうございました。