본문 바로가기
개발/게임) 개발관련

개발환경)젠킨스(Jenkins) Unity 셋팅하기

by 테샤르 2020. 8. 24.

젠킨스(Jenkins) Unity 세팅하기

[젠킨스 관리]- [플러그인 관리] -[설치 가능] - Unity를 검색해서 Unity3d를 설치해줍니다.

반응형

 

Unity Plug in을 설치 이후에 [젠킨스 관리] - [ Global Tool Configuration]에서 Unity에 대한 실행 경로를 추가한다.

유니티 실행 위치를 기본적으로 잡아주고 저장한다.

 

이후에는 빌드 환경이 잡힌 Item에 환경을 추가한다.

[빌드 환경] - [add Build step] -[Invoke Unity3 d Editor]를 선택한다.

 

반응형

Unity Plug in 설치와 Unity 환경변수 (Unity3d installations)이 정상적이면 나온다. 그게 아니라면 경고창을 확인해서 해결해줘야 한다.

 

Editor command line arguments에 내용은 다음과 같다.

-quit -batchmode -projectPath "/프로젝트 경로" -executeMethod  BuildPlayer.Build_AOS_Debug -logFile "$WORKSPACE/unityJenkins.log"
반응형

 

커맨드 명령어는 대략 다음과 같다.

 

-quit : 유니티가 동작을 다 하면 종료시키는 명령어

-batchMode : 배치 모드로 유니티를 실행

-buildTarget Android : 유니티 빌드 타깃 설정

-projectPath 'C:/Project/$PROJECT_PATH' : 유니티 프로젝트 경로 

-executeMethod  ~~~~ : 배치 모드에서 실행할 유니티 함수

-logFile "$WORKSPACE/unity3 d_editor.log" : 로그파일 출력 경로

 

Unity 커맨드 라인 참고 : https://docs.unity3d.com/kr/530/Manual/CommandLineArguments.html

 

유니티 - 매뉴얼: 커맨드라인 인수

Build Player 파이프라인 내부 처리/Behind the Scenes 커맨드라인 인수 일반적으로는 Unity를 시작할 때 바탕 화면에서 아이콘을 더블클릭함으로써 시작하지만 커맨드라인에서 실행(즉 MacOS 터미널 또는

docs.unity3d.com

원리는 젠킨스에서 Unity를 배치파일 모드(터미널)에서 커맨드 라인으로 실행해서 static Method를 호출하는 것으로 종료를 한다.

반응형

 

-executeMethod  BuildPlayer.Build_AOS_Debug의 내용에 포함되는 스크립트는 다음과 같다.

해당 스크립트는 Editor 밑에 포함되어야 한다.

[Asset - Editor - BuildPlayer.cs] 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using UnityEditor;
using UnityEditor.Build.Reporting;

public class BuildPlayer
{

    [MenuItem("Build/Build AOS(Debug")]
    public static void Build_AOS_Debug()
    {
        BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
        buildPlayerOptions.scenes = FindEnabledEditorScenes();
        buildPlayerOptions.locationPathName = string.Format("Build(AOS)/Test_{0}.apk",PlayerSettings.bundleVersion);
        buildPlayerOptions.target = BuildTarget.Android;
        buildPlayerOptions.options = BuildOptions.Development;
        BuildReport report = BuildPipeline.BuildPlayer(buildPlayerOptions);
        BuildSummary summary = report.summary;

        if (summary.result == BuildResult.Succeeded)
        {
            Debug.Log("Build succeeded: " + summary.totalSize + " bytes");
        }

        if (summary.result == BuildResult.Failed)
        {
            Debug.Log("Build failed");
        }
    }

 

    [MenuItem("Build/Build IOS")]
    public static void Build_IOS()
    {
        BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
        buildPlayerOptions.scenes = FindEnabledEditorScenes();
        buildPlayerOptions.locationPathName = "Build(IOS)";
        buildPlayerOptions.target = BuildTarget.iOS;
        buildPlayerOptions.options = BuildOptions.None;

        BuildReport report = BuildPipeline.BuildPlayer(buildPlayerOptions);
        BuildSummary summary = report.summary;

        if (summary.result == BuildResult.Succeeded)
        {
            Debug.Log("Build succeeded: " + summary.totalSize + " bytes");
        }

        if (summary.result == BuildResult.Failed)
        {
            Debug.Log("Build failed");
        }
    }



    private static string[] FindEnabledEditorScenes()
    {
        List<string> EditorScenes = new List<string>();

        foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
        {
            if (!scene.enabled) continue;
            EditorScenes.Add(scene.path);
        }

        return EditorScenes.ToArray();
    }
}

 

해당 설정을 하고 빌드를 실행하면 SUCCESS가 떨어지면 빌드가 성공한 것이다.

Android 빌드를 하는도중 JDK가 없거나 SDK가 경로를 찾을 수 없다고 에러메시지가 나오면

Unity Hub에서 간편 설치하면된다.

 

.apk 파일(빌드파일)이 생성된 것(Test_0.1.apk)가 확인되었다.

다음에는 추가로 빌드에 대한 알림 설정과 추가적인 Plug in 처리를 진행할 예정이다.

 

 ★

반응형

댓글