참고 : 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
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
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개로 나눔...
다음 포스트 :