https://dev-junwoo.tistory.com/148
Github Action으로 유니티 빌드하기
마켓 플레이스
https://github.com/marketplace?type=actions
깃허브 액션에도 마켓 플레이스가 있다.
하나하나 다 만들 필요없이, 남들이 만들어둔 좋은 액션들을 가져다가 쓰면 된다.
유니티로 검색해보면 많은 액션들이 뜨는데, 가장 유명한 game-ci의 Unity - Builder를 사용해보자.
Github Secrets
https://game.ci/docs/github/builder
game-ci의 도큐먼트를 살펴보면 빌드하는데 라이센스,유니티 아이디,패스워드가 필요하다.
하지만 이런 중요한 정보를 코드안에 그냥 적어둘수가 없으니, 깃허브에서 지원하는 Secrets를 사용하면 된다.
레포지토리의 Settings - Secrets and variables에서 Actions로 들어가서
변수안에 값을 넣듯이 미리 만들어두고 사용만 하면된다.
암호화되어 저장되고, Actions 실행중에만 복호화되어 사용된다고 한다.
그리고 수정버튼을 눌러서 들어가도 전에 저장해놓은 값을 볼 수 없다.
유니티 이메일과 패스워드는 쓰시는 유니티 계정을 넣어주면 되고, 라이센스가 문제인데
해당 폴더로 들어가면 ulf 파일이 있다.
메모장이나 아무 편집기로 열어서 그대로 복붙하면 끝이다.
유니티 빌드 워크 플로우 만들기
name: UnityBuildTest
on:
workflow_dispatch:
permissions: write-all
jobs:
#Job 설정
buildForAndroid:
name: Build Android🛸🛸🛸
runs-on: ubuntu-latest
steps:
# Step1 - Check Out
- name: Check Out
uses: actions/checkout@v4
with:
fetch-depth: 0
lfs: true
# Step2 - Cache Library
- name: Cache Library
uses: actions/cache@v4.0.2
with:
path: Library
key: Library-${{ hashFiles('Assets/**', 'Packages/**', 'ProjectSettings/**') }}
restore-keys: |
Library-
# Step3 - Unity Build
- name: Unity Build
uses: game-ci/unity-builder@v4
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
with:
targetPlatform: Android
# Step4 - Upload Build File
- name: Upload Build File
- uses: actions/upload-artifact@v3
with:
name: Build-Android
path: build
Step 의 run 과 uses
Step안에서는 run과 uses를 사용할 수 있는데, 차이점은 아래와 같다. (1편에서 예제는 run을 썼다.)
run : 쉘 커맨드 실행
uses : 마켓플레이스에 있는 액션 사용
나는 game-ci의 예제를 보고 이런식으로 만들어 주었다.
단계 1 : 체크아웃
-레포지토리의 파일 가져오기
단계 2: 라이브러리 폴더 캐싱
- 큰 Library 폴더를 미리 캐싱해두고 빌드를 하기때문에 빌드 속도를 단축시킬 수 있다.
- 키를 Library 접두사와 함께 Assets,Packages,ProjectSettings 디렉토리 내의 파일들에 대한 해시값을 기반으로 생성된다고 한다.
- 파일들의 내용이 변경될때마다 새로운 해시값이 생성돼서, 변경사항이 있을때만 새로운 캐시를 생성한다.
단계 3: 유니티 빌드
- 안드로이드를 타겟으로 빌드를 해주었다.
- 병렬적으로 다른 타겟의 빌드도 함께 돌릴 수 도 있다.
- https://game.ci/docs/github/getting-started#workflow-examples
단계 4: 빌드 파일 업로드
- 빌드파일을 깃허브 액션 서버에 저장한다.
빌드 확인
Actions에 들어가서 확인을 해보니 빌드가 성공했다.
21분이 걸려서 빌드를 완료 했다.
그리고 하단에 Build - Android 라는 빌드 파일이 생성 되었다.
누르면 다운이 가능하다.
추가: 안드로이드 빌드에서의 디스크 부족
한번 더 빌드를 하니 오류가 떴다.
도커에 새로운 레이어를 등록할때 디스크 공간이 부족하다는 에러인데,
game-ci의 Common issues에도 올라온 문제였다.
https://game.ci/docs/troubleshooting/common-issues#no-space-left-on-device
다행스럽게도 깃허브 Issues에 누가 올린 질문에 댓글을 해놓은게 있어서 이 글을 참고해서 해결법을 찾았다.
https://github.com/game-ci/unity-builder/issues/191
# Free up disk space
- name: Free Disk Space for Android
run: |
sudo swapoff -a
sudo rm -f /swapfile
sudo apt clean
docker rmi $(docker images -q)
df -h
위의 코드를 캐싱과 유니티 빌드 스텝 사이에 추가 해주었다.
2번 연속 빌드가 잘 진행되었고, 첫번재 빌드는 22분, 두번째 빌드는 10분가량으로 시간이 반으로 줄어들은것을 확인했다.
3편에서는 마지막으로 Nas에 업로드하고 Slack으로 알림을 던지는 작업을 진행해보겠다.
Github Action으로 Unity 자동 빌드 제작해보기 (CI/CD) - 3편
https://dev-junwoo.tistory.com/150
'게임 엔진 > Unity' 카테고리의 다른 글
Unity 라이브러리 추천 - RestClient (0) | 2024.03.24 |
---|---|
Github Action으로 Unity 자동 빌드 제작해보기 (CI/CD) - 3편 (1) | 2024.03.23 |
Github Action으로 Unity 자동 빌드 제작해보기 (CI/CD) - 1편 (0) | 2024.03.23 |
고양이 스낵바 블로그 보고 따라하기 - 커스텀 UI & 자동 코드 생성 (1) | 2024.03.04 |
[Unity] Canvas - RenderMode & Scaler (0) | 2023.08.04 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!