예전 GitLab과 JenKins로 CI/CD를 구축한 적이 있는데 이번에는 GitHub CI/CD (GitHub Actions)를 구축해보려 한다!
* 다시 간단하게 복습 겸 CI CD란?
지속적 통합과 지속적 배포의 약자로 코드를 작성하고 이를 버전 관리 시스템에 올리면 자동으로 테스트하고 배포하는 과정을 CI/CD라고 한다
CI : 코드 변경 사항을 자주 통합하여, 버그를 조기에 발견하고 해결할 수 있도록 도와준다.
CD : 이러한 통합된 코드를 자동으로 배포하는 과정
자 이제 GitHub Actions를 사용하여 CI/CD 파이프라인을 구축 해보자
1. 워크플로우 파일 생성
- 디렉터리 생성 : 프로젝트 저장소 루트에 .github/workflows 폴더 만들기
: 깃허브에 올라가 있는 프로젝트 내 Actions 탭 클릭
: 하단에 Set up a workflow yourself 클릭
: 상단 루트에 자동으로 프로젝트명/.github/workflows/main.yml 파일이 생긴다! (YAML 파일 생성)
- YAML 파일 구성 : Unity에서 CI 파이프라인 기본 구조
name: Unity Android CI Pipeline
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
# 1. 저장소 체크아웃
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
# 2. Unity 캐시 설정 (빌드 속도 향상)
- name: Cache Unity Library
uses: actions/cache@v4
with:
path: Library
key: Library-${{ hashFiles('Assets/**', 'Packages/**', 'ProjectSettings/**') }}
restore-keys: |
Library-
# 3. Unity Android 빌드
- name: Build Unity project for Android
uses: game-ci/unity-builder@v4
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
with:
unityVersion: 2022.3.37f1 # Unity 버전 명시
targetPlatform: Android
androidExportType: androidPackage # 'androidPackage'를 사용하면 .apk 또는 .aab 생성
androidKeystoreName: ***.keystore
androidKeystoreBase64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
androidKeystorePass: ${{ secrets.ANDROID_KEYSTORE_PASS }}
androidKeyaliasName: ${{ secrets.ANDROID_KEYALIAS_NAME }}
androidKeyaliasPass: ${{ secrets.ANDROID_KEYALIAS_PASS }}
# 4. 빌드 결과물 업로드 (APK 또는 AAB)
- name: Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
name: Android-Build
path: build/Android/*.apk # 또는 .aab 사용 가능
!!!코드 설명 및 추가 설정 !!!
1. runs-on: ubuntu-latest : 빌드는 Linux 환경이 더 안정적이기 때문에 Windows가 아닌 ubuntu-latest를 사용
- GitHub Actions는 클라우드 환경에서 실행되므로, 로컬 개발 환경(Windows)과 무관하게 빌드를 수행
- 즉, GitHub에서 제공하는 Ubuntu 기반의 가상 머신에서 빌드가 실행되므로, 로컬이 Windows여도 빌드가 가능
2. unityVersion: 2022.3.37f1 : 사용하고 있는 Unity 버전 명시!
3. androidExportType: androidPackage : 이렇게 사용하면 .apk 또는 .aab가 생성된다.
4. androidKeystoreName: ***.keystore : 프로젝트에서 사용 중인 KeyStore 이름을 기재 위치는 아래 이미지 참고
5. Secrets and Variables 설정하기
아래와 같은 코드를 사용하기 위해서는 Secrets and Variables을 설정해줘야 한다.
- androidKeystoreBase64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
- androidKeystorePass: ${{ secrets.ANDROID_KEYSTORE_PASS }}
- androidKeyaliasName: ${{ secrets.ANDROID_KEYALIAS_NAME }}
- androidKeyaliasPass: ${{ secrets.ANDROID_KEYALIAS_PASS }}
5.1 secrets.ANDROID_KEYSTORE_BASE64 설정 방법
- Actions 들어가서 New repository secret 버튼 클릭
- 그 다음 잠시 Windows PowerShell에 들어간다 (KEYSTORE_BASE64형태를 얻어오기 위해)
- Keystore가 있는 경로로 아동 (ex. cd ~~~)
- 콘솔 창에 이와 같이 입력 [Convert]::ToBase64String((Get-Content "***.keystore" -Encoding byte)) | Set-Clipboard
( "***.keystore" 는 keystore 이름)
- 저렇게 입력을 하면 아무 반응이 없을 것이다. 자동으로 Base64값을 가져오고 복사하기가 된 상태니 당황하지 말자!
- 다시 깃허브로 돌아가서 위에 New repository secret 버튼 클릭하고 나서 열린 페이지에서 Ctrl +v 하면 바로 가져온 Base64가 나올 것이다 (아래 이미지와 같이 Name은 ANDROID_KEYSTORE_BASE64)
- 나머지도 똑같이 Name은 동일하게 값은 Unity Publishing Settings 내에서 보고 따라하면 된다!
그럼 이제 기본적인 세팅은 끝!!!
'형상관리' 카테고리의 다른 글
[SourceTree] remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com. (0) | 2024.12.29 |
---|---|
Gitlab과 Jenkins로 CI/CD 구축 (3) (0) | 2024.08.06 |
Gitlab과 Jenkins로 CI/CD 구축 (2) (0) | 2024.08.05 |
Gitlab과 Jenkins로 CI/CD 구축 (1) (0) | 2024.08.05 |