windows jenkinsでgithubのunityプロジェクトをビルドする

jenkins

前提としてGithub SourceTreeをSSH認証運用してるものとします。

Jenkinsインストール

【初心者】とにかく初歩的なJenkinsの使い方
Jenkinsで開発の効率化をはかるためには、どのようにすればよいのか。本記事では「Jenkinsのインストール方法」、「使い方」について解説する。

↑に従えばjenkinsのインストールとunity pluginはなんとなくインストールできると思います。

注意点、Program Files以外にインストールするとjenkinsが謎エラーを噴出します。
原因はさっぱりわからないです。自信がなければProgram Filesにインストールすべきです

Global Tool ConfigurationからインストールしてあるUnity3dの情報を登録します。名前は好きな物、インストールディレクトリはとりあえず絶対パスにしました。

Git install

https://anchorloop.com/2017/08/19/configuring-ssh-authentication-for-git-on-a-windows-jenkins-worker/

ここの記事にもあるんですが、Gitインストール時にEnable Git Credential managerはアンチェックしておきます。JenkinsのGitプラグインがGit Credential Manager for WIndowsに対応してないらしいです。(でも2年前の記事だし今なら大丈夫かな??未検証です

これ以外はインストーラーのデフォルト値でOKです

Jenkins側で、Jenkinsの管理システムの設定グローバルプロパティツールのパスでインストールパスを登録します。

SSH秘密鍵をJenkinsに登録

SSHキーの準備はできてますか? SourceTree & Githubとか使ってるなら問題ないですよね?SourceTreeでも使ってる秘密鍵(僕はid_rsa.ppk)をテキストエディタで開いて全内容コピーして直接入力 鍵のところにペーストしましょう。

うまく疎通すれば下記のエラーが消えてくれます

ここまでできたら後はジョブのビルドでUnityを選択すればOKです

ビルド関数に引数を渡す

PlatformやDevelop(Release)やバージョン番号をjenkinsから渡したくなりますよね

コマンドライン引数 - Unity マニュアル
Unity エディターやスタンドアロンのプレイヤーアプリケーションは、コマンドライン (macOS のターミナルや Windows のコマンドプロンプト) から実行することが可能です。
-executeMethod Game.Editor.MasakMenu.BuildStandaloneByJenkins $BUILD_NUMBER $Configuration

Windowsではこのような形でstatic関数名の後ろに任意の引数を追加するとよいです。

            var args = System.Environment.GetCommandLineArgs();

            // ビルド番号
            BuildNumber = int.Parse(args[args.Length - 2]);

            // コンフィグ
            string config = args[args.Length-1];

C#側ではこのように書いて文字列として受け取ることができます。コツとして、引数をjenkinsのEditor command line argumentsの最後に羅列すると、C#で受け取るときに上記のようなindexの取り方できるので楽です。

参考文献

Jenkins+Unity+Windows 久しぶりなのでメモ(バッチモードしんどい) - Qiita
###インストールの仕方 参考URL: ※Widnowsの場合、注意が必要。  ProgamFilesフォルダ…