Unity3DのDIY CI

免責事項:ジェンキンスを置く方が良いことを知っています、そしていくつかのことを実装するアプローチは最高とはほど遠いです。 しかし、ポイントは、独自のソリューションを使用して、可能な限り迅速にAPIを使用してCIを作成することです。 アドバイスや批判を喜んでいます。







画像







GNU / Linuxサーバーのみがあり、ssh経由でアクセスします。 目標は、Windowsを備えた仮想マシンと、ビルドを作成し、コマンドラインからすべてのUnity3D機能を使用する機能です。







以下をインストールして使用します。









XfceとVNCサーバーをインストールすることから始めましょう。 Xfceは、将来の仮想マシンでの生活とルーチンを大幅に簡素化するグラフィカルシェルです。何らかの理由で適切なRDPを作成できず、TeamViewerの松葉杖が私に合わなかったためです。 たとえば、Ubuntuを使用して以下を実行します。







sudo apt-get update sudo apt-get -y upgrade apt-get install xfce4 xfce4-goodies gnome-icon-theme tightvncserver
      
      





すべての質問に答え、すべてをインストールした後、サーバー上にリモートデスクトップ用のユーザーを作成します。







 sudo adducer remoteUser
      
      





パスワードを入力し、オプションでユーザーに関する情報を入力するか、単にスキップします。 次に、必要に応じてsudoをインストールします。







 sudo apt-get install sudo
      
      





そして、ユーザーをルートグループに追加します。







 sudo gpasswd -a remoteUser sudo
      
      





各コマンドの前にsudoを入力する必要がある場合は、rootとしてログインできます。







 sudo -s
      
      





上記のすべての操作を行った後、仮想マシンを作成するユーザーが既に存在します。ブラウザーからビルドを作成できるようにしたいので、apache2とphpもインストールしました。







 sudo apt-get -y apache2 install php5 libapache2-mod-php5 php5-cli
      
      





次に、作成したユーザーの代わりに移動します。







 sudo su - inc
      
      





これで、vncサーバーを起動できます。便宜上、画面の解像度で起動します。







 sudo vncserver -geometry 1280x800
      
      





リモートデスクトップにアクセスできない場合は、発信接続用のポートも開くことをお勧めします。デフォルトではポートが閉じられます。







 sudo iptables -A INPUT -p tcp --dport 5901 -j ACCEPT
      
      





コンソールにいる間は、VirtualBoxをインストールするのがいいでしょう。そうでなければ、仮想マシンを起動するものは何もありません。







 sudo apt-get install virtualbox
      
      





私は完全なMacであり、サーバーにログインするためのscreenshare.appを持っています。他のシステムではTightVNCが動作するはずです。







これで、仮想マシンで作業するために必要なすべてのものができました-教育目的のために、Windowsがインストールされたディスクイメージ、ダウンロード後にここからダウンロードし、* ovaファイルをインポートすることをお勧めします。インポート中にエラーが発生した場合は、ovaファイルをアーカイブとして開き、 vmdk、ovfを削除します。設定だけで必要ありません。次に仮想マシンを作成し、既存のハードドライブをフックします。







上記の手順を実行した後、仮想マシンをオンにして必要なものすべてをインストールできます。Unity、gitを操作するためのお気に入りのツールなどです。







重要な注意点として、Unityはグラフィックデバイスを使用せずにヘッドレスモードでのみ動作します。IntelHDビデオカードのドライバーの問題を解決できなかったため、幸いなことに3Dアクセラレーションがなく、すべてが機能します。







重要な点は、私のようにPHP経由でUnity機能を呼び出す場合、phpスクリプトを実行するユーザーのために、visudo経由でパスワードを要求せずにコマンドを実行する機能を設定する必要があることです、私はwww-dataを持っています-標準ユーザー、また、このユーザーに代わってすべてのbashスクリプトとphpをすぐに実行しました。ターミナルでの設定が苦手な場合は、インターフェイスですべてを簡単に構成できます(visudoの例)。







 www-data ALL=NOPASSWD: ALL
      
      





visudoの呼び出し方法:







 sudo visudo
      
      





私は基本的にphpがやりたいことを何でもできるようにするので、これが最善のアプローチではないことに同意しますが、私の場合、それは実際にはだれも気にせず、サーバーは隔離されました。







まず、Unityのビルドを呼び出す方法:







 sudo vboxmanage guestcontrol "Windows" execute --username IEUser --password Passw0rd! --image "C:\CI\build.bat" --verbose -- "${1}"
      
      





verbose-ゲストコンソールからの応答を出力します

「$ {1}」-プラットフォームを担当するパラメーター(buildWindowsPlayer)







このわいせつを引き起こすPHPスクリプト:







  $platform = $_GET["platform"]; $shell = "sh build.sh $platform 2>&1"; $out = shell_exec($shell); echo $out;
      
      





2>&1-エラーを表示し、スクリプトの出力を表示できるため、デバッグ時に非常に役立ちます







build.batも非常にシンプルに見えます。







 C:\PROGRA~1\Unity\Editor\Unity.exe -batchmode -projectPath "%PROJECTPATH%" -%1 %buildPath% -quit -nographics C:\7z.exe a %buildPath% %sharedFolderPath%\build.zip
      
      





%1-プラットフォームのビルドディレクティブ(buildWindowsPlayer)。







可能なすべての可能性と操作がここにあります。

この記事の著者はNyxにそれほど強くありません。もし私が間違いを犯したなら、それを修正することができます。 vncの構成の詳細については、 こちらをご覧ください。







結論として、もちろん、この方法は、すべてがどのように相互作用するかを学習するのに適しており、GNU / LinuxサーバーとUnityプロジェクトを持っているが、それを理解する時間がない人向けに設計されていると言えます。 また、このような単純な操作にこのような多数のスクリプトを使用する理由の質問に答えます:私の場合、バッチファイルは、共有ディレクトリへのポストプロセッシングと展開、すべての必要な機能を呼び出すためのバッチファイルを担当し、phpはブラウザーからこれをすべて呼び出すためのツールとしてのみ機能します可視性を損なうことなくこれをより効率的に行う方法に関する提案がある場合、私はコメントすることを嬉しく思います。







PS:私は自分用の小さなツールを使って、すべてが1つのスクリプトで動作し、1つのページですべての機能をマッピングし、必要に応じて使用できるように、Githubでベストプラクティスを共有できます。







PS 2:構成済みのvmdkディスクに必要なものをすべて入れるオプションもありますが、正直なところ、それは簡単で、他のすべてを見るのはとても楽しかったです。







PS 3:Windowsのコピーのライセンスをアクティブ化することを忘れないでください。








All Articles