見出し画像

JenkinsでUnityアプリを自動ビルドして開発効率をあげよう! Part.1 Jenkins導入編

GraffityのAzukiです!

久々のエンジニアブログになります。

今回から数回にかけてJenkinsを使ったアプリの自動ビルド(所謂CI/CD環境)の構築について紹介していきます。(全3回くらいかなぁ)

Jenkinsとは

画像2

Jenkinsとはオープンソースのソフトウェアビルド・テスト・デプロイなどを自動化させるためのサーバーです。国内ではよくJenkinsおじさんとか言われてますね。

例えば、gitにプッシュしたらビルドして配布とか、毎日X時にビルドして配布、みたいなことができたりします。

Jenkinsはとても拡張性もあり、プラグインも無数にあります。アイデア次第でなんでもできちゃいます(超高性能なcrontabみたいなものです)


JenkinsでUnityアプリをビルドする意味

Unityでゲームを作っていると、定期的に実機で動作確認したくなる時があります。そんな時に各自各々の環境でビルドしていると、このような問題が起きることがチーム開発ではよくあります

知らないうちにビルドの手順が変わっていてビルドできない

・マシンスペックが低いと無限にビルドに時間取られる

XCode使いたくない

新規にジョインした人に説明するコストが発生する

などなど、

特にGraffityはARゲームを作っている関係上、デバイスのカメラを絶対に使うので他のゲームを作られてる会社さんよりも実機での検証の頻度が高いです。

Jenkinsマシンを会社に用意してビルドさせることでビルド→配布までを自動で出来るようになり、開発メンバーがビルド時間で虚無な時間を過ごさなくてもよくなります!!!!Jenkins万歳!


UnityCloudBuildじゃダメなの?

ダメです。

Graffityは以前のプロダクト開発中にUnityCloudBuildを採用していたのですがビルド時間が1回40~60分ほどかかっており、実用的ではなかったためJenkinsマシンを導入しました。Jenkinsマシン導入後はビルドから配布まで10~15分で完了するようになり、動作確認がとても楽になりました。今時点ではビルドマシン用意したほうが幸せになると思います。(CloudBuild早くなって欲しいですね。。)


必要なもの

・ビルドマシン用のMac(GraffityではMacMini2020の最上位モデルを使ってます)

・git管理されたUnityプロジェクト(git管理しなくてもできなくはないですが今回のシリーズはgit管理してる前提で進めます)

・Unity(今回は2019.4.10f1 基本的に手順は変わらないです)

・XCode(最新だと良い)

iOSビルドをするので今回はMac必須です。もしAndroidのみのビルドでいい場合はWindowsPCでも大丈夫ですが、今回はMac前提で手順を紹介するので所々変わってくると思います。

Jenkinsのセットアップ

では早速Jenkinsを導入しましょう!今回はHomeBrewで導入します。

brewが使えない方はこちらから

ターミナルからjenkinsを入れていきましょう

azuki$ brew install jenkins

🍺が出たら導入完了です

🍺  /usr/local/Cellar/jenkins/2.257: 7 files, 67.2MB, built in 6 seconds 

Jenkinsサーバーを立ち上げましょう

azuki$ jenkins

Webブラウザを開き、localhost:8080にアクセスします

画像4

Jenkinsの起動画面が表示されればJenkinsの導入には成功しています

画像2

少し待つとこのように初回起動のウィザードが出てきます。

画像3

Administrator passwordを求められるので表示されているファイルを開きパスワードをコピーして貼り付けましょう

画像5

画像6

次の画面に進むとプラグインのインストール画面が出ます。

個別で入れてもいいのですがとりあえずお勧めされたものは入れておきましょう。

Install Suggested Pluginsをクリックして続行します。

画像7

インストール中。。

画像8

インストールが終わったらAdminUserを作成します。

画像9


Jenkins URLは環境に応じて設定変更してください。今回はこのまま続行します。

画像10

Jenkins is Readyが出たらセットアップは終了です

画像11

Jenkinsのメイン画面

画像12


ビルド用ジョブを作る

次回以降で実装していくアプリケーションをビルドするジョブを作っておきましょう。

左側メニューの新規ジョブ作成から作成画面を開き、

画像13

ジョブの名前とジョブの種類を選択します

今回はUnityBuild_Androidとし、ジョブの種類はフリースタイルにしました

本来だとビルドから配布までのような処理の時はパイプラインの方が並列実行を制御したり色々細かい事ができたりするのですが、今回のシリーズでは一番シンプルなフリースタイルでシェルを書いていく感じで実装していこうと思います。

プロジェクトが完成しました。

画像15

次回以降はこのプロジェクトで実際にアプリのビルドをしていきます!

なるべく早く次の更新するようにしますのでお楽しみに!

---------------------------------

余談:GraffityでのJenkins運用

GraffityではJenkinsを使ったビルドを誰でもできる(エンジニア以外でも)ようにするためにSlackを使ったビルド環境を構築しています。

実際に使ってる様子がこんな感じです↓

画像16

slackにいるJenkinsおじさん(hubotで動いている)にビルドブランチなどを記入したコマンドを投げるとhubotが受け取り、Jenkinsに対してビルドをするよう送る事でビルドが始まります。

ビルド完了後に自動でDeployGateへアップロードし、そのURLを通知するようにしています。

この方法のメリットはJenkins本体をいじる事が減るので謎に設定変わったりする心配をしなくていい(権限設定ちゃんとしろ話ではある)事や、Slackが使える人ならメンバーが自由にビルドを掛けれる点です。

あとやたらJenkinsおじさんに愛着湧きます。

このあたりのHubot構築の話も紹介したいと思っているのでお楽しみに!


---------------------------------

Jenkinsおじさんが居るGraffityについてはこちら!



この記事が気に入ったらサポートをしてみませんか?