【CI】Jenkins環境構成

9977 ワード

1.Jenkins環境設置
公式サイトでJenkinsをダウンロードします。住所は: http://jenkins-ci.org/content/thank-you-downloading-os-x-installer 
現在の最新のインストールパッケージは、jecins-15.526.pkgです。
インストール完了を直接クリックして、完了後にjenkinsのフォルダが作成されます。safariを自動的に起動し、Jenkinsページに入ります。
***はjokins.warをダウンロードしてjava-jar junins.warを実行してインストールすることもできます。
【問題1】セットアップが完了し、safariが自動的に起動しましたが、local hostに入ることができませんでした。
【A】Java環境がインストールされているかを確認する。java環境がインストールされていない場合は、java環境を再インストールします。
2.Jenkinsを実行する
http://localhost:8080
juninsのメインインターフェースに入ることができます。
インストールが完了したら起動できない場合は、下記のコマンドを実行し、既存のplist情報をクリアします。
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
sudo mkdir -p /Users/Shared/Jenkins/Home
sudo chown -R daemon /Users/Shared/Jenkins
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
【注】ブラウザで直接ロカホストを実行してjokieを起動すると、例えばXcodeでbuildに行く時に、code signinの問題があり、端末で通過したスクリプトをコンパイルすることができ、Jenkieの下で通過できなくなります。
この問題が発生した原因は、ユーザ権限の問題にあり、ブラウザを使って起動するために、jeckの作業ディレクトリが/Users/Shared/Jenkinsの下に確立され、システムにアクセスする権限がないkeychainsを招き、一連のステップでその権限を与える必要がある。
具体的な過程を参照してください。 http://stackoverflow.com/questions/9245149/jenkins-on-os-x-xcodebuild-gives-code-sign-error
正しい起動方式は:
sudo launchctl unload/Library/LaunchDaemaons/org.jecins-ci.plist
 java-jar/Appleications/Jenkins/Jenkins/jecins.war--http Port=8080の時、jecinsは/Users/USer name/.jeck insの下で仕事のディレクトリを創立して、それによって関連しているkeychainを取得する権限があります。
3.Jenkins配置
(1)Xcodeプラグインのインストール
Manage Jenkins->Manage Plugins->add Xcode Plugin「Xcode Integration」
(2)ジョイの新規作成
a. New Job->Job Name->free-style software project->OK
b.Subversion->に入ってSVNアドレスを入力し、検証する。
C.Build設定でXcodeを選択し、設定する。実際のプロジェクトでは、すべてシナリオで実現されます。
4.XCodeプラグインの設定
a.「Add Build Step」でXcodeを選択する。
b.build環境を設定する:
Target:Projectに書き込む対応するTarget、例えば「Hellowworld」
SDK:空、またはiPhone Simultor 4.1.sdkなどができます。
Configration:buildのモード、Debug、Releaseなどを設定します。
Xcode Workspace File:workspaceのファイル名を設定します。
Xcode Project Directory:プロジェクトファイルの対応するパスを設定し、プロジェクトファイルは必ずしもシステムのルートディレクトリの下にあるとは限らない。
Xcode Project File:Hellowworld.xcodeproj、対応する工事ファイル名。
Build output directory:build結果出力の経路。
Build IPAbuild ipadファイルが必要ですか?
アンロックKeychainJenkinsはKeychainにアクセスして応答keyを取得する必要がありますので、承認が必要です。選択したら自動的にロックが解除されます。パスワードの提供が必要です。
設定が完了したら、保存すればいいです。
最終的な構成結果はコンソールで確認できます。実行するコマンドは以下の通りです。
[bld]米ドル/usr/bin/xcodebuild-target NexGen-configration Debug build
このコマンドのコントラストが可能で、設定されているものが正しいかどうか。
【問題】KeyChainはロックを解除できません。JenkinはKeychainにアクセスする権限がありません。
【A】Jenkinsにユーザー権限を与え、
securityFILE>import-k$HOME/Library/Keychains/login.keychain-Tcodesign
5.Jenkinsデフォルトのメール通知
A. Jenkinsデフォルトのメール通知を採用して、プロジェクト構成の「Post-build Actions」オプションで「Email Notification」のラベルをチェックし、「Recipients」にメールアドレスを記入すればいいです。
しかし、このようにコンパイルするたびにメールで通知します。煩わしいので、メールで通知するプラグインを選択してもいいです。B.メール通知プラグインを使って、email-ext対応の*.hpiファイルをダウンロードして、パス$JENKINS_にコピーします。HOME/pluginsは、その後Jenkinsを再起動する必要があります。そしてプロジェクト構成では、「Post-buildアクション」のオプションで、「Email Notification」のタグを選択せずに、「Editable Email Notification」のラベルをチェックします。Global Recipient Listに受信メールのアドレスを記入し、他のデフォルトでOKです。設定が完了すると、コンパイルエラーが対応するメールアドレスを通知します。
【システムメールアドレスの設定】
Jenkins->Manage Jenkins->Configre system->Jenkins location->System admin Email Address->メールの発信者住所
【Exted Email Notificationの設定】
Default Recipints : 受取人の住所
Default Conttent Type:Html
Default Conttent:
<font size=4>Hi WNC developer,</font>    

</br>
</br> 

<font color="#0B610B" size=4>Check console output at </font> 
<a href="${BUILD_URL}console"> ${BUILD_URL}console </b></a>
<font color="#0B610B" size=4> to view the results.</font>  

</br>

 <html> <body leftmargin="10" marginwidth="5" topmargin="8" marginheight="4" offset="4">
 <table width="95%" cellpadding="0" cellspacing="0"  style="font-size:11pt; font-family:Tahoma, Arial, Helvetica, sans-serif"> 

</br>
<tr>
 <td>
<h2><font color="#0000FF">Build Result - ${BUILD_STATUS}</font></h2></td> 
</tr> 

<tr> 
<td><br/><b><font color="#0B610B">Build Information:</font></b><hr size="2" width="100%" align="center"/></td>
 </tr> 

<tr> <td> <ul>  <li>Project Name - ${PROJECT_NAME}</li> 
			<li>Build Results(For xxx) - <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
			<li>Project Url - <a href="${PROJECT_URL}">${PROJECT_URL}</a></li> 
			<li>Build Url - <a href="${BUILD_URL}">${BUILD_URL}</a></li> 
			<li>SVN Revision - ${SVN_REVISION}</li> 
</ul> </td> </tr> 

<tr> <td><b><font color="#0B610B">Changes Since Last Successful Build:</font></b><hr size="2" width="100%" align="center"/></td> </tr> 

<tr> <td> <ul> <li>View history changes here: - <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li> </ul>             ${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="Changes for Build #%n:<br/>%c<br/>", showPaths=true, changesFormat="<pre>[%a]<br/>%m</pre>", pathFormat="    %p"}    
</td> </tr> 

</br>

<tr> <td><b><font color="#0B610B">Failed Test Results</font></b><hr size="2" width="100%" align="center"/></td> </tr> 
<tr> <td> <pre style="font-size:11pt; font-family:Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre> <br/> </td> </tr> 

<tr> <td> <ul>  <li>Detail test result at - <a href="${BUILD_URL}/testReport">${BUILD_URL}testReport</a></li>  </ul> </td> </tr> 

</br>

<tr> <td><b><font color="#0B610B">Build Logs (last 100 lines):</font></b><hr size="2" width="100%" align="center"/></td> </tr> 
<tr> <td>           Test Logs (if test has ran): <a href="${BUILD_URL}console">Detail Log</a> <br/><br/> </td> </tr>
 <tr> <td> <textarea cols="90" rows="50" readonly="readonly"  style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea> </td> </tr> </table> 


</body> 
</br>
</br>
<font size=4>Best Regards,</font>
</br>
<font size=4>Continous Integrate Server</font>
</br>
</br>

</html>
【Email Notificationの設定】
SMTP Server:out bound.XX.com
Default user e-mail suffix:@xx.com
保存後、設定が成功したかどうかをテストしてもいいです。成功した場合、受信者に応答のメール通知が届きます。
【Mailのadvanceにtriggerを設定する】
Fail:buildが失敗した時にメールを送ります。
成功した時にメールを送ります。
6.証明書ファイルを読み込む
環境設定が完了したら、直接に行ってもバグが発生します。IOSの証明書はJenkinsがいるマシンに載せられていません。mobileProvisionファイルが必要です。
Keychainsに追加します。操作方法は、ダブルクリックして開きます。
このprovisionが無効なファイルであると表示される場合は、証明書ファイルが必要です。このプロヴィシオンファイルに対応する.cerファイルまたはライセンスファイル.p 12.
Keychainsの証明書ファイルがvalidと表示された時、Build Nowを再実行して、コンパイルします。
7.Jetty配置
Jettyを配置して、deviceにWifiを通してipadパッケージをインストールさせることができます。
1.Jettyをダウンロードするパスは以下の通りです。http://dist.codehaus.org/jetty/jetty-6.1.14/jetty-6.1.14.zip
2. zipパッケージを解凍し、Jettyのディレクトリに入り、命令を実行します。java-jar start.jar、キティちゃんの起動に成功します。 Mavenをインストールする必要があります。MAC環境下ではすでにMavenを持参しています。
3.Jettyディレクトリに入る/etc/ject.xmlは、デフォルトポートを8081に変更します。8080は一般的にJenkinで使用されます。
4.キティディレクトリの下でwebappsに新しいフォルダを作成し、newJobと命名し、newJobにindex.を追加しました。これは、デバイス登録時に表示されるページです。
大体の内容は以下の通りです。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>My Cool app</title>
<!-- Art Direction Styles -->

</head>
<body>
<ul>
    <li><a href="itms-services://?action=download-manifest&url=http://10.140.48.168:8081/ipa/***.plist">
                Install WNC Application</a></li>
</ul>
</body>
</html>
その中の***.plistは工程対応の説明ファイルで、XCodeで開けます。中には三つの項目があります。ipadの住所、アプリケーションの対応するピクチャーアドレス。
ipad、画像ファイルをそれぞれ試験します。plistに記載されている住所で結構です。
5.Deveiceで、ブラウザを開けて、入力:http://10.140.48.168:8081/ipa/index.html インストールされているリンクが見えます。クリックしてインストールできます。
【Q 1】インストールに失敗しました。ipadファイルですか?
【A 1】75%ぐらいに取り付けます。インストールできないとヒントを与えます。本物のマシンはXCodeに接続して、アプリケーションも本物のマシンにインストールすることができません。これはbuildのバージョンが間違っていますので、buildが出てきます。
のtargetは6.1ですが、本物は6.0バージョンですので、インストールできません。
【Q 2】証明書の問題は、Ios_を使用します。IN_HOUSE.mobileprovision証明書は、buildが通過できません。
【A 1】in_house.mobileprovisionをローカルにダウンロードした後、このファイルをダブルクリックし、XCodeが開き、証明書ファイルが有効かどうかを表示します。有効であれば、証明書ファイルをメールでクリックし、「Reveal Profile」を選択します。 
in Finder」は、FinderがXCodeが実際に使用する証明書ファイル(アルファベットで数字を混ぜて命名)に案内します。これは、mobileprovisionファイルがbuild in houseの時に使用する証明書ファイルです。
【Q 3】buildシナリオを使ってbuild in houseのカバンに行く場合、XCodeの工事設定にin-houseの必要なカバンを配置し、直接コマンドを実行することができます。
xcodebuild -project NexGen.xcodeproj -alltargets -configuration In-House-Distribution -sdk $SDKNAME
あるいは、使う
xcodebuild -project NexGen.xcodeproj -alltargets -configuration In-House-Distribution -sdk $SDKNAME CODE_SIGN_IDENTITY="******." PROVISIONING_PROFILE="******" build
*では証明書ファイルに対応する情報です。前者は表示の名前で、後者はID番号に対応します。