1.01 ^ 365 = 37.78

Unity + iOS + Jenkins 빌드 자동화 정리 본문

프로그래밍

Unity + iOS + Jenkins 빌드 자동화 정리

Youngchangoon 2020. 6. 21. 22:28

Jenknis란

Jenkins는 빌드 자동화를 도와주는 도구로 오픈소스이며, 빌드 자동화와 관련한 여러가지 플러그인들을 제공하고 있습니다.

사용하는 이유

빌드를 하고 배포를 하는 과정을 손수 하게된다면 매우 번거러울 뿐만 아니라
비효율적이고 실수 한번에 에러가 나기 쉽습니다.
Jenkins를 이용한다면 빌드 및 배포 과정에 실수를 줄여주고, 편리하게 빌드를 할 수 있게 됩니다.

기본화면

Jenkins를 설치하고 계정 설정을 마치면, localhost:8080를 들어가면 아래와 같은 화면이 보입니다.

jenkins 설치 후, localhost:8080을 들어가면 보이는 첫 화면

여기서 사용했던 메뉴들을 간단히 정리해보면

  1. 새로운 Item -> Freestyle project
    이 기능이 Jenkins의 핵심입니다. 빌 파이프라인을 만들수 있습니다.

  2. Jenkins 관리 -> 플러그인 관리
    여기서 여러 플러그인들을 다운/업데이트 있습니다.

  3. Jenkins 관리 -> 시스템 설정, Global Tool Configuration
    플러그인 설정이나 Configruation들은 여기서 설정할 있습니다.

  4. Credentials

    플러그인을 사용하면서 필요한 계정 정보나 Keystore등 보안과 관련된 부분은 여기서 관리합니다.


Jenknis + Unity + iOS 세팅

Requirements ( 필요한 것들 )

아래 플러그인은 Jenkins의 플러그인 관리에 들어가셔서 검색 후 설치하시면 됩니다.

  1. Plugins ( Jenkins 플러그인들 )
    1. Credentials ( 기본 플러그인, 따로 설치 x )
    2. Git Plugin ( 기본 )
    3. Unity3d Plugin
    4. Xcode integration
    5. (optional) Slack Notification Plugin ( 빌드 알림용 )
  2. Xcode Settings ( Apple 이중 보안 이슈 )
    Altool(참고) 명령어를 사용할 때, 이중 보안을 사용하는 경우,
    이 링크에서 애플 앱 암호를 생성한 뒤, 명령줄 안에 암호를 넣어주어야 합니다.
    따라서 생성된 앱 암호를 Copy 해두어야 합니다.

파이프라인 추가하기

새로운 Item -> Freestyle project를 눌러 새로운 project 생성
(이름은 알아서)

파이프라인 순서 개요

구성하려는 대략적인 순서는 아래와 같습니다.

  1. Git plugin을 이용하여 소스코드를 가져옴.

  2. Unity cli를 이용해 빌드

  3. Xcode cli를 이용해 빌드 및 아카이빙

  4. 아카이빙되어 나온 ipa파일(애플 실행파일)을 altool 명령어를 이용해 itunes로 업로드

  5. (옵션) 모든것이 완료되면 Slack Notification 실행

세부적인 설정 정보

소스코드관리

Git 설정
  - Repository URL -> .git으로 끝나는 링크를 첨부
  - Credentials -> ( Username with password 타입의 계정을 생성 후 추가 )
  - Branch Specifier (blank for 'any') -> */master

빌드 유발, 빌드환경

이부분은 스킵하였습니다.


빌드 세팅

  1. Invoke Unity3d Editor ( 유니티 빌드 부분 )

    • installation name 설정은 Global tool Configuration에 Unity부분을 참고.

    • Editor command line arguments ->

      -quit -batchmode -buildTarget iOS -executeMethod JenkinsBuildProcessor.BuildIOS

      !중요!: 마지막 부분인 JenkinsBuildProcessor.BuildIOS 부분은 해당 유니티 프로젝트 내에
JenkinsBuildProcessor 라는 static 클래스가 있어야하고,
BuildIOS()라는 static함수가 있어야 합니다. ( Unity 내의 빌드 자동화코드 )

  2. Execute shell ( 명령줄 실행 )

    • Command ( Git 명령어를 통해 파일이 바뀐부분을 자동 커밋후 푸쉬 )
      
git add .
git commit -m 'Update iOS Build Numbers'

      git push origin HEAD:master


  3. Xcode ( Xcode에서 자동으로 아카이빙 하기 )
    여기에 적혀있지 않은건 빈칸이나 체크되어있지 않습니다.|

< General build settings >

  • Developmnet Team -> ( 시스템 설정에서 추가 )

  • Configuration -> Release

  • Xcode Schema File -> Unity-iPhone

  • Generate Archive? -> Check

  • Pack application, build and sign .ipa? -> Check

    • Export method -> app-store

    • .ipa filename pattern -> Unity-iPhone

    • Upload Symbols? -> Check

    • Pack on demand resources? -> Check

    • Strip Swift Symobols? -> Check

< Code signing & OS X keychain options >

  • Automatic Signing -> Check

< Advanced Xcode build options >

  • Xcode Project Directory -> ./Build/IOS

    Unity에서 빌드하고 나온 Xcode의 위치를 적어주면 됩니다.

4. Excute shell ( altool 이용해 ipa파일 전송 )

  • Command
    xcrun altool --upload-app -f "./Build/IOS/build/Release-iphoneos/Unity-iPhone.ipa" -u
    *itunes connect 아이디* *위에서 copy한 앱 암호*


마지막 shell scirpt가 실행되면 자동으로 itunes connect에 빌드 파일이 올라가게 됩니다.

추가로, JenkinsBuildProcessor에 대한 스크립트는 이 링크에 올려놓았으니
받으신 다음에 적절히 수정하셔서 사용하시면 될 것 같습니다!

안드로이드 플랫폼은 2019.3으로 넘어오면서 자동화 빌드와 관련하여 Gradle쪽에 이슈가 있어서 해결되는대로 포스팅하려고 합니다 ㅜㅜ

 

 

'프로그래밍' 카테고리의 다른 글

[Android] .AAB 파일에서 .APK 파일로 변환 하는 법  (0) 2021.10.19