참고 : http://la-stranger.blogspot.kr/search/label/Unity3d
1. 설치
Ø
Jenkins 홈페이지에서 설치파일 다운로드 (http://jenkins-ci.org/)
Ø GIT 저장소 bitbucket 사용 (https://bitbucket.org/)
² bitbucket 외에 GitHub 등 다른 저장소를 사용해도 무방함 (구글님의 도움을 받으면 됨)
Ø 다음 다음 다음 다음
²
설치
완료
2. Plugin Manager
Ø
Jenkins 관리 -> 플러그인 관리
Ø
설치
가능 탭에서 아래 플러그인 설치
²
GIT plugin
²
Bitbucket OAuth Plugin
²
Unity3d Plugin
²
Email Extension Plugin
²
Token Macro Plugin
²
Xcode integration (OS X 에서 IOS 용 컴파일 시 추가)
²
Testfilght Plugin (iOS 빌드 후 웹 배포)
3. 시스템 설정
Ø
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 파일을 사용
해야 함)

4. Configure Global Security
Ø
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 (안되면 여러 번 생성 인증 생성 인증 하다보면 됨…;;)
A. https://confluence.atlassian.com/pages/viewpage.action;jsessionid=BD9794B7C2F22CA8DB28263FA9914CF7?pageId=270827678
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 추가
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.
또는
아래 경로에서 맘에 드는 템플릿 받아서 사용
E.
https://github.com/jenkinsci/email-ext-plugin/tree/master/src/main/resources/hudson/plugins/emailext/templates
ü 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개로 나눔...
다음 포스트 :