Unity3Dのビルドは、Mac OS XのJenkinsでビルドします。パート1

背景


Unity3Dにプロジェクトがあります。 すでに数年が経過しています(2012年2月生まれ)。 6か月後、私はプログラマーとして作業を開始し、2年後には幸運ではなくなり、ビルドの構築を担当するようになりました。 Jenkins ビルダーがインストールされたMacMiniを継承しました。最小限のドキュメントと、 iOS用の適切なビルドがありませんでした。

私は最終的に適切な指示を書きたいと思います-数週間の間、初期セットアップで殺され、 iMacに移行するとき、私の古い開発はすでに時代遅れでした。 だから...

参照条件


  1. プロジェクトはUnity3Dエンジンで開発されています。 開発が長い間続いたため、エンジンのバージョンは3.5.6から4.6.6に変更されました(執筆時点では、バージョン5をサポートする記事はまだ計画されていません)。 各バージョンには独自の不具合があり、一部のバージョンには1つのプラットフォームの重要な編集が含まれていると同時に、別のプラットフォームのアセンブリが強制終了されます。 たとえば、最新バージョンではiOSの 64bサポート追加され、初期の4.xバージョンではGoogle ChromeおよびFlashプラグインのアセンブリがありました。推奨されるAndroid SDKはバージョンごとに変更されます 。 あなたはすべてを持っている必要があります。
  2. プロジェクトはsvnサーバーにあります。 具体的には-subversion.assembla.com 。 さまざまなブランチ、さまざまなサブプロジェクト、および他のプロジェクトの一部を含むプロジェクトからのアセンブルのサポートが必要です。
  3. アセンブリは、 AndroidGoogle PlayAmazon App StoreYandex Store ...)、 iOSWindowsMac OSLinux (すべてSteamでの公開の可能性)に対して実行する必要があります。 一部のパーツは、ブラウザーで実行するために組み立てられます。 ここでは、各構成のアセンブリの機能のみを考慮します。
  4. テスターがダウンロード、インストール、およびテストできるように、ローカルネットワークからビルドにアクセスする必要があります。
  5. 自律アセンブリ、障害後の自動起動(電源オフ)


なぜアップル製品を集めているのですか? iOSアプリケーションを収集してAppStoreに送信する必要があるためです。 hackintoshまたは仮想マシンを使用することには問題があります。

そのため、オフィスには古いMacMiniがあり、自宅には最新のiMacがあります。 どちらも仕事、生産性とアプローチの違いに対処します-最初は保証がなく、それは残念ではありません(毎週テーブルで彼を殺したいという欲求が発生します)、2番目は布で愛情を込めて拭かれて保護されています。

したがって、最初のデバイスの組み立てと分解について知りたい場合は、 こちらをご覧ください 。 古いディスクの死後、アセンブリの必要性が生じました。 指示のおかげで、新しい1 TBドライブが正常に開いて挿入されました。

ここで余談をする価値があります-私はいくつかのパーティション、そしておそらくいくつかのOSを備えたハードドライブを持つことを好みます。 ただし、ドライブのタイプがFusion Driveの場合、これを行うことはできません(私のiMacにはドライブに最大2つのパーティションがあり、2番目のパーティションにはWindowsが使用されます )。 ドライブが正常であれば、問題はありません。 1つのセクションにすべての重要なデータを保存し( Time Machineを使用してバックアップし)、プロジェクトの重いコピーを別のセクションに保存できます。

システムのインストール


別の記事に値します。 簡単に:

  1. 最新のポピーには、インターネットがインストールされています。 それ以外の場合は、システムイメージを備えたドライブまたはフラッシュドライブが必要です。 セットアップメニューCmd + Rを入力します
  2. すべてのドライブとパーティションをわかりやすい名前で呼び出します。 システムおよび運用データを含むパーティションは、 Mac OS拡張(ジャーナリング)でフォーマットする必要があります。 必須- 大文字と小文字は区別されません
  3. ソフトウェアをインストールするには、 Apple Idが必要です。 このApple Idは、ビルドの準備と入力に使用されるApple 開発者アカウントに対応することが望ましいです。
  4. 管理者アカウントに加えて、定期的な権限を持つアカウントが必要です。 jenkins 、パスワードとも呼びます。
  5. 誰かがChromeリモートデスクトップ経由のリモートアクセスを必要とする場合、アカウントに管理者権限を与える必要があります。
  6. 通常のブラウザと便利なソフトウェアを自由に配置します。
  7. ページの表示に問題がある場合-SteamコミュニティYouTube 、その他-私たちは1回2回見てます。

Xcodeのインストール


  1. 通常、最新バージョンはストアから配信されます。
  2. 複数のバージョンをインストールする場合-別のフォルダーを選択してそこに配置することをお勧めします。 たとえば、 /アプリケーション/ XcodeXcode_5_1_1.appXcode_6_1_1.appです。
  3. 古いバージョンはこちらにあります

Unity3Dをインストールする


エンジンは、 オフサイトMacバージョンが必要)バージョンまたはお気に入りのトラッカーからダウンロードできます。 プロジェクトのニーズに応じて、オフサイトで登録し、 必要なライセンスを取得します。

デフォルトでは、 Unity.appをインストールした後、 MonoDevelop.appとドキュメントは/ Applications / Unityにあります。 複数のバージョンをインストールする必要がある場合は、最初に古いインストールフォルダーの名前を/ Applications / Unity_4_6_6_f2などに変更します。その後、新しいバージョンをインストールし、インストール場所の名前も変更します。 すべてのバージョンとパッチはこちらにあります

MonoDevelopは 、各Unityの設定でパスを最新の状態に保つのに十分です。 フォルダ/ Users / Sharedで 、デフォルトのUnityプロジェクトを見つけることができます-取り壊すことができます。

ユーザーjenkinsの場合、すべてのファイルを実行する権限を設定する必要があります。 必要に応じて-すべてのコンテンツ.appで

また、設定で、最後のプロジェクトの自動オープンをオフにして、各コピーを登録します。

Java、JDK、Android SDKをインストールします


JDKおよびJREは、 オフサイトからダウンロードできます。 ここから Android SDK ダウンロード します 。 インストール後-SDKを更新し、各UnitySDKへのパスを規定し、テストアセンブリを確認します。 動作する構成の例:

構成は経験的にのみ選択されます。 これらのコンポーネントのいずれかをアップグレードしても、ビルドビルドが落ちないという保証はありません...

SVNをインストールする


これによると サブバージョンはシステムにバンドルされています。 特定のバージョンをインストールするには、 Homebrewを使用することをお勧めしますここで詳細探しています

Jenkinsをインストールする


  1. すべての操作はユーザーjenkinsの下で実行されます
  2. オフサイトからインストーラーをダウンロードします。 たとえば、 / Users / jenkins / WORK / JENKINS_WAR / jenkins.warなどの便利な場所に移動します
  3. ターミナルに移動し、コレクター起動コマンドを実行します。

    java -jar /Users/jenkins/WORK/JENKINS_WAR/jenkins.war 

  4. ブラウザーでチェックインします-127.0.0.1:8080コレクターの存在。 ターミナルを閉じた後(コレクターはオフになります)
  5. 一時ファイル用のフォルダーを作成します。 例- / Users / jenkins / WORK / JENKINS_TMP
  6. コレクター用のフォルダーを作成します。 たとえば、- / Users / jenkins / WORK / JENKINS_HOMEです。 /Users/jenkins/.jenkinsフォルダーの内容をそのフォルダーコピーし、フォルダー自体を削除します。
  7. ターミナルに移動して、管理者としてログインします。

     login dimamatik 

  8. 古い構成ファイルを削除します。

     sudo rm /Library/Preferences/org.jenkins-ci.plist 

  9. 以下のパラメーターを入力します(必要に応じて変更できます)。

     pp="/Library/Preferences/org.jenkins-ci.plist" sudo defaults write $pp JENKINS_HOME "/Users/jenkins/WORK/JENKINS_HOME" sudo defaults write $pp tmpdir "/Users/jenkins/WORK/JENKINS_TMP" sudo defaults write $pp war "/Users/jenkins/WORK/JENKINS_WAR/jenkins.war" sudo defaults write $pp httpPort 4242 

  10. 私たちはチェックします:

     defaults read $pp 

  11. 権利を設定します。

     sudo chown root:wheel $pp sudo chmod 644 $pp 

  12. 次のコマンドでJenkinsデーモンをアンロードします。

     sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist 

  13. デーモンを削除します。

     sudo rm /Library/LaunchDaemons/org.jenkins-ci.plist 

  14. 管理者アカウントを終了します。

     logout 

  15. ターミナルからコレクターを再び開始します(ページは127.0.0.1-00-00242になりました )。 すべてが機能するはずです。

詳細およびこちらをご覧ください。

起動、再起動、死


コレクターの死と蘇生の問題は、 UnityでのMacとアセンブリの使用によってさらに悪化します。 スクリプトを作成して保存します。


コレクターを自動的に開始するには、 Automatorを使用して特別なアプリケーションを作成します。 AppleScript Runテンプレートを選択し、他のスクリプトがダンプされたのと同じフォルダーにjenkins-restart.appを作成します。 以下のプログラムコード:

  on run {input, parameters} tell application "Terminal" activate if (the (count of the window) = 0) or (the busy of window 1 = true) then tell application "System Events" keystroke "n" using command down end tell end if do script "sh ~jenkins/jenkins-restart.sh" end tell return input end run 


スクリプトがホームフォルダーにない場合は、それに応じてパスを編集します。

ユーザー設定で、 ジェンキンスは書かれたアプリケーションの自動起動を設定します。 必要に応じて、手動で使用できます。 システムの起動時にユーザー自身を自動ログインに設定します(オフィスビルダーであり、起動するのが面倒な場合は遅すぎます)。

悪魔についての詳細は、wikiまたは一般的なヘルプを参照してください 。 一般的に、 Automatorを使用せずに、このメカニズムを終了して、デーモンのアンロードとロードをスクリプトに追加することは可能です。 ただし、プラグインのシャットダウンおよび再起動プラグインは正しく機能しない場合があります。

何がありますか


現時点では、システムは動作するはずです。 コレクター(空の場合)は、システムの開始時に自動的に開始されます。 Unityのプロジェクトは、 jenkinsユーザーの下で(手作業で)適切に組み立てられる必要があります。 エラーが発生した場合、許可、インストールされているコンポーネント、ライセンスの借金を確認します。 一番面白いのは...

2番目の部分はここにあります

更新10/06/15

  1. Jenkinsデーモンに関する段落が追加され、無効にするための手順が修正されました。
  2. コレクターのダウンロードとインストールに関するセクションにオフサイトへのリンクを追加しました。
  3. スクリプトにコメントして、アプリケーションを再起動します。

アップデート10.13.15

  1. 2番目の部分へのリンクを追加しました。
  2. チュートリアルプレートを追加しました。

Source: https://habr.com/ru/post/J268233/


All Articles