참고 : 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도 지원하였으나 201403월 이후 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개로 나눔...


다음 포스트 : 

MAC OS + Jenkins + Unity3d + Bitbucket 안드로이드 iOS 자동 빌드 및 Testflight를 이용한 웹 배포 (2)

안정적인 DNS서비스 DNSEver DNS server, DNS service
Posted by 키르히아이스
,