[Public UPM 개발(3/3)] OpenUPM 빌드 파이프라인 구축

2025. 6. 10. 01:27·유니티(Unity)/툴 개발

📌 개요

 

 

 

 

드디어 마지막 관문에 오신 것을 환영합니다!

 

이전 챕터에서 Git 메시지를 분석하여 자동으로 버전 관리를 할 수 있도록 했었죠?

 

이번에는 제작한 패키지를 OpenUPM에 등록하고 빌드 파이프라인을 세팅하는 작업을 할거예요.

 

그러면 마침내 여러분 만의 Unity Package Manager을 구축할 수 있답니다!

 

 

 

 

 


📌 Chapter 3. OpenUPM 빌드 파이프라인 구축

 

https://openupm.com/

 

Open Source Unity Package Registry

OpenUPM is a managed UPM registry with automatic build services for open-source Unity packages.

openupm.com

 

OpenUPM 이란?

 

UPM(Unity Package Manager)용 오픈소스 패키지 레지스트리 서버입니다.

 

자신이 제작한 패키지를 효율적으로 관리하고 배포할 수 있게 해주는 서비스랍니다.

  • 간편한 설치 가능 : CLI 사용 가능 (UPM 연동 지원)
  • 의존성 관리 해결 : 패키지 간의 의존성을 관리 및 해결
  • 커뮤니티 중심 : 오픈 소스기 때문에 다양한 개발자의 패키지 참고 가능

그럼 바로 openUPM 사용법을 알아보도록 하겠습니다.

 

 

 

 

 

 

1. npc 설치

 

먼저 openUPM을 사용하기 위해선 npm이 필요합니다.

 

터미널을 열어 npm -v을 입력하여 설치되었는지 확인합니다.

 

만약 없다면 아래 링크에서 Node.js을 설치해줍니다.

 

https://nodejs.org/ko

 

Node.js — 어디서든 JavaScript를 실행하세요

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

 

 

 

 

2. openUPM 설치

 

npm install -g openupm-cli 을 입력하여 openUPM을 설치해줍니다.

 

 

그리고 openupm --version 을 입력하여 정상적으로 설치됐는지 확인합니다.

 

 

 

 

 

3. openUPM 패키지 업로드

https://openupm.com/packages/add/

 

Package Add

Submitting an Open Source UPM Package Package Criteria Before submitting a GitHub-hosted UPM package, please ensure it meets our package criteria. To submit a UPM package, follo...

openupm.com

 

위 사이트를 클릭합니다.

 

※ 물론 홈페이지에서 Packages - Submit new package 을 눌러서 들어갈 수도 있다.

 

 

이제 여러분이 제작한 Git 패키지를 등록할 차례입니다!

 

맨 아래 Repository 입력란에 제작한 패키지 Repository를 등록합니다.

(예: owner/project-name 형태)

 

 

 

그리고 Discovered by 항목에 username 설정합니다.

 

 

 

그 후 패키지의 용도에 맞게 Promotion 을 체크합니다.

 

 

 

모두 작성했다면 Submit metadata 버튼을 누릅니다.

 

 

 

그러면 openupm github repository로 이동됩니다.

 

Fork this repository 버튼을 눌러주세요.

 

※ 초록색 버튼 클릭

 

 

 

그 후 commit changes 버튼을 눌러주세요.

 

 

 

마지막으로 Create pull request 버튼을 눌러 RP을 생성해줍니다.

 

 

 

그러면 openUPM에서 패키지를 검증하기 시작합니다. (이 과정은 첫번째 패키지 등록에만 해당)

 

검증은 최대 몇 시간까지 진행될 수 있으며, 문제가 없다면 openUPM이 자동으로 등록해줘요!

 

 

 

현재까진 레지스트리 서버에 등록되지 않은 상태...

 

 

 

얼추 시간이 지나니 패키지가 등록됐네요!

 

※ 패키지 설명에서 한글은 깨지므로 영어 사용을 추천

 

openupm.com/packages/com.chennyang.developkit/

 

위 링크처럼 자신의 패키지 이름으로 사이트에 접속할 수 있어요.

 

 

 

들어가면 제작한 패키지에 대한 정보를 확인할 수 있습니다.

 

 

 

 

 

4. openUPM 패키지 설치 (CLI 방식)

패키지를 openUPM 레지스트리 서버에 잘 등록하셨죠?

 

그렇다면 이번에는 Unity 프로젝트에 패키지를 설치해볼 차례입니다!

 

 

Unity 프로젝트가 위치한 곳에서 터미널을 실행합니다.

 

 

 

여기서 openupm search {package-name} 명령을 실행합니다.

 

그러면 위처럼 패키지 정보가 담긴 멋진 표를 확인할 수 있어요.

 

 

 

패키지를 확인했으니, 이번에는 openupm add {package-name} 명령을 실행합니다.

 

 

 

그러면 위 사진처럼 Scope 레지스트리가 등록된 것을 확인할 수 있어요.

 

 

 

프로젝트의 package.json을 열어보면 scope 레지스트리 설정도 확인해볼 수 있답니다.

 

 

 

만약 여기서 "fix: ~~" 라는 메세지와 함께 커밋한다면 어떤 일이 벌어질까요?

 

 

 

이전에 개발한 github action workflow가 작동되며 semantic-release가 동작합니다.

 

 

 

그리고 openUPM 빌드 파이프라인도 버전이 변경됨에 따라 자동으로 갱신되는 것을 확인할 수 있어요!

 

평균적으로 몇 분 ~ 몇 십분 정도 소요됩니다.

 

 

 

빌드가 끝나면 위처럼 버전 히스토리가 갱신됩니다!

 

 

 

 

 

5. openUPM 패키지 설치 (Scoped Registries)

 

사실 openUPM의 강력한 기능은 Scope 레지스트리 등록입니다.

 

저는 이 기능을 위해 이 포스팅을 시작했다고 봐도 무방해요.

 

Scope는 패키지 네임스페이스의 그룹핑으로,

 

이를 통해 같은 조직 또는 개발자가 만든 패키지를 한번에 등록할 수 있답니다!

 

Scope 레지스트리 구조

  • Name: 레지스트리 이름 (*아무거나 가능)
  • URL: https://package.openupm.com
  • Scope(s): 레지스트리 범위 (참고: com.chennyang = com.chennyang.*)

 

 

 

위 2개의 패키지를 한번의 Scope 레지스트리 등록으로 모두 불러올 수 있답니다.

 

현재까진 테스트라서 2개지만, 추후에 10개 또는 20개도 한번에 불러올 수 있으니 편하겠죠?

 

 

 

 

 

6. openUPM 패키지 종속성 추가

 

이번에는 패키지 종속성을 추가하는 방법에 대해 살펴보겠습니다.

 

커스텀 패키지 내부에 있는 package.json 파일을 열어 종속성을 추가해줄게요.

 

⚠️ 종속성 추가할 때 알아야 할 점!

더보기

Git 종속성은 manifest.json에서만 지원되고 package.json의 종속성에서는 지원되지 않습니다.

예를 들어, Unitask 같은 git 패키지는 SemVer 형식이 아니기 때문에 호환되지 않죠.

Unitask는 openUPM에 등록되어 있으니 Scope 레지스트리를 등록하거나,

또는 직접 Manifest.json을 수정하여 등록하는 코드를 작성해야 합니다.

 

 

종속성을 추가하고 commit을 통해 버전을 올려본다면,

 

 

 

위처럼 종속성이 추가됨을 확인할 수 있습니다!

 

 

 

Unity 프로젝트로 돌아가 업데이트를 해준다면,

 

 

 

마찬가지로 종속성으로 묶인 패키지도 함께 설치되는 것을 알 수 있습니다.

 

 

 

 

 

7. openUPM 개발 소감

 

이전에 패키지를 만들면서 버전 관리와 종속성을 해결하기 어려웠는데,

 

이번 기회에 UPM으로 쉽게 관리할 수 있다는 사실을 알게되어 기쁘네요!

 

앞으로 저만의 라이브러리를 개발하여 앞으로 신작 개발에 많은 도움이 되면 좋겠군요.

 

 

 

 

그리고 openUPM은 오픈소스기 때문에 다양한 패키지들이 많답니다, 후후

 

게임 개발에 필요하거나 공부하고 싶은 기술이 있다면 openUPM을 참고해도 좋을 것 같아요.

 

다만! 모든 코드가 공개된가는 점에서 다소 아쉬웠습니다.

 

만약 사내 또는 비공개를 원한다면 verdaccio 레지스트리 서버를 구축하여 UPM을 제작하는게 좋을 것 같아요.

 

※ OpenUPM에 대해 궁금한 점이 있다면 아래 공식 문서를 참고해주세요!

 

https://openupm.com/docs/faq.html

 

Frequently Asked Questions

Frequently Asked Questions This page covers frequently asked questions about OpenUPM. Q: Is this project associated with Unity Technologies Inc.? No, OpenUPM is an autonomous, o...

openupm.com

 

 

 

 

 

'유니티(Unity) > 툴 개발' 카테고리의 다른 글

[Private UPM 개발(2/4)] Verdaccio 레지스트리 서버 구축  (0) 2025.06.18
[Private UPM 개발(1/4)] 클라우드 컴퓨팅을 위한 가상머신 생성  (1) 2025.06.17
[Public UPM 개발(2/3)] Semantic-Release 자동화  (2) 2025.06.08
[Public UPM 개발(1/3)] 로컬 커스텀 패키지 제작  (0) 2025.06.07
[EditorWindow] 기본적인 에디터 창 구축  (0) 2025.01.22
'유니티(Unity)/툴 개발' 카테고리의 다른 글
  • [Private UPM 개발(2/4)] Verdaccio 레지스트리 서버 구축
  • [Private UPM 개발(1/4)] 클라우드 컴퓨팅을 위한 가상머신 생성
  • [Public UPM 개발(2/3)] Semantic-Release 자동화
  • [Public UPM 개발(1/3)] 로컬 커스텀 패키지 제작
게임을 제작하는 사람
게임을 제작하는 사람
안녕하세요, 게임 개발자 천냥입니다! 게임을 제작하는 개발자들에게 도움이 될만한 정보와 지식을 제공하는 블로그입니다 ;)
  • 게임을 제작하는 사람
    천냥의 게임 개발 일지
    게임을 제작하는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기 (93) N
      • 유니티(Unity) (62) N
        • 콘텐츠 개발 (9) N
        • 툴 개발 (11)
        • 이슈 도감 (10)
        • 최적화 기법 (4)
        • 쉐이더 (3)
        • 포톤 (0)
        • 이론 정리 (15)
        • 유용한 패키지 정리 (3)
        • 패키지: Cinemachine 정리 (7)
      • C# (2)
      • IT (29)
        • 기술 정리 (2)
        • 알고리즘 (26)
        • Git (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    upm
    커스텀 패키지
    가상머신
    패키지 버전 관리
    allin1spriteshader
    oracle
    verdaccio
    private upm
    editor
    UI
    에디터
    오블완
    unity c# 서버
    시네머신
    openupm
    Cinemachine
    쉐이더
    카메라
    addressable
    최적화
    티스토리챌린지
    코딩 테스트
    끝 없는 2d 맵
    유니티
    upm 개발
    Shader
    C++
    코테
    custom package
    Unity
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
게임을 제작하는 사람
[Public UPM 개발(3/3)] OpenUPM 빌드 파이프라인 구축
상단으로

티스토리툴바