포스트

Github Action을 통해 유니티 자동 빌드 구축

본 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있다면 언제든지 피드백을 주시면 감사하겠습니다. 참고로만 활용해주시길 바랍니다.

개요


Github Action을 사용하여 유니티 빌드 자동화를 쉽게 구축할 수 있다.

프로젝트를 진행하다 보면 필수적으로 빌드 파일에서 테스트를 해보아야 하는데, 수정 사항이 있을 때마다 에디터에서 직접 빌드를 하게 되면 빌드 시간 동안 개발을 할 수 없다.

따라서 빌드 자동화를 통해 생산성을 높힐 수 있다.



1. 유니티 프로젝트를 깃허브 레포지토리에 퍼블릭으로 등록


image

프라이빗 레포지토리의 경우 요금이 부과된다.



2. Secrets 등록


유니티를 빌드하기 위해선, 유니티 라이선스 정보와 유니티 이메일, 비밀번호가 필요하다.

image

레포지토리의 SettingsSecrets and VariablesActionsNew Repository Secret에 등록해 정보를 감추면서 Github Actions에서 사용할 수 있다.

  • UNITY_LICENSE - 라이선스 파일의 내용을 복사
  • UNITY_EMAIL - 유니티 로그인에 사용한 이메일 주소
  • UNITY_PASSWORD - 유니티 로그인에 사용한 비밀번호

위 3가지를 작성해주면 된다.

윈도우 기준 라이선스 파일은 아래 경로에서 확인할 수 있다.

  • C:\ProgramData\Unity\Unity_lic.ulf



3. Actions 구성하기


image

image

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
name: Automated Build

on:
  push: # main 브랜치에 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

      # 캐시파일을 생성하여 다음 빌드시 더 빠르게 빌드를 할 수 있도록 해줍니다.
      - uses: actions/cache@v4
        with:
          path: Library
          key: Library-$
          restore-keys: |
            Library-

      # Build
      - name: Build project
        uses: game-ci/unity-builder@v4
        env:
          UNITY_LICENSE: $
          UNITY_EMAIL: $
          UNITY_PASSWORD: $
        with:
          targetPlatform: StandaloneWindows64
          buildName: UnityBuild

      # Output
      - uses: actions/upload-artifact@v4
        with:
          name: UnityBuild
          path: build

위 내용의 main.yml 파일을 생성한다.



4. main 브랜치에 푸시


main 브랜치에 푸시가 될 때마다 자동으로 빌드가 되는 것을 확인할 수 있다.

image

각 작업을 들어가서, 하단에 Artifact에 빌드 파일이 .zip로 올라와 있는 것을 확인할 수 있다.

image



+ EC2 IP/Port 추가하기


내 프로젝트 같은 경우에는, 서버에 접속하기 위해 EC2의 IP와 포트 번호가 필요했다.

기존에는 팀원 내부적으로만 공유되는 json 파일 등을 사용해 깃허브에 공개적으로 올리지 않고 관리하였고, 유니티 에디터에서 빌드해서 문제가 없었다.

하지만 Github Action을 통해 빌드를 하게 된다면, 서버의 IP 주소와 포트 번호를 로컬에만 저장해서 할 수 없다.

깃허브에 공개적으로 IP를 올린다면 AWS 요금이 부과될 수 있으므로, 마찬가지로 Secrets에 등록하여 사용하였다.

Secrets에 서버의 IP와 Port 번호를 Json 형태로 등록해 사용한다.

  • SERVER_INFO - Json 형태의 서버의 IP와 포트 번호
1
2
3
4
{
    "ip": "0.0.0.0",
    "port": "80"
}

그리고 아래 코드를 main.yml 파일의 # Build 바로 위에 추가한다.

1
2
3
4
# EC2 서버의 IP와 Port를 설정
- name: Secret Setting
  run: |
    New-Item -Path .\Assets\Resources\Json\ -Name 'ServerInfo.json' -ItemType 'file' -Value '$'

위와 같이 원하는 경로(ex: Assets\Resources\Json)에 json 파일을 생성하고, 유니티 내부에서 파싱하여 사용할 수 있다.

로컬에서도 동일한 경로에 json 파일을 넣어두어 사용하고,

빌드 시에도 위 명령어를 통해 동일하게 생성되므로 문제 없이 사용할 수 있다.

로컬에서 관리하는 json 파일은 꼭 gitignore에 등록하여 깃허브에 올라가지 않도록 조심하자.



참고

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.