Unity3Dのビルドは、Mac OS XのJenkinsでビルドしたす。パヌト2

最初の郚分はここにありたす 。



曎新する



コレクタヌ自䜓ずそのプラグむンの䞡方を曎新する必芁がありたす。 蚭定ペヌゞは127.0.0.1-00-00242 / manage 蚭定に合わせお調敎にありたす。 新しいバヌゞョンがある堎合、曎新提案のあるボタンがペヌゞにハングアップしたす。 自分で最新バヌゞョンをダりンロヌドし、コレクタヌを慎重にオフにし、 jenkins.warファむルを眮き換えお再起動するこずをお勧めしたす。

jenkins.warを曎新するずきに゚ラヌが発生する可胜性があるため、 念のため叀いファむルをバックアップしたす。 なんで 最初に、ファむルは日本のサヌバヌに衚瀺されコレクタヌの䜜成者は通垞の日本人゚ンゞニアです。詳现はこちら 、次にミラヌを介しお配垃されたす。 参照





プラグむンは127.0.0.1-00-00242 / pluginManager /で構成できたす。 プラグむンに぀いおの詳现は察応するセクションにありたすが、既存のプラグむンを曎新するこずをお勧めしたす。



コレクタヌの初期セットアップ



Unityプロゞェクトは䞊行しお収集されたせん。
しかし
YoungSkipperはそれが可胜であるず曞いおいたす。 ドキュメントを読んだ埌、詊しおみたいずいう芁望がありたした。次の蚘事で倉曎点を説明し、次に段萜を線集したす。

぀たり、䞀床に1぀のコンピュヌタヌで起動できるアセンブリは1぀だけです。 デフォルトでは、 Jenkinsは耇数の゚グれキュヌタヌで単䞀のコレクタヌを䜜成したすが、これは良くありたせん。 グラフィカルむンタヌフェむスを䜿甚するか、蚭定で盎接127.0.0.1-00-00242 / computer /master/に進み、「 実行プロセス数 」を1に倉曎したす。



必芁に応じお、他のマシンでアセンブリを䞊げるこずができたすたずえば、アップルアセンブリをここに残し、他のプラットフォヌム甚に他のWindowsプラットフォヌムに転送したす。 ここではこの可胜性を考慮したせん。



ここで-127.0.0.1-00-00242 / configureは䞀般蚭定セクションです。 以䞋のパラメヌタヌを倉曎したす。



  1. ホヌムディレクトリが正しいこずを確認したす。 たずえば、 / Users / jenkins / WORK / JENKINS_HOME
  2. 詳现蚭定を展開したす。 ワヌクスペヌスルヌトディレクトリは、 Unityプロゞェクトをホストする堎所です。 「 アセンブリレコヌドのルヌトディレクトリ 」は、収集されたビルドのリポゞトリです。 JENKINS_HOMEから䞡方のフォルダヌを削陀しお 、デフォルト倀を倉曎するこずをお勧めしたす。 たずえば、 / Users / jenkins / WORK / JENKINS_WORKSPACE / $ {ITEM_FULL_NAME}および/ Users / jenkins / WORK / JENKINS_BUILDS / $ {ITEM_FULL_NAME}にありたす。

  3. 前ず同様に、「 コレクタヌの数 」を1に蚭定したす。
  4. 「 組立前の遅延 」は、たずえば60秒に蚭定されたす。 誀ったビルドたたは誀っお起動されたビルドを元に戻すのに圹立ちたす。
  5. Android向けのビルドでは、異なるJDKが必芁になる堎合がありたす。 察応するセクションで、名前ずパスを芏定したす無人むンストヌルのチェックを倖したす。 たずえば、 jdk_1.8.0_60の JAVA_HOMEは/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Homeにありたす 。 このアむテムはオプションであり、アセンブリ䞭に異なるJDKを䜿甚したいずいう匷い芁望がありたす。
  6. [ Jenkins Location]セクションで、コレクタヌのアドレスロヌカルネットワヌク䞊のhttp//192.168.3.69-00-00242/など ず管理者のメヌルを指定できたす。 䞀郚のプラグむンに必芁です。

  7. Subversionセクションでは、最新のプラグむンの曎新により、 SVNの最新バヌゞョンを遞択できたす。 たずえば、 1.8です。 バヌゞョンは、システムにむンストヌルされおいるバヌゞョン最初の2文字たでず䞀臎する必芁がありたす。䞀臎しない堎合、アセンブラヌによっお自動的に䜜成されたプロゞェクトを手動で線集するこずはできたせん。 前の蚘事の必芁なバヌゞョンのむンストヌルぞのリンクを参照しおください 。




Jenkins CLI



コレクタヌのリモヌトコマンドのリストに぀いおも蚀及する必芁がありたす。 ここに必芁な情報はすべおhttp  //127.0.0.1-00-00242/cli/です。 Jenkins-cli.jarがダりンロヌドされ、たずえば次のコマンドが含たれたす。



java -jar jenkins-cli.jar -s http://192.168.3.69:4242/ safe-shutdown
      
      





ロヌカルネットワヌク䞊の任意のコンピュヌタヌからコン゜ヌルからコレクタヌを切り離すこずができたす実行䞭のすべおのアセンブリが最初に自動的に完了したす。 必芁に応じお、適切なスクリプトを準備できたすが、ハングしたコレクタヌでは動䜜しない堎合がありたす。



プラグむン



コレクタヌの远加機胜は、プラグむンを通じお提䟛されたす。 察応するセクション-127.0.0.1-00-00242 / pluginManager / installedでそれらを構成むンストヌル、曎新、ロヌルバック、削陀できたす。 完党なリストは近くにありたす 。公匏wikiはこちらです。 重芁なものは以䞋にありたす残りは曎新する方が良いですが、盎接䜜業するこずはほずんどありたせん







アセンブリパラメヌタを蚭定するためにダりンロヌドする必芁があるプラグむン関連プラグむンをむンストヌルするプラグむンもありたす







コレクタヌの倖芳を倉曎し、アクセスを簡玠化するプラグむン







Unityで䜜業するためのプラグむン







プロゞェクト構造



  1. リポゞトリをセットアップしたす。
  2. パラメヌタヌを䜿甚しおファむルをカスタマむズしたす。
  3. ビルドプラットフォヌムをセットアップしたす。
  4. Unityを実行するかどうかを構成したす。
  5. リポゞトリからデヌタをダりンロヌドしたす。
  6. Unityが実行するように構成されおいる堎合、新芏ビルドをビルドしたす。
  7. アセンブリ結果をアヌカむブに保存したす。
  8. ビルド結果に応じおスクリプトを実行したすたずえば、音声アラヌム。




タスクゞョブアむテムの䜜成



  1. コレクタヌのメむンペヌゞには、[ アむテムの䜜成 ]ボタンがありたす。 パラメヌタヌで、無料の構成を持぀タスクを遞択したす 。 名前ずしお、 projectName_platformなどを遞択したす。 さたざたなタスクの2番目の郚分を倉曎するこずにより、単玔なプロゞェクトフィルタヌを構成できたす。 蚭定に盎接移動したす。



  2. 耇数のタスクに同じリ゜ヌスを䜿甚するこずが蚈画されおいるため、たずプロゞェクトの堎所を倉曎したす。 「 プロゞェクトの詳现蚭定 」を怜玢し、「 別のディレクトリを䜿甚 」を遞択しお、 ../JENKINS_WORKSPACE/projectName_standaloneのようなものを入力したす。 その埌、蚭定の最初に戻りたす。



  3. 「 廃止されたアセンブリの削陀 」-必芁なオプションを遞択したす。 たずえば、最埌の数個のみを保存したす。



  4. カスタムアむコンにプラグむンがむンストヌルされおおり、アむコンがロヌドされおいる堎合は、必芁なものを遞択したす。



  5. 「 これはパラメヌタヌ化されたアセンブリです 」-このパラメヌタヌを構成したす。 これを行うには、以前にむンストヌルしたExtensible Choiceプラグむンが必芁です。 テンプレヌトは次のずおりです。このタむプのパラメヌタヌが远加され、名前が入力され、デヌタの読み取り元が遞択されたす。 デヌタは、倖郚ファむルに保存するか System Groovy Choiceパラメヌタヌを遞択しおデヌタ読み取りスクリプトを䜜成する、たたは「 拡匵遞択利甚可胜な遞択肢プロバむダヌ」セクションのコレクタヌの蚭定で事前蚭定できたす 。 ここでは、最初のオプションを䜿甚したす。 重芁 すべおのパラメヌタヌで、デフォルトのオプションを事前に遞択する必芁がありたす。 ただし、スクリプトを保存しお蚭定ペヌゞを再床開いた埌にのみ䜿甚可胜になりたす。



  6. リポゞトリを構成したす。 REPOSITORYパラメヌタヌを䜜成したす。 /Users/jenkins/WORK/repositories.txtなどの倖郚ファむルに䜿甚可胜なすべおを远加したす。 次に、スクリプトを実行したす。



     String _file="/Users/jenkins/WORK/repositories.txt"; ArrayList _list=[]; FileReader _reader = new FileReader(_file); String _line = null; while( ( _line = _reader.readLine() ) != null ) { _list << _line; } return _list.sort();
          
          





  7. アセンブリプラットフォヌムの遞択。 PLATFORMを䜜成したすが、スクリプトは倖郚ファむルの名前のみが異なりたす。 以䞋は、4.6バヌゞョンのプラットフォヌムのリストです。



    unity_platforms.txt
    Webplayer

    WebPlayerStreamed

    スタンドアロンOSXIntel

    スタンドアロンOSXIntel64

    StandaloneOSXUniversal

    スタンドアロンりィンドり

    iPhone

    PS3

    XBOX360

    Android

    スタンドアロンLinux

    StandaloneLinux64

    StandaloneLinuxUniversal

    Flashplayer

    スタンドアロンWindows64

    WP8Player

    ティれン

    PSP2

    Ps4

    PSM

    Xboxone

    SamsungTV



  8. 蚭定ファむルの遞択-PRESET



     import hudson.*; import hudson.model.*; ArrayList _list=[]; _list << ""; FilePath _wp = new FilePath(new FilePath(jenkins.root),project.getCustomWorkspace()); hudson.FilePath _dir = _wp.child("Assets/BuildPresets/"); if (_dir.exists() == false) return _list; hudson.FilePath[] _files = _dir.list("*.asset") for (hudson.FilePath _file : _files) { if (_file.isDirectory() == false) { //_list << _file.getName(); _list << _file.getBaseName(); } } return _list.sort();
          
          





    このスクリプトでは、「スクリプトで事前定矩された倉数を䜿甚する」チェックボックスを有効にしお 、コレクタヌにアクセスできるようにしたす。 コヌドはJavaに䌌おいたす 。ドキュメントはhttp://javadoc.jenkins-ci.org/jenkins/model/Jenkins.htmlにありたす。 getCustomWorkspace関数は、以前に指定した正確な堎所ぞのアクセスを提䟛したす。 デフォルトのテンプレヌトを䜿甚する堎合、パスを明瀺的に駆動する必芁がありたす。



  9. BUILD_UNITYパラメヌタヌを䜜成したす。 そのためには、 Textarea Choice Parameterを個別に遞択したす。ここで、倀TRUEずFALSEを2行に分けたす 。



  10. 「 ゜ヌス管理 」を蚭定したす。 Subversionを遞択し、アドレスずしお$ {REPOSITORY} 、無限の深さを入力し、アクセス甚のナヌザヌ名ずパスワヌドを遞択したすたたは、ただ行っおいない堎合は䜜成したす。 アセンブル時に、入力された匏の代わりにファむルからの明瀺的な匏が䜿甚されたす。 戊略ずしお、「 最初に元に戻しおから曎新 」を遞択したす。



  11. 「 アセンブリトリガヌ 」を蚭定したす。 たずえば、最新バヌゞョンがリポゞトリに衚瀺された埌にのみ、タスクを1日に1回定期的に収集できたす。 たずえば、「 倉曎に぀いおSCMに尋ねる 」フィヌルドの「H * / 8 * * *」は、最新バヌゞョンで1日に3回アセンブリを開始したす。 メニュヌの暪に、構文の説明に関するヘルプがありたす。



    他のビルドオプションの蚭定の詳现はこちら 。 アセンブリがリポゞトリの最新バヌゞョンに焊点を合わせおおり、デフォルトのリポゞトリ以倖のリポゞトリが蚭定で遞択されおいる堎合、デフォルトが倉曎されおもアセンブリは実行されないこずに泚意しおください 解決策は、次のアセンブリを手動で切り替えるか、トリガヌたたはスケゞュヌルに埓っおアセンブリを構成するこずです。



  12. 最埌に「 アセンブリ埌の操䜜」セクションに進み、 Groovy Postbuildステップを远加したす。 アセンブリの成功を分析する最も簡単なスクリプトは次のずおりです。



     String proc = "/bin/sh /Users/jenkins/WORK/build-failure.sh"; if (manager.build.getResult() == hudson.model.Result.SUCCESS) proc = "/bin/sh /Users/jenkins/WORK/build-success.sh"; proc.execute();
          
          







    たずえば、゚ラヌスクリプトずしお、次を䜿甚できたす。



     say "Kill all humans"
          
          





  13. この段階で、蚭定を保存しおアセンブリを開始したす。 タスクの最埌にディレクトリを䜜成し、リポゞトリからプロゞェクトをダりンロヌドしお、スクリプトの1぀を䜜成したす。 ゚ラヌが発生した堎合、スクリプトで䜿甚されおいるすべおのファむルが䜜成されおいるかどうか、およびそれらに正しいアクセス暩があるかどうかを確認したす。



  14. すべおが機胜する堎合は、蚭定シヌトの䞭倮に戻りたす。 「 スクリプトから環境倉数を生成する」 を遞択しお、次のように入力したす。



     BUILD_SUBDIR=`awk -F: '/location:/ {sub(/.*location: */,""); gsub(/\\\\/,"/"); print}' Assets/BuildPresets/${PRESET}.asset` BUILD_DIR="${WORKSPACE}/${BUILD_SUBDIR}" BUILD_VERSION=`../svnversion -c . | cut -f2 -d:` APPLICATION_NAME=`awk -F: '/buildName:/ {sub(/.*buildName: */,""); gsub(/\\\\/,"/"); print}' Assets/BuildPresets/${PRESET}.asset` BUILD_ARTIFACT=${APPLICATION_NAME}-${PRESET}-${BUILD_VERSION}.zip echo BUILD_SUBDIR=${BUILD_SUBDIR} echo BUILD_DIR=${BUILD_DIR} echo BUILD_VERSION=${BUILD_VERSION} echo APPLICATION_NAME=${APPLICATION_NAME} echo BUILD_ARTIFACT=${BUILD_ARTIFACT}
          
          







    スクリプトの最初の郚分では、アセンブリパラメヌタヌを䜿甚しお远加の倉数を生成したす。 たずえば、 PRESETファむルで遞択した蚭定から正確なアセンブリディレクトリずアプリケヌション名を怜玢したす。 svnversionファむルはWORKフォルダヌに配眮されたす。これを呌び出すこずにより、アセンブリに関する詳现情報を取埗できたす。 すべおのパスは、珟圚のディレクトリからの盞察パスです。



    2番目の郚分は、特にアセンブリプロセス甚です。 ヘルプに曞かれおいるように、倉数をアセンブリに盎接統合するには、この圢匏で倉数を/ stdoutに送信する必芁がありたす。



  15. [ アセンブリ]セクションに移動し、アセンブリステップ条件付きステップ耇数を䜜成したす 。 開始条件で、文字列の等䟡条件を遞択し、1぀のフィヌルドで等䟡テスト$ {BUILD_UNITY}を実行し、別のフィヌルドでTRUEを実行したす。 このセクションでは、以降のすべおの手順を実行したす。 この順序により、デヌタを曎新するためだけにタスクを実行できたす。



  16. シェルコマンドを䜿甚しおステップを远加したす。 アセンブリする前に、アセンブリディレクトリをクリヌンアップする必芁がありたす。特定の倉数を䜿甚したす。



     rm -rf "$BUILD_DIR" || true mkdir -p "$BUILD_DIR" || true
          
          





  17. 次のステップは、 Invoke Unity3D Editorです。 パラメヌタヌにUnity_Defaultたたは特定のバヌゞョンを指定したす。 アセンブリパラメヌタは次のずおりです。



     -quit -batchmode -executeMethod Build.CmdBuild -buildPreset=$PRESET -switchBuildTarget=$PLATFORM
          
          





    ほずんどのチヌムは、 こちらの公匏ヘルプに蚘茉されおいたす 。 最埌の2぀のパラメヌタヌはビルドスクリプト専甚です。特定のオプションがない堎合は、暙準の-buildOSXPlayerを䜿甚できたす。 スクリプトず匕数の䟋は、 Unity3dBuilderプラグむンプラグむン情報ずUnityコミュニティWikiにありたす 。



  18. 最埌のビルド手順は、結果をアヌカむブするこずです。 暙準コマンド



     cd `dirname ${BUILD_SUBDIR}` zip -qr "${BUILD_DIR}/${BUILD_ARTIFACT}" `basename ${BUILD_SUBDIR}`
          
          





  19. アセンブリ埌の操䜜セクションで、 アセンブリの説明を远加できたす。 たずえば、 $ {BUILD_VERSION} $ {PRESET}です。 コレクタヌの履歎でビルドの暪に衚瀺されたす。



  20. アセンブリ結果をアヌカむブしたす。 すべおのファむルをリストできたす。この䟋では、アセンブルされたアヌカむブ$ {BUILD_SUBDIR} / $ {BUILD_ARTIFACT}を保存する必芁がありたす。 この手順をスキップするず、アセンブリ結果をダりンロヌドできなくなりたす。 蚭定で結果の自動クリヌニングが指定されおいる堎合、埌者のいく぀かのみが䜿甚可胜になりたす。



  21. 最埌のステップは、 Unityのルヌルでログ解析を蚭定するこずです。 その埌、1぀のプラットフォヌムのタスクは完党に準備が敎いたす。





新しいタスクを䜜成する



䞊蚘の䟋では、タスクはMac甚にビルドするように構成されおいたす。 WindowsずLinuxでのアセンブリは、リ゜ヌスを再むンポヌトせずに同じプロゞェクトで実行できるため、同じアセンブリディレクトリを䜿甚できたす。 これを行うには、新しいタスクを䜜成し、既存のタスクのコピヌをタむプずしお遞択したす。蚭定では、アむコン、タスク名、デフォルトプラットフォヌムのみを倉曎したすディレクトリは叀いたたです。



衚瀺蚭定では、タスクごずにフィルタヌを䜜成し、メむンペヌゞにアセンブリに関する必芁な情報を衚瀺できたす。 最終的に、次のようなものを取埗できたす。



画像



Androidビルドをビルドする



最初の郚分では、 JDKずJREぞのリンクが提䟛されたした-here 実際、コレクタヌが正垞に機胜するにはJavaが必芁です。 Androidビルドを完党にビルドするには、 Android SDKをダりンロヌドしお構成する必芁がありたす 。

正しく動䜜させるには、ナヌザヌjenkinsの䞋でUnity゚ディタヌを開き、 Unity / Preferences / External Toolsに移動しお、 Android SDKぞのパスを構成する必芁がありたす 。 新しいバヌゞョンでは、 JDKぞのパスも指定する必芁がありたす。叀いバヌゞョンでは、このフィヌルドがありたせん。 動䜜する構成の䟋





重芁 ゚ディタヌの各バヌゞョン3.xx 4.xxず5.xxには異なる構成ファむルがありたすおよびアセンブリが実行される各ナヌザヌ jenkinsに十分を構成する必芁がありたす。



コレクタヌで新しいタスクを䜜成するために、 スタンドアロンタスクをコピヌできたす。 この堎合、 カスタムワヌクスペヌスディレクトリを倉曎する必芁がありたす-リ゜ヌスを別のプラットフォヌムに再むンポヌトする時間は非垞に長くなる可胜性があるため、 Androidビルドではプロゞェクト甚に個別のディレクトリを䜜成したす。 構成ファむル、ビルドプラットフォヌム、タスクアむコンを倉曎したす。 保存されたアセンブリファむルにも違いがありたす。たずえば、結果をアヌカむブするこずはできたせんが、 $ {BUILD_SUBDIR} / *。Apk、$ {BUILD_SUBDIR} / *。Obbファむルを保存できたす。



ビルドツヌルを倉曎する方法はありたせん。 たずえば、 Unityの異なるバヌゞョンで、 JDKずAndroidSDKの蚭定が異なる1぀、4぀目の䞖代を構築する必芁がありたす 。 〜jenkins / Library / Preferences / com.unity3d.UnityEditor4.x.plistファむル  シェルの defaultsコマンドを䜿甚を線集するアセンブリステップを远加できたす。たた、 JDKパラメヌタヌプラグむンをむンストヌルし、 JDKを遞択しおアセンブリをパラメヌタヌ化できたす。 誰かがこれを行う堎合-結果の賌読を停止しおください-私はそれを蚘事に含めたす。



重芁 Android SDKを曎新する堎合、プロゞェクト甚に䜜成されたすべおのJavaプラグむンを再構築する必芁がありたす。 サむトが蚀うようにアセンブリ䞭に、アセンブリラむンに-source 1.6 -target 1.6を含めたす。



アップデヌト10.13.15


  1. 耇数のビルドを䞀床にビルドするこずに関するYoungSkipperの泚意 。 成功したら実装ず線集を詊みたすが、macminiがプルしない堎合がありたす。


アップデヌト10.20.15


  1. iOS向けのビルドに関する蚘事が倧きすぎるため、Androidの手順はこの蚘事に移動したした。
  2. デザむンはわずかに線集されおいたす。



All Articles