저번에 깃허브 액션으로 빌드 자동화를 구축 해봤었는데,
젠킨스도 알아두어야 해서 따로 정리를 해보았다.
Jenkins?
젠킨스는 CI/CD를 위한 오픈 소스 자동화 서버다.
깃허브 액션처럼 빌드 자동화와 테스트 같은 부분을 구축하여 사용할 수 있다.
다운로드 및 설치
https://www.jenkins.io/download/
일단 위의 링크에서 젠킨스를 다운받아 설치하면 된다.
난 2.440.3 LTS 받아서 설치해 주었고, Java가 필요하기 때문에 Java21을 따로 깔아주었다.
설정은 바꾸면 되니 일단 로컬에서만 돌아가도록 설치해도 된다.
설정을 따로 바꾸지 않았다면, http://localhost:8080/ 를 주소창에 입력해서 접속하면 된다.
위의 경로를 따라 들어가서 해당 패스워드를 입력하면 된다.
젠킨스에는 작업을 도와주는 여러 종류의 플러그인들이 있다.
나도 정확하게 다 알지는 못해서, Install suggested Plugins로 추천 플러그인들을 깔아 주었다.
조금 시간이 걸린다.
admin 유저와 URL을 설정하고 끝냈다.
아직 Url이 없으니 따로 설정하지 않았다.
유니티 플러그인 설치
왼쪽 메뉴중에 Jenkins 관리에 들어가면 여러 메뉴들이 뜬다.
처음으로는 Plugins를 통해 Plugins를 들어가보자.
Available Plugins - Unity3d 를 선택해서 설치를 해준다.
기다려주면 끝
유니티 버전 세팅
플러그인 설치 후에 Jenkins 관리 - Tools로 가서 쭉~ 내려보면 해당 설정이 있다.
이름은 알아 볼 수 있게만 적어두면 되고, 디렉토리에 사용할 유니티 에디터 버전의 경로를 넣어주면 된다.
자격 인증 설정
나는 깃허브를 사용할거고, 깃허브를 연동하기 위해선 해당 자격 인증이 필요하다.
오른쪽 상단에 이름을 클릭하고 Credentials로 들어간다.
Stores scoped to User 는 해당 유저한테만 적용되는 자격인증이고,
Stores form parent 는 글로벌 자격인증이다.
해당 젠킨스를 사용하는 유저들이 모두 접근이 가능하다.
플러그인으로 read만 할 수 있다던지 자격을 사용자별로 구분할 수 있다고 하는데, 프로젝트의 성격마다 설정을 해주면 될 것 같다.
이름으로 식별할 수 있게 UnityGitHub라는 도메인을 생성 해주었고,
해당 도메인을 눌러서 자격 증명을 추가를 눌러준다.
username 에는 깃허브 닉네임을,
password 에는 깃허브 access token 키를 넣어준다.
access token은 깃허브로 들어가서 로그인을 하고 Settings - Developer Settings로 들어가면 발급이 가능하다.
Create를 눌러주면 끝이다.
Item 만들기
이제 기본적인 설정은 끝났으니, 빌드를 실행 할 아이템을 생성하면 된다.
이러면 아이템이 생성됐다.
이곳에 링크를 넣으면 해당 아이템의 메뉴에 깃허브 버튼 생기고 누르면 즉시 프로젝트 깃허브 주소로 이동한다.
소스코드 관리에서 깃을 설정해주고,
레포지토리의 URL과 아까 만들어준 Credetials를 선택한다.
그리고 Branches to build 라고 빌드할 브랜치를 적어주어야 하는데
처음에는 master로 되어있으니 본인이 빌드하고싶은 브랜치에 맞게 수정해주어야한다.
설정을 저장해주자.
빌드 해보기
첫 빌드
이제 '지금 빌드'를 누르면 해당 레포지토리에서 로컬 저장소에 클론을 한다.
#2 와 같이 실패했다면 해당 빌드를 눌러서 Console Output을 읽어보며 에러를 찾아 수정해야한다.
성공을 했다면 들어가서 로그를 읽어보자. 읽다보면 clone을 한 경로가 나오는데,
드라이브:\ProgramData\Jenkins\.jenkins\workspace\프로젝트명 이 경로다.
해당 경로로 들어가서 유니티 프로젝트 파일이 잘 받아졌나 확인하고 한번 실행시켜 주면 된다.
실행시켜주지 않으면 Library와 같은 폴더들이 생성되지 않으므로 빌드를 했을때 오류가 난다.
유니티 빌드 스크립트 추가
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
class MyEditorScript
{
static string[] SCENES = FindEnabledEditorScenes();
static void PerformBuild()
{
BuildPipeline.BuildPlayer(FindEnabledEditorScenes(), "Builds/Windows/MyGame.exe", BuildTarget.StandaloneWindows, 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();
}
}
프로젝트에 Editor 폴더를 만들고 해당 스크립트를 추가해주었다.
ChatGPT 와 젠킨스 유니티 플러그인의 예제를 복붙했다.
PC용으로 빌드했고 프로젝트/Builds/Windows/MyGame.exe 경로에 빌드 파일이 생성된다.
저장하고 커밋해서 깃 저장소에 올려주자.
다시 해당 아이템의 구성으로 가보자.
쭉 내려서 Build Steps란을 보면 작업을 추가 할 수 있는데, Invoke Unity3d Editor를 추가해준다.
아까 설정했던 유니티 installation을 선택해준다.
그리고 아래에 Editor command line arguments는 이 링크를 참고하면 된다. https://docs.unity3d.com/kr/560/Manual/CommandLineArguments.html
간단하게 cmd와 powershell , mac의 터미널과 같은 커맨드 라인에서 유니티 작업을 실행할 수 있다.
-quit -batchmode -executeMethod MyEditorScript.PerformBuild
난 위와 같이 적어주었는데,
배치모드에서 유니티를 실행하고 MyEditorScript에 PerformBuild 함수를 실행하고 유니티를 종료하는 명령어다.
이제 저장을 해주자.
추가로 Build Steps에는 여러가지 행동이 가능한데, 슬랙과같은 메신저에 메세지를 날릴수도있고, 전 빌드를 삭제한다던지 원하는 작업을 추가 할 수 있다.
빌드 확인
빌드를 돌리고 빌드가 완료 됐다.
해당 경로에 가보니 빌드 결과물이 생겼다.
여기까지가 기본적인 젠킨스 빌드 자동화의 단계다.
빌드 스크립트 안에 추가적인 로직을 넣어도 되고, 빌드가 끝나고 aws s3에 업로드 한다던지의 모든 과정들을 입맛에 따라 구현하면 좋을 것 같다.
'게임 엔진 > Unity' 카테고리의 다른 글
[어드레서블] - 서버에서 다운받기 (3) | 2024.08.10 |
---|---|
[어드레서블] - 기본 및 사용법 (0) | 2024.08.07 |
Unity 라이브러리 추천 - RestClient (0) | 2024.03.24 |
Github Action으로 Unity 자동 빌드 제작해보기 (CI/CD) - 3편 (1) | 2024.03.23 |
Github Action으로 Unity 자동 빌드 제작해보기 (CI/CD) - 2편 (0) | 2024.03.23 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!