2020년 2월 26일 수요일

Jenkins Unity plugin (Editor command line arguments)


-quit -batchmode -stackTraceLogType Full -projectPath "$WORKSPACE"/BasicShapeSprite-master -executeMethod MyEditorScript.PerformMacOSXBuild GNSS.ios.qa.ini -logFile $WORKSPACE/build_unitylog.txt


-quit
다른 커맨드 실행을 마친 후 Unity 에디터를 종료합니다. 이렇게 하면 오류 메시지가 숨겨질 수 있습니다. 하지만 Editor.log 파일에서는 여전히 확인할 수 있습니다.

-batchmode
배치 모드로 Unity를 실행합니다. 항상 다른 커맨드 라인 인자와 함께 사용해야 합니다. 그래야만 팝업 창이 나타나지 않고 사람이 직접 개입할 필요가 없어집니다. 스크립트 코드를 실행하는 도중에 예외가 발생하면 에셋 서버 업데이트 또는 기타 작업이 실패하고, Unity는 반환 코드 1 을 표시하며 즉시 종료됩니다.
배치 모드에서 Unity는 최소 버전의 로그 출력을 콘솔에 전송합니다. 하지만 로그 파일에는 여전히 전체 로그 정보가 포함됩니다. 에디터에 동일한 프로젝트가 열린 경우에는 배치 모드로 프로젝트를 열 수 없습니다. Unity의 단일 인스턴스만 한 번에 실행할 수 있습니다.
팁: 배치 모드에서 에디터 또는 스탠드얼론 플레이어를 실행하는지 확인하려면 Application.isBatchMode 연산자를 사용하십시오.
프로젝트가 -batchmode를 사용하여 아직 임포트되지 않은 경우 타겟 플랫폼이 기본 플랫폼입니다. -batchmode를 사용할 때 다른 플랫폼을 강제 설정하려면 -buildTarget 옵션을 사용하십시오.

-stackTraceLogType
자세한 디버깅 기능입니다. StackTraceLogging을 사용하면 자세한 로깅을 허용하도록 기능을 제어할 수 있습니다. 모든 설정에서 None, Script Only 및 Full 을 선택할 수 있습니다(예, -stackTraceLogType Full).

-projectPath
주어진 경로에서 프로젝트를 엽니다.

-executeMethod
Unity가 프로젝트를 열자마자, 그리고 옵션 에셋 서버 업데이트가 완료되면 정적 메서드를 실행합니다. 
이 옵션을 사용하면 연속 통합, 유닛 테스트 실행, 빌드 제작 또는 데이터 준비 등의 작업을 수행할 수 있습니다. 
커맨드 라인 프로세스에서 오류를 반환하려면 Uniy가 반환 코드 1 을 표시하고 종료되도록 하는 예외를 발생시키거나, 
0이 아닌 반환 코드를 포함한 EditorApplication.Exit를 호출해야 합니다. 
파라미터를 전달하려면 파라미터를 커맨드 라인에 추가한 후 System.Environment.GetCommandLineArgs를 사용하여 함수 내에서 검색해 가져오십시오. 
-executeMethod를 사용하려면 둘러싸인 스크립트를 Editor 폴더에 배치해야 합니다. 또한 실행하는 메서드는 반드시 static으로 정의되어야 합니다.

-logFile
에디터 또는 Windows/Linux/OSX 스탠드얼론 로그 파일이 작성되는 위치를 지정합니다. 
경로가 누락되면 OSX와 Linux는 콘솔에 출력을 작성합니다. Windows는 %LOCALAPPDATA%\Unity\Editor\Editor.log 경로를 기본으로 사용합니다.




[MyEditorScript.cs]

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
using UnityEditor;
using UnityEditor.Build.Reporting;
lass MyEditorScript {
 static string[] SCENES = FindEnabledEditorScenes();
 static string APP_NAME = "YourProject";
 static string TARGET_DIR = "target";
 [MenuItem("Custom/CI/Build Mac OS X")]
 static void PerformMacOSXBuild() {
  string target_dir = APP_NAME + ".app";
  GenericBuild(SCENES, TARGET_DIR + "/" + target_dir, BuildTarget.iOS, BuildOptions.None);
 }
 private static string[] FindEnabledEditorScenes() {
  List EditorScenes = new List();
  foreach(EditorBuildSettingsScene scene in EditorBuildSettings.scenes) {
   if (!scene.enabled) continue;
   EditorScenes.Add(scene.path);
  }
  return EditorScenes.ToArray();
 }
 static void GenericBuild(string[] scenes, string target_dir, BuildTarget build_target, BuildOptions build_options) {
  EditorUserBuildSettings.SwitchActiveBuildTarget(build_target);
  BuildReport report = BuildPipeline.BuildPlayer(scenes, target_dir, build_target, build_options);
  BuildSummary summary = report.summary;
  if (summary.result == BuildResult.Failed) {
   throw new Exception("BuildPlayer failure: " + summary.result);
  }
 }
}

2020년 2월 20일 목요일

mac 에서 linux처럼 ll command 사용하기

~/.bash_profile 을 찾아 아래 command 추가

alias ll='ls -lG'

option
 -l      List in long format.
 -G     Enable colour output.

2020년 2월 18일 화요일

Mac Jenkins에서 docker에러(Cannot run program "docker": error=2)

Jenkins 빌드중 docker에서 에러나는 경우

java.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.(UNIXProcess.java:248) at java.lang.ProcessImpl.start(ProcessImpl.java:134) : : :Caused: java.io.IOException: Cannot run program "docker": error=2, No such file or directory : : :Finished: FAILURE

macos 버전은 Catalina
jenkins는 brew로 설치(https://jenkins.io/download/lts/macos/)
Mac용 docker Desktop 설치(https://hub.docker.com/?overlay=onboarding)

brew를 사용한 jenkins lts버전 설치후 다음 명령으로 구동하면 위와 같은 오류 발생 함 #brew service start jenkins-lts

하지만 서비스로 구동하지 않으면 해당 오류가 나타나지 않고 정상 수행됨 #jenkins-lts

권한 문제가 아닐까 짐작, 다른 해결 방법 찾는중.