Jenkins로 유니티 자동 빌드하기
Jenkins만 있으면 프로젝트를 자동으로 빌드할 수 있다.
설정만 제대로 해두면 유니티를 키지않고 빌드할 수 있다.
1. 설치
Jenkins
The conventional commits plugin is a Google Summer of Code project. Special thanks to the mentors Gareth Evans, Kristin Whetstone, Olivier Vernin and Allan Burdajewicz. What are Conventional Commits According to the official website, conventonal commits ar
www.jenkins.io
이 사이트에서 설치를 해준다.
2. 유니티 플러그인 다운로드 및 적용
1. Jenkins 관리페이지 열기
다운로드가 완료되고 설정이 완료되었으면 다음과 같은 화면이 뜬다.
여기서 Jenkins 관리로 들어가준다.
2. 플러그인 관리로 들어간다
3. 설치가능 탭 클릭
4. 다음과 같은 플러그인을 검색, 설치한다.
순서대로
- Unity3d plugin : 유니티를 빌드하기 위해서 필수 설치
- Version Number Plug-In : 빌드 넘버링을 위한 선택 설치
- Parameterized Scheduler : 정해진 시간에 빌드할 수 있는 선택 설치
5. 재시작
6. 유니티 플러그인 설정
1. 관리메뉴 들어가기
2. Global Tool Configuration 들어가기
3. 설치된 유니티 적용시키기
설정할 이름과 유니티가 설치된 경로를 설정해준다.
절대 2020.3.2f1/Editor 폴더가 경로에 포함되면 안됩니다. 저도 그거 때문에 에러가 났었습니다.
아래는 에러 시 나오는 콘솔 메세지입니다.
Running as SYSTEM Building in workspace C:\WINDOWS\system32\config\systemprofile\AppData\Local\Jenkins\.jenkins\workspace\Unity3d FATAL: The configured Unity3d installation directory (C:\Program Files\Unity\Hub\Editor\2020.3.2f1\Editor) is not recognized as a Unity3d home directory. Remember that the plugin adds per-platform suffixes and is searching for the executable at C:\Program Files\Unity\Hub\Editor\2020.3.2f1\Editor\Editor\Unity.exe. Build step 'Invoke Unity3d Editor' marked build as failure Finished: FAILURE
그리고 아래의 save 버튼을 클릭하면 설정완료.
3. Jenkins 프로젝트 구성
1. 프로젝트 만들기
2. 빌드 적용시키기
1. 하단에 Build에서 다음과 같은 버튼 클릭
2. 인수 채워넣고 끝내기
여기서 빌드 옵션들을 정할 수 있다.
빌드 옵션들은 여기서 더 자세하게 볼 수 있다.
https://docs.unity3d.com/kr/530/Manual/CommandLineArguments.html
유니티 - 매뉴얼: 커맨드라인 인수
Build Player 파이프라인 내부 처리/Behind the Scenes 커맨드라인 인수 일반적으로는 Unity를 시작할 때 바탕 화면에서 아이콘을 더블클릭함으로써 시작하지만 커맨드라인에서 실행(즉 MacOS 터미널 또는
docs.unity3d.com
저 같은 경우에는 이렇게 작성하였습니다.
-quit -batchmode -projectPath "C:\Users\Jongwoo Lee\Documents\Workspace\SVN\Dev\Client\Prologue" -executeMethod MyEditorScript.PerformAndroidBuild
그리고 Build할 스크립트를 작성해야 합니다.
다음 코드는 Jenkins 유니티 도큐먼트에 나오는 기본 예제를 조금 변형한 것입니다.
MyEditorScript.cs
using System;
using System.Collections.Generic;
using UnityEditor;
class MyEditorScript
{
static string[] SCENES = FindEnabledEditorScenes();
static string APP_NAME = BuildOptn.application_name;
static string TARGET_DIR = "APK_BUILD";
[MenuItem("Build/Build Android")]
static void PerformAndroidBuild()
{
string target_dir = APP_NAME + ".apk";
PlayerSettings.keystorePass = BuildOptn.keystore_pass;
PlayerSettings.keyaliasPass = BuildOptn.keyalis_pass;
GenericBuild(SCENES, TARGET_DIR + "/" + target_dir, BuildTargetGroup.Android, BuildTarget.Android, BuildOptions.None);
}
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();
}
static void GenericBuild(string[] scenes, string target_dir,BuildTargetGroup build_target_group, BuildTarget build_target, BuildOptions build_options)
{
EditorUserBuildSettings.SwitchActiveBuildTarget(build_target_group, build_target);
string res = BuildPipeline.BuildPlayer(scenes, target_dir, build_target, build_options).ToString();
if (res.Length < 0)
{
throw new Exception("BuildPlayer failure: " + res);
}
}
}
★실행되는 함수는 무조건 static으로 선언되어야 합니다.★
또한 빌드된 파일을 확인하려면 아래의 빌드 후 조치에 **을 입력합니다
**를 통해 먼저 빌드된 파일을 확인 후 apk만 따로 뽑아내기 위해서 **로 설정합니다.
3. 빌드
둘 중에 아무거나 눌러도 빌드가 자동으로 이루어진다.
빌드하면서의 내용은 Console Output을 이용해서 확인할 수 있다. 여기서 에러코드를 확인하면 된다.
설정에서 '빌드 유발' 이곳에서 언제 자동으로 빌드할지를 선택할 수 있다.
정석적으로는 소스코드를 가져와서 빌드한 것을 다시 빌딩서버로 올리는 것이 정석이긴한데 서버가 없어서 로컬로 돌린다...
자매품으론 Unity Cloud Build가 있다.
Jenkins와는 반대로 설정이 매우 쉽다. 하지만 공짜는 아니고 월 9달러를 지불해야한다.
https://www.youtube.com/watch?v=LU7CMWlJOR4
이와 관련한 영상인데 내용이 괜찮다.