コガネブログ

平日更新を目標にUnityやC#、Visual Studioなどのゲーム開発アレコレを書いていきます

【Jenkins】Jenkins 環境構築時の覚書

Jenkins 環境構築

Jenkinsとは

Jenkins導入のメリット

  • いつでも実行可能な最新版のモジュールが、定期的に自動で作成される
  • ボタンを押すだけで、いつでも実行可能な最新版のモジュールが作成できる
  • モジュール履歴を残せるので、バグ早期発見に繋がる
    (どのバージョンでバグが出たのか確認できる)

準備

  • 以下のものを準備しておく
  • Unity のプロジェクトを SVN にコミットしておく

Jenkinsのインストール

  1. https://jenkins-ci.org/」にアクセスする
  2. 「Long-Term Support Release」を選択する
  3. 「Or native package」の「Mac OS X」を選択する
  4. ダウンロードした「jenkins-XXXX.pkg」を展開してインストールする
  5. 「/Library/LaunchDaemons/org.jenkins-ci.plist」の
    下記の箇所を編集する
    • GroupName をログインアカウントの所属グループに変更する(※1)
    • UserName をログインアカウントの名前に変更する
  6. 「/Library/LaunchDaemons/org.jenkins-ci.plist」を編集したら
    ターミナルで下記のコマンドを実行する(※2)(※3)
    sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
    sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
  7. ワークスペースの権限を自分の所属グループ、自分のアカウントに変更する
    sudo chown -R ユーザー名 /Users/Shared/Jenkins/Home
    sudo chgrp -R グループ名 /Users/Shared/Jenkins/Home
  8. http://localhost:8080/」にアクセスすることで Jenkins が表示される

※1 所属グループの確認方法

  • 所属グループとは「staff」や「admin」などのこと
  • 下記のコマンドをターミナルで実行することで
    ユーザーの所属グループが表示できる
id -p

※2 Library フォルダのアクセス方法

  1. Finder のメニューの「移動>フォルダへ移動...」を選択する
  2. 「フォルダの場所を入力:」のテキストボックスに
    「~/Library」と入力する
  3. 「移動」を選択する

※3 launchctl load に失敗する場合

  • Mac の launchctl コマンドで plist ファイルを load しようとする際に、
    下記のエラーが出る場合があります
launchctl: Dubious permission on file (skipping): /Library/LaunchAgent/*****.plist
  • このような場合には、plist ファイルのオーナーや
    パーミッションを確認する必要があります
    • 権限を root に変更
      sudo chown root filename.plist
    • パーミッションを 644 に変更
      sudo chmod 644 filename.plist
  • これで plist ファイルを正常にロードすることができます
  • パーミッションを「777」にして実行すると
    弾かれてしまうため注意が必要です

プラグインの追加・設定

  • ここからはブラウザ上での作業になります

プラグインを追加

  1. 「Jenkinsの管理」を選択する
  2. プラグインの管理」を選択する
  3. 「利用可能」を選択する
  4. 「Jenkins Unity3d plugin」をオンにする
  5. 「ダウンロードして再起動後にインストール」を選択する
  6. 再起動されるまで待つ

プラグインの設定を変更

  1. 「Jenkinsの管理」を選択する
  2. 「システムの設定」を選択する
  3. 「Unity3d」の「Unity3d追加」を選択する
  4. Unity のインストールディレクトリを設定する
    • 名前: 自由(例:Unity4.6)
    • インストールディレクトリ: /Applications/Unity/Unity.app/
  5. 「保存」または「適用」を選択する

ジョブ作成

  1. 「新規ジョブ作成」を選択する
  2. ジョブ名を自由に設定する(例:UnityTestProject)
  3. 「フリースタイル・プロジェクトのビルド」を選択する
  4. 「OK」を選択する

ジョブ作成時の注意

  • ジョブ名には日本語、スペース、記号は使用しないでください
  • シェルが実行できなくなります

ジョブ設定

ソースコード管理システム

  1. Subversion」を選択する
  2. 「モジュール」の「リポジトリURL」に
    プロジェクトの SVN パスを入力する
  3. 「チェックアウト方式」は「'svn revert'してから'svn update'を実行」
    もしくは 「'svn update'を実行」を選択する

ビルド

  1. 「ビルド手順の追加」を選択する
  2. 「Invoke Unity3d Editor」を選択する
  3. 「Unity 3d installation name」は
    プラグインの設定」で指定した名前を選択する
  4. 「Editor command line arguments」に
    「-batchmode -quit -executeMethod XXXX.YYYY」と入力する

利用可能な環境変数

変数名 説明
BUILD_NUMBER 当該ビルドの番号。例 "153"
BUILD_ID 当該ビルドID。例 "2005-08-22_23-59-59" (YYYY-MM-DD_hh-mm-ss)
JOB_NAME ビルドのプロジェクト名。例 "foo"
BUILD_TAG 文字列 "jenkins-${JOB_NAME}-${BUILD_NUMBER}"
EXECUTOR_NUMBER このビルドを実行している現在のエグゼキューターを識別する(同一マシンの中で)ユニークな番号
NODE_NAME ビルドが実行されるスレーブの名称。
NODE_LABELS ノードに設定されたラベルのリスト(スペース区切り)
WORKSPACE ワークスペース絶対パス
JENKINS_URL JenkinsのURL。例 http://server:port/jenkins/
BUILD_URL このビルドのURL。 例 http://server:port/jenkins/job/foo/15/
JOB_URL このジョブのURL。 例 http://server:port/jenkins/job/foo/
SVN_REVISION Subversionを使用するプロジェクトにおける、モジュールのリビジョン番号

Jenkins ビルドに失敗する場合

_RegisterApplication(), FAILED TO establish the default connection to the WindowServer

エラー内容

_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.

解決方法

  • 「/Library/LaunchDaemons/org.jenkins-ci.plist」の編集を
    忘れている可能性があります

hudson.util.IOException2

エラー内容

hudson.util.IOException2: Failed to download from http://updates.jenkins-ci.org/download/plugins/unity3d-plugin/0.3/unity3d-plugin.hpi
Caused by: java.io.FileNotFoundException: /Users/Shared/Jenkins/Home/plugins/unity3d-plugin.jpi.tmp (Permission denied

解決方法

  • Jenkins の Home ディレクトリの権限を自分の所属グループ、
    自分のアカウントに変更すると解決する可能性があります
cd /Users/Shared/Jenkins
sudo chown -R ユーザー名 Home
sudo chgrp -R グループ名 Home

SDK does not have any Build Tools installed

エラー内容

/Applications/android-sdk-macosx/tools/ant/build.xml:479: SDK does not have any Build Tools installed.

解決方法

  • Android SDK の Tools をすべてインストール、
    アップデートすると解決する可能性があります

Error building Player: Exception: android

エラー内容

Error building Player: Exception: android (invokation failed)
ERROR: unknown error
cmd:android list target -c
stdout;
stderr:
Exception in thread "main" java.lang.NullPointerException at SDKMain.main(SDKMain.java:62)

解決方法

User Interaction is not allowed

エラー内容

User Interaction is not allowed

解決方法

  • キーチェーンへのアクセスを常に許可する必要があります

Multiple Unity instances can't open the same project

エラー内容

Multiple Unity instances can't open the same project.

解決方法

  • 自動ビルドするプロジェクトが既に起動しているので、
    終了してから再度実行します