GAGEX BLOG

GAGEXの業務内容や取り組みを公式ブログで情報発信中!

忘れないで、毎日アプリを社内配布していたことを。

忘れないで、毎日アプリを社内配布していたことを。

エンジニアのかわかみです。
忘れないで、おとなになっても。」アプリの開発中は毎晩 Unity Cloud Build で最新のアプリを作成/配布しており、開発メンバー全員が実機チェックしやすい環境づくりを行っていました。

今回はどのような環境づくりをしていたかをご紹介します。

概要

下図のような構成です。

なお、リポジトリはUnity Collaborateを使用しており、Unity Cloud BuildのTarget設定は既にしている事を想定して書いております。

Unity Cloud Buildを外部から実行

Unity Cloud Build API を使うことで Unity Cloud Build を実行する事が出来ます。
ラク&コストを掛けたくないのであれば Google Apps Script(以降はGASと記載) で実行させるのが良いです。

GASサイトからGASファイルを新規作成し、Unity Cloud Build APIに従って以下のようにビルドを実行するスクリプトを作成します。

function build_(projectId, targetBuild){
  if (isHoliday_()) return;

  var payload = {
    "clean" : true,
    "delay" : 30
  };

  // (1) API_KEYは置き換えてください
  var headers = {
    "Authorization": "Basic API_KEY"
  };
  
  var options = {
    "method" : "post",
    'contentType': 'application/json',
    "headers": headers,
    "payload" : JSON.stringify(payload)
  };

  var url = "https://build-api.cloud.unity3d.com/api/v1/orgs/gagexcoltd/projects/" + projectId + "/buildtargets/" + targetBuild + "/builds";
  UrlFetchApp.fetch(url, options);
}

// (2) 休みの曜日か
function isHoliday_() {
  var day_num = new Date().getDay()
  return (day_num === 0 || day_num === 6);
}

function dairyIOS () {
  // (3) UPIDとios_dailybuildは置き換えてください
  build_("UPID", "ios_dailybuild");
}

function dairyAndroid () {
  build_("UnityProjectID", "android_dailybuild");
}

スクリプト中の(1) API_KEY には、Unity Dashboardのビルド対象プロジェクトを開き、Settings > Cloud Build ページに記載されている API Key を設定します。

スクリプト中の(3) UPID も同様に、ビルド対象プロジェクトのOverviewページ上に記載されている UPID(Unity Project ID) を設定します。
“ios_dailybuild” と “android_dailybuild” も同様に、Cloud Build > Config に追加されている Target name を設定します。ちなみに全て小文字である必要があるため、”iOS_DailyBuild” と登録していたとしても “ios_dailybuild” としなければ実行されません。

(2) “isHoliday_” 関数は平日のみ実行するために追加しています。もし不要であれば削除ください。

この時点で dairyIOS/dairyAndroid 関数をGASファイル上から実行し、Cloud Buildが実行されるか確認してみます。もし実行されない場合は上記に挙げた各設定にミスが無いかを確認してみてください。

ビルドトリガーの登録

  1. GASサイトからGASファイルを右クリックしてメニューを開いてトリガーを選択します
  2. トリガーページにある「トリガーを追加」ボタンを押下します
  3. 「実行する関数を選択」項目に先程追加したGASの関数を選択します
    「時間ベースのトリガーのタイプを選択」項目を「日付ベースのタイマー」を選択します
    「時刻を選択」項目をビルド実行したい時間帯を選択します
  4. 設定が完了したら「保存」ボタンを押下します

この設定で毎日設定した時間帯に指定した関数が実行されるようになります。実行したい関数分だけトリガーを追加してください。

実行状況については実行数ページで確認すると分かります。

ビルド結果を通知

ビルドに成功/失敗した時にプロジェクトメンバーへ伝える設定を行うと分かりやすいです。
今回は特定のSlackチャンネルへ投稿するよう設定方法について書きます。

1. Unity Dashboardのプロジェクトを開きます
2. 左メニューにあるCloud Build > Notificationsを開きます
3. NotificationsのIntegrations pageを開きます
4. NEW INTEGRATIONボタンを押下し、Slack > Cloud BuildのBuild Success/Build Faiureにチェックを付る > Slackへ投稿したいチャンネルを設定

Slackには以下のように投稿されます。ビルド番号のリンクからDLページへ遷移できます。

手軽にデイリービルドの登録が出来るので試してみてください。

GAGEXの求人情報

詳しくはコチラ

kawakami

かわかみひろき

エンジニアです