Patch 시스템 개발
2026년 1월 25일130#Git #Nas #Synology +3

유니티 Launcher를 만들었다.
장기적 목표인 모션캡처 프로그램 패키징화의 첫 발자국으로, 커밋부터 빌드, 패치 생성, 배포까지 모든 과정을 자동화하였다. 드디어 짜증나는 재배포를 안 할 수 있지 않을까
https://assetstore.unity.com/packages/tools/utilities/patch-updating-system-plus-46639
요 에셋을 기반으로 작업하였다.
구축한 파이프라인은 다음과 같다.
Git Push/Tag -> Gitlab Webhook -> Jenkins Start -> Unity Build -> Create Patch -> Creat Patch Note -> Upload Nginx Server -> Discord Webhook
Launcher Start -> Launcher Check/Update(Compare with Nginx Server) -> Client Check/Update(Compare with Nginx Server) -> Client Start
각 단계는 이어져 있어 개발자는 푸시만 하면 되도록 하였다.
태그 기반 빌드

태그를 푸시하면 빌드를 트리거하도록 하였다. FM은 브랜치 관리이겠다만, 브랜치를 관리할 정도로 플젝 규모가 크지도 않다.
유니티 6에서부터 Build Profiles 기능이 새로 생겨서 조금 더 수월하게 세팅할 수 있었던 듯 하다.
```csharp
private static BuildProfile LoadBuildProfile(string path)
{
var profile = AssetDatabase.LoadAssetAtPath<BuildProfile>(path);
return profile;
}
private static void ExecuteBuildWithProfile(BuildProfile profile, string outputPath, string buildName)
{
var options = new BuildPlayerWithProfileOptions
{
buildProfile = profile,
locationPathName = outputPath,
options = GetBuildOptions()
};
var report = BuildPipeline.BuildPlayer(options);
HandleBuildResult(report, buildName);
}
```
패치노트
Git 태그와 커밋 내역을 분석해 패치노트를 자동으로 생성한다.
생성된 패치노트는 Json 형태로 저장하여, nginx 서버에 배포 파일과 같이 업로드, 런처 프로그램이 읽어서 표시해주는 방식이다
이번에 구축한 파이프라인은 개발부터 배포까지 전반적인 워크플로우 자체를 손보는 데 초점을 두었다.
커밋 → 빌드 → 패치 → 배포 과정이 매번 손으로 이루어지다 보니, 작업 흐름이 자주 끊기고 불필요한 재작업이 반복되는 구조였다. 그래서 이번에는 “푸시만 하면 끝나는 구조”를 만드는 것을 목표로 파이프라인을 구성했다.

특히 만족스러운 부분은 패치노트 자동 생성이다.
별도로 문서를 작성할 필요 없이, Git 커밋 메시지만 잘 작성해두면 빌드 과정에서 패치노트가 함께 생성되도록 구성했다. 생각보다 체감이 큰 편의 기능이다.
이 구조를 기반으로 다른 프로젝트에도 점진적으로 확장해 나갈 생각이다.
한 번 만들어 두면 계속 써먹을 수 있는 쪽이 훨씬 낫다.
태그
#Git#Nas#Synology#Unity#VCS#DevOps
관련 포스트
Unity 카테고리의 다른 글
