Jenkins CI/CD 환경 구축

JJW·2025년 6월 27일
0

Unity

목록 보기
34/34

오늘은 Jekins를 이용하여 CI/CD 환경을 구축해보겠습니다.

Java 설치

  • JDK 17를 설치합니다.
    Java 17

  • 설치 후 환경변수 등록도 추천합니다.

    • 시스템 환경 변수 → JAVA_HOME 새로 추가 (C:\Program Files\Eclipse Adoptium\java17)
    • Path에도 추가 (%JAVA_HOME%\bin)

Jenkins 설치

Jenkins 공식 다운로드

  • LTS 버전을 다운받는 게 좋습니다.

IOS 빌드의 경우

  • IOS 빌드의 경우에는 MacOS를 사용해야 합니다.
  • Windows를 사용하면 IOS는 빌드 환경 구축이 안됩니다.

Jenkins 접속하기

  • 이후 http://localhost:8080에 들어가주시면 됩니다.

  • 저는 이미 8080포트에 사용중이라 8081포트에 접속하였습니다.

  • 이후 나오는 패스워드 입력창에서 C:\Users\name.jenkins\secrets\initialAdminPassword에서 비밀번호 확인 후 입력하시면 됩니다.

  • Install suggested plugins (추천 플러그인 설치)를 눌러서 선택하시면 됩니다.
  • 이후 정보들을 입력하면 대시보드가 나타나게 됩니다.


Unity 스크립트 작성 및 Git 올리기

  • Editor -> BuildScript.cs 생성
  • 코드 입력
using UnityEditor;
using UnityEngine;
using System;

// Unity 에디터에서 빌드 자동화를 위한 스크립트
using System.IO;
using UnityEditor;
using UnityEngine;
using System;

public class BuildScript
{
    public static void PerformAndroidBuild()
    {
        // 0) 출력 폴더 체크
        var projectroot = Directory.GetParent(Application.dataPath).FullName;
        var outDir = Path.Combine(projectroot, "Builds", "Android");
        if (!Directory.Exists(outDir))
            Directory.CreateDirectory(outDir);

        // 1) 커맨드라인 인자 읽기
        string[] args = Environment.GetCommandLineArgs();
        string version = GetArg(args, "-appVersion") ?? "1.0.0";
        string code = GetArg(args, "-buildCode") ?? "100";

        // 2) 번들 버전 설정
        PlayerSettings.bundleVersion = version;
        PlayerSettings.Android.bundleVersionCode = int.Parse(code);

        // 3) APK 경로
        string outputPath = Path.Combine(outDir, "MyGame.apk");

        // 4) 빌드 실행
        var report = BuildPipeline.BuildPlayer(
            new[] { "Assets/Scenes/Main.unity" },
            outputPath,
            BuildTarget.Android,
            BuildOptions.None
        );

        if (report.summary.result != UnityEditor.Build.Reporting.BuildResult.Succeeded)
            throw new Exception("Build failed: " + report.summary.result);

        Debug.Log("빌드 성공: " + outputPath);
    }

    private static string GetArg(string[] args, string name)
    {
        for (int i = 0; i < args.Length - 1; i++)
            if (args[i] == name) return args[i + 1];
        return null;
    }
}
  • Git에 새로운 저장소를 만들어 해당 유니티파일을 업로드해주세요.

문제점

  • 진행 도중 제 사용자이름이 한글로 되어있어 문제가 발생하였습니다..

  • 빌드 파이프라인에서는 한글이 포함되면 안된다고 하네요. 이를 위해 C\jenkins_ws 라는 폴더를 만들어 대체하려고 작업중이긴 한데.. 아직 문제가 발생하고 있어 이 부분 해결된 뒤 나머지 글 올릴 듯 합니다.

  • 추가되야 하는 내용 : 파이프라인 코드, 슬랙 연동 (빌드 파일 및 주석)

profile
Unity 게임 개발자를 준비하는 취업준비생입니다..

0개의 댓글