유니티에서 빌드를 하게 되면 빌드 시간 동안 팀 프로젝트를 할 수 없게 되어버립니다.
빌드 시간이 짧으면 큰 타격은 없는데, 빌드 시간이 길어지면 작업을 할 수 없으니 치명적이죠.
자동화 빌드 시스템을 구축하면 외부환경에서 빌드를 할 수 있어서 빌드에 의한 작업 흐름 끊김을 방지할 수 있습니다.
이번 문서에서는 Github에서 제공하는 Action이라는 기능을 사용하여 자동화 빌드 시스템을 구축해볼 것입니다. 😎
이 문서의 타깃층은 제작 중인 프로젝트 리소스가 외부에 공개되어도 괜찮은 경우에 적합하며,
비공개 프로젝트의 경우 비권장합니다.
리포지토리가 Public이라면 무료입니다 (와!! 대박..! 👀)
💡 Private 리포지토리는 금액을 요구합니다. 가격 안내 보기
프로젝트를 제작하다 보면 유료 에셋은 사용하는 경우가 많습니다.
예를 들면, Amplify Shader Editor(비주얼 셰이더 저작 도구)같은? 🤔
Public으로 리포지토리를 관리할 예정이라면 이러한 에셋은 Git Ignore를 통해 리포지토리 업로드되지 않도록 하며, 팀 내부에서만 열람 가능한 구글 드라이브에 에셋을 업로드하여 관리하도록 환경을 구성합니다. 🙂
GameCI는 Github Action과 함께 사용하여 게임 데이터를 자동 분석하고 빌드를 지원하며,
게임 개발 및 운영 효율성을 높일 수 있는 플랫폼입니다.
GameCI의 특징은 다음과 같습니다.
Game CI는 Unity 빌드를 위해 제작되었으며 언리얼은 다른 CI를 사용해야합니다.
사용하는 유니티 버전은 너무 최신 버전을 사용할 경우 ProjectVersion.txt를 찾지 못했다 라는 에러를 발생시킨다는 점을 주의해야합니다. (LTS사용 권장)
Unity 프로젝트를 Git 리포지토리에 Public으로 업로드하여 준비합니다.
Game CI를 통해 Unity를 빌드하려면 유니티 라이선스 정보가 요구됩니다.
라이선스 정보 및 Unity ID와 PW정보는 매우 민감한 정보이기 때문에 Github에 Secrets 기능을 사용하여 정보를 전달할 것입니다.
이 자료는 Game CI의 Activation의 내용을 참고하였으며, Unity Persnal 라이선스 기준으로 설명합니다.
💡 Persnal 라이선스가 아닌 경우 추가적인 작업이 요구될 수 있음을 알립니다.
Settings
> Secrets and Variables
> Actions
으로 이동합니다.
New repository
를 클릭하여 다음과 같이 3개의 내용을 추가합니다 :
• UNITY_LICENSE
- (라이선스 파일의 내용을 여기에 복사합니다.)
• UNITY_EMAIL
- (Unity 로그인에 사용한 이메일 주소 추가)
• UNITY_PASSWORD
- (Unity에 로그인할 때 사용하는 암호 추가)
라이선스 파일은 다음 경로에서 확인할 수 있으며, ulf파일의 내용을 Secret에 작성합니다.
C:\ProgramData\Unity\Unity_lic.ulf
/Library/Application Support/Unity/Unity_lic.ulf
~/.local/share/unity3d/Unity/Unity_lic.ulf
최종적으로 3개의 Secrets 환경을 구성하여 완료합니다.
리포지토리에서 Action을 선택하고 set up a workflow yourself를 클릭합니다.
main.yml
이라는 파일을 생성할 것이며, 다음과 같이 내용을 작성하고 Commit & Push합니다.
name: Automated Build ⭐
on:
push: # Master 브랜치에 Push가 되면 빌드가 되도록 동작시킵니다.
branches: [ main ]
jobs:
buildWindows:
name: 💻 Windows-64 Bit
runs-on: windows-latest # 윈도우를 사용합니다.
steps:
# Checkout
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
# Cache (캐시파일을 생성하여 다음 빌드시 더 빠르게 빌드를 할 수 있도록 해줍니다.)
- uses: actions/cache@v4
with:
path: Library
key: Library-${{ hashFiles('Assets/**', 'Packages/**', 'ProjectSettings/**') }}
restore-keys: |
Library-
# Build
- name: Build project
uses: game-ci/unity-builder@v4
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
with:
targetPlatform: StandaloneWindows64
# Output
- uses: actions/upload-artifact@v4
with:
name: Windows Build
path: build
매번 Push가 올라올 때마다 빌드가 되는 것을 볼 수 있습니다.
빌드된 파일을 클릭하여 다운로드를 할 수 있습니다.
Mac OS 빌드를 원할 경우 다음과 같이 작성합니다.
name: Automated Build ⭐
on:
push: # Master 브랜치에 Push가 되면 빌드가 되도록 동작시킵니다.
branches: [ main ]
jobs:
buildWindows:
name: 💻 Windows-64 Bit
runs-on: windows-latest # 윈도우를 사용합니다.
steps:
# Checkout
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
# Cache (캐시파일을 생성하여 다음 빌드시 더 빠르게 빌드를 할 수 있도록 해줍니다.)
- uses: actions/cache@v4
with:
path: Library
key: Library-${{ hashFiles('Assets/**', 'Packages/**', 'ProjectSettings/**') }}
restore-keys: |
Library-
# Build
- name: Build project
uses: game-ci/unity-builder@v4
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
with:
targetPlatform: StandaloneWindows64
# Output
- uses: actions/upload-artifact@v4
with:
name: Windows Build
path: build
buildMacOS:
name: 💻 MacOS
runs-on: macos-latest # MacOS를 사용합니다.
steps:
# Checkout
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
# Cache (캐시파일을 생성하여 다음 빌드시 더 빠르게 빌드를 할 수 있도록 해줍니다.)
- uses: actions/cache@v4
with:
path: Library
key: Library-${{ hashFiles('Assets/**', 'Packages/**', 'ProjectSettings/**') }}
restore-keys: |
Library-
# Build
- name: Build project
uses: game-ci/unity-builder@v4
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
with:
targetPlatform: StandaloneOSX
# Output
- uses: actions/upload-artifact@v4
with:
name: MacOS Build
path: build
https://github.com/NK-Studio/Unity-Auto-Build-Sample
이 내용이 맛있었다면 저에게 맛있는 커피를 후원해주세요! ☕
토스 익명 송금 : 후원하기
계좌 송금 : 토스뱅크 1000-0586-4766 (김한용)
https://note4iffydog.tistory.com/55
https://qiita.com/mkc1370/items/a976880531d5d3f121b0
https://zenn.dev/nikaera/articles/unity-gameci-github-actions