Jenkins の変更点
#ref(jenkins.png);
* Jenkinsとは [#mc39baf8]
JenkinsとはJavaで書かれたオープンソース継続的インテグレーションツール
(Wikipediaより引用)
----
#contents
----
* セットアップ手順 [#y20f0895]
MacOSX環境でのセットアップ手順のメモ
** インストール方法 [#q8f0b918]
Homebrewが入っていれば、以下のコマンドでインストールできる
$ brew install jenkins
*** 起動コマンド [#ud6e5faa]
$ java -jar /usr/local/opt/jenkins/libexec/jenkins.war
※Javaのバージョンが古いと起動できない。JDK8をインストールしたところ動作を確認できた
*** 設定ファイルのコピー [#nd88bc93]
起動設定ファイルのコピー
$ cp -p /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents
自動起動するには
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
自動起動の解除は
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
- 参考: [[OS XにJenkinsをHomebrewでセットアップする>http://qiita.com/makoto_kw/items/cbe93d4ebbc35f3b43fd]]
*** workspaceの場所 [#v31d6135]
workspaceはMacOSXだと、/Users/ユーザ名/.jenkins/jobs/ジョブ名/workspace
*** GitHubとの連携 [#x9e28140]
GitHub pluginで githubへのプッシュ時に自動デプロイできるみたい
- [[JenkinsでGitHubのプッシュ時に自動デプロイする>http://sil.hatenablog.com/entry/jenkins-github-auto-deploy]]
でもGitHubからpush通知するには公開サーバーにしないとできないかも? push通知がうまく行かない場合はポーリングしてビルドしてもあまり問題ない気がする
*** WebからJenkinsの再起動 [#p758e075]
コマンドでもできるけど、WebからもURLアクセスで再起動できる
- http://{JENKNS_HOST}/safeRestart
*** FTPへの自動アップロード [#k17d956e]
以下のシェルスクリプトで自動アップロードできる
#!/bin/sh
/usr/bin/ftp -n -v [ホスト名] << EOF
user [ユーザ名] [パスワード]
put [アップロードするファイル]
quit
EOF
ただセキュリティに問題があるので、できればSCPコマンドで ssh で転送した方がよい
* IPAファイル(iOS)をコマンドからビルドする方法 [#z876689d]
「lime build ios」の後に、 export/ios フォルダに移動して、以下のシェルスクリプトを実行すると IPA ファイルが作られる
#geshi(bash){{
#!/bin/sh
SDK="iphoneos"
CONFIGURATION="Release"
PROJECT_FILE="SampleApp.xcodeproj"
TARGET_NAME="SampleApp"
SCHEME_NAME="SampleApp"
PRODUCT_NAME="SampleApp"
IPA_FILE_NAME="SampleApp"
OUT_APP_DIR="out"
OUT_IPA_DIR="out"
PROVISIONING_PATH="${HOME}/Library/MobileDevice/Provisioning\ Profiles/VVVVVVVV-WWWW-XXXX-YYYY-ZZZZZZZZZZZZ.mobileprovision"
if [ ! -d ${OUT_IPA_DIR} ]; then
mkdir "${OUT_IPA_DIR}"
fi
## when using xcworkspace
# WORKSPACE_File="SampleApp.xcworkspace"
# xcodebuild clean -workspace "${WORKSPACE_FILE}" -scheme "${SCHEME_NAME}"
# xcodebuild -workspace "${WORKSPACE_FILE}" -scheme "${SCHEME_NAME}" -sdk "${SDK}" -configuration "${CONFIGURATION}" install DSTROOT="${OUT_APP_DIR}"
xcodebuild clean -project "${PROJECT_FILE}" -scheme "${SCHEME_NAME}"
xcodebuild -project "${PROJECT_FILE}" -scheme "${SCHEME_NAME}" -sdk "${SDK}" -configuration "${CONFIGURATION}" install DSTROOT="${OUT_APP_DIR}"
xcrun -sdk "${SDK}" PackageApplication "${PWD}/${OUT_APP_DIR}/Applications/${PRODUCT_NAME}.app" -o "${PWD}/${OUT_IPA_DIR}/${IPA_FILE_NAME}.ipa" -embed "${PROVISIONING_PATH}"
}}
「Sample App」はプロジェクト名に置き換えて使う。プロビジョニングプロファイルのパス(PROVISIONING_PATH)も適切に置き換える。出力先は「out」フォルダ。
- 参考: [[ipa書き出しをxcodebuildとxcrunで自動化する>http://xoyip.hatenablog.com/entry/2014/03/21/195304]]
** Schemeの設定について [#n6a78f70]
「lime build ios」で出力した *.xcodeproj は、一度Xcodeで開かないと Schemeの設定が書き込まれないようです。そのため以下のシェルを実行して Scheme設定を書き込む必要があります。
#geshi(bash){{
#!/bin/sh
# プロジェクトファイルのパス
PROJECT_FILE="SampleApp.xcodeproj"
# Xcodeを終了しておく
pgrep -f "/Applications/Xcode.app" | xargs kill
# いったんXcodeを起動しないとSchemeの設定が書き込まれない
open ${PROJECT_FILE}
# Scheme設定の書き込み完了待ち
sleep 10
# Xcodeを終了する
pgrep -f "/Applications/Xcode.app" | xargs kill
}}
注意点は以下のとおりです。
- Xcodeを終了せずに open すると、再読み込みチェックが走りビルドできなくなるので「pgrep -f "/Applications/Xcode.app" | xargs kill」でXcodeを強制終了する必要がある
- Scheme設定の書き込み完了待ちのために「sleep」を入れる
-- ただし Jenkins でのシェル実行時の「sleep」がうまく行かない場合はファイルを分ける (sleepするだけのシェルスクリプトを作る)
※参考: [[jenkinsでXcode(+cocoapods)向けのビルド環境を構築する(無理矢理な方法)>http://hikaruworld.bitbucket.org/blog/html/2012/12/07/jenkins_and_xcode_with_cocoapods_how_to_build_rst.html]]
* Deploy Gateに アプリを自動アップロードする [#r0448e1d]
Deploy Gateを使うと、アプリのアップロードや管理が楽になる
- [[DeployGate>https://deploygate.com]]
ただし、非公開アプリにするには 月1500円〜 が必要
** Deploy Gateに自動アップロードする方法 [#c06f0377]
*** Deploy Gateコマンドラインツールのインストール方法 [#p1176968]
このコマンドでインストールできる
$gem install dgate
gemコマンドが失敗する場合は、Command Line Tool がインストールされていない可能性を疑う
インストールできれば、以下のコマンドでアップロード可能(初回アップロードは手動でやらないといけないかも?)
$dgate ユーザ名 *.ipa
*** Jenkinsプラグインをインストールする [#md91241a]
Jenkinsプラグインからアップロードすることも可能
- [[deploygate for iOS に Jenkinsからアップロードする>http://qiita.com/ginrou@github/items/498d02acbbe9e1327bb7#3-1]]
* Tips [#k29306f1]
** 不要になったプロジェクトを非表示にする [#ic3c7794]
+ 対象のプロジェクトを選び、「プロジェクトの無効化」ボタンをクリックして無効にする
+ ビューのタブの「+」をクリックして新規ビューを作成
+ ビュー名に「有効なプロジェクト」と入力して「リストビュー」を選択、OKボタンを押す
+ ビューの詳細設定を以下のように設定
++ ジョブフィルター > ステータスフィルター > 「有効なジョブのみ」
++ ジョブフィルター > 正規表現でジョブを指定 > 「.*」
++ 「保存」ボタンをクリックして保存する
** デフォルトビューの変更 [#t3f1973b]
「Jenkinsの管理 > システム設定 > デフォルトビュー」からデフォルトで表示するビューを変更することができる