質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Jenkins

Jenkinsとは、Apache TomcatなどのServletで動作しているサーバーベースシステムです。Jenkinsはオープンソースであり、LInux,Mac OS X,Windows,Solaris,FreeBSDとOpenBSDのためのパッケージがあります。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Android Emulator

Android EmulatorはアンドロイドのOSで起動しているアンドロイドのデバイスの機能をシミュレートするソフトウェアです。Emulatorは開発者に複数の違う設定を持ったデバイスを必要とすることなくアプリケーションを開発しテストすることが可能になります。

Q&A

解決済

1回答

2719閲覧

Jenkinsでのネイティブアプリのビルドについて

MomiYama

総合スコア10

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Jenkins

Jenkinsとは、Apache TomcatなどのServletで動作しているサーバーベースシステムです。Jenkinsはオープンソースであり、LInux,Mac OS X,Windows,Solaris,FreeBSDとOpenBSDのためのパッケージがあります。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Android Emulator

Android EmulatorはアンドロイドのOSで起動しているアンドロイドのデバイスの機能をシミュレートするソフトウェアです。Emulatorは開発者に複数の違う設定を持ったデバイスを必要とすることなくアプリケーションを開発しテストすることが可能になります。

0グッド

0クリップ

投稿2015/12/18 03:52

現在、CentOS上で構築したJenkinsに、GitHubからクローンしたアプリをビルド、テストするジョブを作成しています。
(テスト内容は、ボタンをタップして画面遷移を正常に行うかどうかなどです。)

MacOSX上に構築したJenkinsで、上記のようなジョブを走らせることができたのですがCentOS上ではできていません。
確認したところ当たり前なのですが、

  • iOSの方はXcodeコマンドラインツールがCentOSに導入されていないために自動でビルドとテストができない
  • Androidの方は使用しているCentOSがKVMに対応していないため、AVDを表示できないことからテストが行えない

という状況でした。

ここで、質問なのですが

####CentOS上にXcodeを導入し、xcodebuildコマンドが使用できる状態にすることは可能でしょうか?
####Androidエミュレータを表示させないでテストを実行させることは可能でしょうか?

CUI初心者のため、ググるなりして調べてみたのですが解決策が見つけられないため質問させていただきました。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

CentOS上にXcodeを導入し、xcodebuildコマンドが使用できる状態にすることは可能でしょうか?

CentOS1台で済ますことは不可能で、ビルド用にOSXが必要になります。
CentOS上のJenkinsで管理したいのであれば、JenkinsをMaster(CentOS)/Slave(OSX)構成にして分散ビルドすることになるでしょう(日本語参考記事)。
今使用しているOSX筐体をCIに利用できない理由があるのなら、iOSビルド環境をクラウド上に構築してしまうのような手段でも解決できるのではないでしょうか。


Androidエミュレータを表示させないでテストを実行させることは可能でしょうか?

(大半の部分は)可能です…そのように設計/実装を行っているのであれば。

アプリケーション上重要でテスト不可欠な処理は(ここで書かれている区分の)Instrumented testsでなくLocal testsできるように予め実装しておけば、その部分はエミュレータを用いずともPure JavaなJUnitでテスト実行できます。
(このような文脈で、MVPパターンなどのアーキテクチャパターンが取り上げられることがあります。興味が有れば検索を。)

また、上記のような実装を行っていない場合でも、次のようなライブラリを用いることで可能になるかもしれません(※私自身は使用経験はないです)。質問のされ方からすると、おそらく今の状況に適しているのはこちらでしょう。

標準のエミュレータのようにハードウェアをエミュレーションするのではなく、Java上でAPIレベルのエミュレーションを行っているようです。これによってInstrumented Testsも標準エミュレータ無しで実行できるようになります(…というのがこのライブラリの理想形でしょう。実際はどうなのかわかりません)。
日本語の解説記事を書かれている方もいらっしゃるようなので興味が有れば検索してみてください。

いずれにせよView部分のテストは標準エミュレータor実機が必要になると思います。
冒頭に「大半の部分は」と書いた残りの部分がここです。

投稿2015/12/19 00:42

編集2015/12/19 02:15
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MomiYama

2015/12/21 09:33

回答ありがとうございます。 CentOSをマスタとして、Macをスレーブにするという方法を初めて知りました。この方法で、手元のMacでテストして結果の出力がサーバ上に残るという形にでき、やりたいことができました。 Androidの方は、View部分はエミュレータなどが必要とのことなので、教えていただいたライブラリやLocal testsできるようにする設計などの存在を認識しつつ、ひとまずは分散ビルドのやり方でテストできる形にしました。 この度は参考記事の提示もしていただき、すぐ改善することができました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問