MAC OS + Jenkins + Unity3d + Bitbucket 안드로이드 iOS 자동 빌드 및 Testflight를 이용한 웹 배포 (1)
Development/프로젝트 관리 2014. 6. 23. 19:55참고 : http://la-stranger.blogspot.kr/search/label/Unity3d
Ø Jenkins 홈페이지에서 설치파일 다운로드 (http://jenkins-ci.org/)
Ø GIT 저장소 bitbucket 사용 (https://bitbucket.org/)
² bitbucket 외에 GitHub 등 다른 저장소를 사용해도 무방함 (구글님의 도움을 받으면 됨)
Ø 다음 다음 다음 다음
² 설치 완료
Ø Jenkins 관리 -> 플러그인 관리
Ø 설치 가능 탭에서 아래 플러그인 설치
² GIT plugin
² Bitbucket OAuth Plugin
² Unity3d Plugin
² Email Extension Plugin
² Token Macro Plugin
² Xcode integration (OS X 에서 IOS 용 컴파일 시 추가)
² Testfilght Plugin (iOS 빌드 후 웹 배포)
Ø Jenkins 관리 -> 시스템 설정
²
Git
² Unity3d
ü Name : 각자 알아서 설정 (유니티 버전 이름으로 하면 알아보기 쉬움)
ü Installation directory : 유니티 실행파일 경로 (윈도우 / Linux / OS X 각각 설정)
² Xcode Builder
ü OS X 에 Xcode 설치 시 알아서 기본 설정 됨 (Keychains 설정 안함)
² Jenkins Location
ü Jenkins URL : 젠킨스 설치 URL
ü System Admin e-mail address : 젠킨스 관리자 e-mail
² Git plugin
ü Global Config user.name Value : Git User Name
ü Global Config user.email Value : Git User e-mail
² Extended E-mail Notification
ü Default Content Type : HTML (text/html)
ü Default Recipients : 젠킨스 기본 메일 받을 사람 (개인 메일은 “,”로 구분)
ü Default Subject : 젠킨스 기본 메일 발송 제목
ü Default Content : 젠킨스 기본 메일 발송 내용
² E-mail로 알려줌
ü SMTP 서버 : 메일 서버
ü Default user e-mail suffix : 기본 메일 주소
² Test Flight
ü Token Pair Name : 알아보기 쉬운 이름으로 설정
ü API Token : TestFilghtApp 계정 생성 및 APP 생성 후 API Token 입력
ü Team Token : 팀 생성 후 Team Toket 입력
² Testflight 회원 가입 (https://testflightapp.com)
ü Account Settings -> Upload API : API Token
ü Team Edit Info -> Team Token : Team Token
² iOS 앱 추가
ü Add Application
A. App Name : 어플 이름
B. BundleID : 빌드 시 유니티에서 설정한 BundleID (com.company.appname)
C. Platform : 당연히 iOS
² 테스터 추가 및 배포 리스트 추가
ü 계정 아이콘 -> Invite Teammate
ü People -> Add Distribution List
A. List Name : 배포 그룹 리스트 이름 (job 설정 시 입력할 내용)
B. Teammates : 배포 그룹에 포함될 테스터
² 업로드 된 앱 설정
ü Apps -> 업로드 앱 선택 -> Permissions
ü 모든 유저 및 개발자 기계로 등록된 UDID 선택 후 업데이트
ü Update Provisioning Profile 에 애플 개발자 사이트에서 다운로드한 Provisioning 파일로 개발자 기계 추가 수정 삭제 가능 (Xcode 빌드 시에도 변경된 Provisioning 파일을 사용 해야 함)
Ø Jenkins 관리 -> Configure Global Security
² Enable security : Check
ü Security Realm : Bitbucket OAuth Plugin
ü Global Bitbucket OAuth Settings
A. ClientID / Client Secret 입력
B. Bitbucket -> Manage Account -> ACCESS MANAGEMENT -> OAuth -> Add consumer
C. Add OAuth consumer
D. Key 복사 후 ClientID 에 입력
E. Secret 복사 후 Client Secret 입력
Ø Butbucket SSH keys 설정
² Bitbucket -> Manage Account -> SECURITY -> SSH keys -> Add key
² Add SSH key
ü Label : SSH 인증 라벨 (알아서 설정)
ü Key (안되면 여러 번 생성 인증 생성 인증 하다보면 됨…;;)
B. OS X / Linux : 로그인 계정 루트에서 ssh-keygen 실행
C. 걍 다 엔터 엔터 엔터 기본
D. 완료 후 ~/.ssh/id_rsa.pub 내용을 Bitbucket SSH key에 추가
5. Job 설정
Ø 새로운 Item
² Item 이름 : Job 이름 입력
² Build a free-style software project : Check
Ø 설정
² 오래된 빌드 삭제 : Check
ü 빌드 이력 유지 기간(일) : 알아서 설정 (30일 정도)
ü 보관할 최대갯수 : 알아서 설정 (30일 정도)
² 고급
ü 산출물 보관 일수 : 알아서 설정 (30일 정도)
ü Max # of builds to keep with artifats : 알아서 설정 (30일 정도)
Ø Jenkins Slave Agent 노드 설정 (로그인 계정으로 설정 할 경우 패스)
Ø 참고 : http://la-stranger.blogspot.kr/2013/10/unity-os-jenkins-2.html
² OS X 설치 시 Jenkins 계정으로 컴파일 에러남으로 노드 설정
ü Restrict where this project can be run : Check
ü Label Expression : 생성한 노드 첫 글자 입력 시 자동 완성
Ø Jenkins 를 로그인 계정으로 실행
² Jenkins 를 로그인한 계정으로 실행 하기 위한 설정
ü sudo vi /Library/LaunchDaemons/org.jenkins-ci.plist
ü UserName을 로그인한 계정으로 수정 <string>로그인한계정</string>
ü Jenkins 가 설치된 /Users/Shared/Jenkins 폴더의 소유권 변경 (하위폴더 포함)
A. sudo chown –R 로그인한계정:계정그룹 /Users/Shared/Jenkins/
ü /etc/newsyslog.d/Jenkins.conf 수정
A. sudo vi /etc/newsyslog.d/Jenkins.conf
B. /var/log/Jenkins/Jenkins.log 로그인한계정:계정그룹 644 3 * $D0 J
ü /varlog/Jenkins 소유권 변경 (하위폴더 포함)
A. sudo chown –R 로그인한계정:계정그룹 /var/log/jenkins
ü Jenkins 재시작
A. sudo launchctl unload /Library/LaunchDaemon/org.jenkins-ci.plist
B. sudo launchctl load /Library/LaunchDaemon/org.jenkins-ci.plist
Ø 소스 코드 관리
² Git
ü Repositories URL : Git 저장소 주소 입력
ü Branch Specifier (blank for ‘any’) : origin/master
Ø 빌드 유발
² 자동 빌드 시간 설정
² Build periodically : 정해진 시간에 변경 내용 있던 없던 무조건 빌드 진행
² Poll SCM : 정해진 시간에 pull 체크해서 변경 내용 있을 경우 빌드 진행
ü 분 시 일 월 주
ü 0 23 * * 1-5 : 월 ~ 금요일까지 매월 매일 23시 00분에 빌드
ü MINUTES Minutes in one hour (0-59)
ü HOURS Hours in one day (0-23)
ü DAYMONTH Day in a month (1-31)
ü MONTH Month in a year (1-12)
ü DAYWEEK Day of the week (0-7) where 0 and 7 are sunday
Ø Build
² Add build step -> Invoke Unity3d Editor (IOS 컴파일 시 빌드 추가하고 IOS 빌드 설정)
ü Unity3d installation name : 시스템 설정에서 설정한 Unity 선택
ü Editor command line arguments
A. –quit –batchMode –executeMethod Unity3dBuilder.PerformAndroidBuild
B. –quit –batchMode –executeMethod Unity3dBuilder.PerformiOSDebugBuild
C. 유니티 프로젝트의 Editor 폴더에 Unity3dBuilder.cs 추가
D. 참고 : http://la-stranger.blogspot.kr/search/label/Unity3d
² Xcode 빌드 설정
ü Add build step -> Xcode 추가
ü General build settings -> Settings 버튼 클릭
ü Code signing & OS X keychain options -> Code signing settings 버튼 클릭
ü Advanced Xcode build options -> Advanced build settings 버튼 클릭
² General build settings
ü Testfilght 를 이용한 웹 배포를 위해서 Xcode 프로젝트 빌드 구성 설정
ü Configuration : Ad hoc (또는 Xcode 프로젝트에서 추가한 빌드 구성)
ü Pack application and build .ipa? : 체크
ü .ipa filename pattern : .ipa 생성 파일이름 입력
² Code signing & OX X keychain options
ü Unlock Keychain? : 체크
ü Keychain path : ${HOME}/Library/Keychains/login.keychain
ü Keychain password : 키체인 패스워드
² Advanced Xcode build options
ü Xcode Project Directory : _Build/iOS (유니티 빌드 후 Xcode 프로젝트 생성 위치)
ü Build output directory : ${WORKSPACE}/_Build/iOS/ (Xcode 빌드 후 ipa 생성 위치)
Ø 빌드 후 조치
² 빌드 후 조치 추가
² Archive the artifacts : 산출물 보관
ü Files to archive : 보관할 산출물 위치 (폴더 또는 파일명)
² Upload to Testflight : 빌드 완료 후 Testfilght에 업로드
ü Token Pair : Jenkins 설정에서 추가한 Testflight 구성
ü IPA/APK Files (optional) : **/*.ipa (TestflightApp 에서 예전엔 apk도 지원하였으나 2014년 03월 이후 apk는 지원 안한다고 함)
ü Build Notes : $BUILD_ID$BUILD_DISPLAY_NAME (빌드시간#빌드번호)
ü Append changelog to build notes : 체크
ü Distribution Lists : TestflightApp 에서 추가한 Distribution Lists
ü Notify Team : 체크
² Editable Email Notification : 메일 알림
ü Project Recipient List : 메일 받을 사람 목록 (개인별 메일 “,”로 구분)
ü Content Type : HTML (text/html)
ü Default Subject : 메일 제목
ü Default Content : ${JELLY_SCRIPT,template="html-with-health-and-console.jelly"}
A. JELLY SCRIPT 이용한 html 문서 (TestflightApp 설치 URL 메일에 추가)
<div class="content">
<h1>iOS Build Distribution</h1>
<ul>
<li>Testflight Install URL : <a href="$TESTFLIGHT_INSTALL_URL">Touch Me Install !!!</a></li>
<li>Testflight Config URL : <a href="$TESTFLIGHT_CONFIG_URL">Touch Me Configure !!!</a> </li>
</ul>
</div>
<br>
${JELLY_SCRIPT,template="html-with-health-and-console.jelly"}
B. $Jenkins_HOME/email-templates 에 템플릿 html 저장 (/Users/Shared/Jenkins/Home/email-templates)
C. 알아서 편집해서 사용
html-with-health-and-console.jelly
D. 또는 아래 경로에서 맘에 드는 템플릿 받아서 사용
ü Attachments : 메일 발송 시 첨부 파일
A. **/*.apk (Jenkins workspace 폴더 내에 모든 apk 파일 첨부)
ü Attach Build Log : Compress and Attach Build Log (메일 발송 시 빌드 로그 첨부)
² Triggers 추가
ü 상황에 맞는 Trigger 설정
ü Send To : Recipients / Developers (메일 받을 사람 선택)
6. Unity 빌드 및 Xcode ad hoc 설정 / 빌드
Ø Jenkins Job 실행 전 Unity 빌드 실행 하여 정상 빌드 되는지 체크
² Unity3dBuilder.cs 추가 후 메뉴에서 빌드 실행
ü CI -> Build Android
ü CI -> Build iOS Debug
ü iOS 최초 빌드 시 스크립트 수정 필요
A. 최초 빌드 시 BuildOptions.AcceptExternalModificationsToPlayer; 제거 하고 빌드
B. 최초 빌드 이후 BuildOptions.AcceptExternalModificationsToPlayer; 추가
Ø Xcode 빌드
² /Users/Shared/Jenkins/Home/jobs/잡이름/workspace/_Build/iOS/Unity-iPhone.xcodeproj 실행
² Xcode 설정
ü Targets -> Project 로 변경
ü All / Combined / Build Settings 선택
ü Build Options -> Debug Information Format : DWARF 로 수정
ü Info 선택 후 Configurations -> + -> Duplicate “Release” Configuration -> Ad hoc 추가
ü Basic / Combined / Build Settings 선택
ü Code Signing -> Code Signing Identity -> Ad hoc : 애플 개발자 사이트에서 발급한 Ad hoc 용 인증서로 변경
ü Unity-iPhone -> Edit Scheme
ü Archive -> Build Configuration : Ad hoc 으로 변경
ü 메뉴 -> Product -> Archive 실행
ü 메뉴 -> Window -> Organizer 선택
ü 정상 빌드 여부 확인
포스트 한개에 이미지 파일 50개 제한이라서 포스트를 2개로 나눔...
다음 포스트 :
MAC OS + Jenkins + Unity3d + Bitbucket 안드로이드 iOS 자동 빌드 및 Testflight를 이용한 웹 배포 (2)
'Development > 프로젝트 관리' 카테고리의 다른 글
MAC OS + Jenkins + Unity3d + Bitbucket 안드로이드 iOS 자동 빌드 및 Testflight를 이용한 웹 배포 (2) (0) | 2014.06.23 |
---|---|
Pro Git 한글 PDF (0) | 2014.03.04 |
[slideshare] NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요 (0) | 2014.02.05 |
[slideshare] Startup DNA (0) | 2013.05.07 |
[slideshare] Running Lean (0) | 2013.05.07 |