형상관리

[GItHub] 깃허브 CI/CD 구축하기

내공부방 2025. 2. 11. 00:36
반응형

예전 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 파일 생성)

 

생성이 완료되면 Root 부분에 이렇게 폴더가 생기고 폴더 내 파일이 생긴 것을 볼 수 있다.

 

 

- 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 내에서 보고 따라하면 된다! 

 

그럼 이제 기본적인 세팅은 끝!!! 

 

반응형