깃랩 프로젝트 안드로이드,IOS 빌드자동화 하기 (CICD)

깃랩으로 프로젝트를 자동으로 안드로이드,IOS로 빌드하고 배포까지 한번에 하는 법을 알아냈다..

 

안드로이드


1️⃣ 서버에 패키지 설치

서버 관리자는 러너에 다음 패키지들을 설치해야 해요

  • JDK
  • Android SDK
  • Gradle
  • Cordova
  • Build Tools

 

2️⃣ .yml 구성

 

#텍스트#로 표시된 부분은 사용자가 직접 수정해야 합니다. (경로, 폴더명 등)

 
build-android: 
	stage: mobile-build 
    
    variables: 
    	ANDROID_HOME: #"SDK 경로"# 
        PATH: #"SDK의 cmdline-tools와 platform-tools를 포함한 경로"# 
        
    dependencies: 
    	- build-job 
    
    before_script: 
    	- cd #Cordova 폴더# 
        - npm install 
        - rm -rf www 
        - mkdir www 
        - cp -R ../#스파이더젠 프로젝트 폴더#/bin/* www/ 
        
    script: 
    	- cordova platform add android || true 
        - npx cordova build android 
        - find platforms/android/app/build/outputs/apk -name "*.apk" -exec cp {} ./output.apk \; 
        - ls -la output.apk 
        
    artifacts: 
    	paths: - #Cordova 폴더#/output.apk 
        expire_in: 1 week

 

3️⃣ 각 코드 내용은?

3.1 Variables 설정

  • ANDROID_HOME: Android SDK의 경로를 설정합니다.
  • PATH: SDK 내 cmdline-tools 및 platform-tools 경로를 추가해 필요한 명령어를 사용할 수 있게 합니다.

3.2 dependencies

  • build-job 단계의 결과물(아티팩트)을 가져옵니다.

3.3 before_script

  • cd #Cordova 폴더#: Cordova 프로젝트 디렉터리로 이동합니다.
  • npm install: 필요한 Node.js 패키지를 설치합니다.
  • rm -rf www: 기존 www 폴더를 삭제합니다.
  • mkdir www: 새로운 www 폴더를 생성합니다.
  • cp -R ../#스파이더젠 프로젝트 폴더#/bin/* www/: 이전 빌드 파일을 복사합니다.

3.4 script

  • cordova platform add android || true: 안드로이드 플랫폼을 추가합니다. 이미 추가된 경우 무시합니다.
  • npx cordova build android: 안드로이드 앱을 빌드합니다.
  • find platforms/android/app/build/outputs/apk -name "*.apk" -exec cp {} ./output.apk \;: 생성된 APK 파일을 프로젝트 루트로 복사합니다.
  • ls -la output.apk: APK 파일이 정상적으로 복사되었는지 확인합니다.

3.5 artifacts

  • 빌드 완료 후 생성된 output.apk를 저장합니다.
  • 저장된 아티팩트는 1주일간 보관됩니다.

4️⃣ 예시 (스파이더젠 빌드 -> 안드로이드 빌드 단계)

 

 

IOS


 

1️⃣ .yml 구성

#텍스트#로 표시된 부분은 사용자가 직접 수정해야 합니다. (경로, 폴더명 등)

 
 build-ios: 
 	stage: mobile-build 
    tags: 
    	- macos 
    
    dependencies: 
    	- build-job 
    
    before_script: 
    	- cd #Cordova 폴더# 
        - npm install 
        - rm -rf www - mkdir www - cp -R ../#프로젝트 폴더#/bin/* www/ 
        
    script: 
    	- cordova platform add ios || true 
        - npx cordova build ios --no-prepare 
        - ls -al platforms/ios 
        
    artifacts: 
    	paths: - #Cordova 폴더#/platforms/ios 
        expire_in: 1 week

 

2️⃣ 각 코드 내용은?

2.1 Variables 설정

  • tags:
    • macos 태그를 설정하여, macOS 환경에서 빌드가 수행되도록 합니다.
    • iOS 빌드는 반드시 macOS 환경에서만 가능합니다.

2.2 dependencies

  • build-job 단계의 결과물(아티팩트)을 참조하여, 이 단계에서 iOS 빌드를 진행합니다.

2.3 before_script

  • cd #Cordova 폴더#: Cordova 프로젝트 디렉터리로 이동합니다.
  • npm install: Node.js 패키지를 설치합니다.
  • rm -rf www: 기존 www 폴더를 삭제합니다.
  • mkdir www: 새로운 www 폴더를 생성합니다.
  • cp -R ../#프로젝트 폴더#/bin/* www/: 프로젝트의 빌드 파일을 www 폴더에 복사합니다.

2.4 script

  • cordova platform add ios || true:
    iOS 플랫폼을 프로젝트에 추가합니다. 이미 추가되어 있는 경우 에러를 무시하고 넘어갑니다.
  • npx cordova build ios --no-prepare:
    iOS 앱을 빌드합니다. --no-prepare 옵션을 사용하여 prepare 단계를 생략합니다.
  • ls -al platforms/ios:
    빌드된 iOS 프로젝트 폴더를 출력하여, 빌드 결과를 확인합니다.

2.5 artifacts

  • 빌드가 완료된 후 platforms/ios 폴더를 저장합니다.
  • 저장된 아티팩트는 1주일간 보관됩니다.

 

3️⃣ 예시 (스파이더젠 빌드 -> 안드로이드 빌드 -> IOS 빌드 단계)