2011年09月30日

JenkinsにGit Pluginをインストールする

Git Pluginをイントールする

TopページのJenkinsの管理 → プラグインの管理をクリックする。

下図のようなタブがあり、「アップデート」タブが選択されている状態なので、「利用可能」タブをクリックする。

利用可能タブ

Gitで検索すると、ソース管理システムの表の中に「Git Plugin」の左側にチェックボックスがあるので、チェックする。

最下部に「インストール」ボタンがあるので、それをクリックするすると、インストールが始まります。

Jenkinsを再起動する。(「インストール完了後、ジョブがなければJenkinsを再起動する」にチェックを入れとけば、勝手に再起動してくれる)

確認

「新しいジョブを作る」で、「ソースコード管理システム」に初期では、CVS・Subversion・なしの3つだったのが、Gitが追加されていれば、インストール完了

Gitの確認

posted by やし at 20:03 | Comment(0) | Jenkins | このブログの読者になる | 更新情報をチェックする

     このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

Jenkinsのインストール

jenkins.warのダウンロード

下記のWelcome to Jenkins CI! | Jenkins CIページの「Java Web Archive (.war)」の「Latest and greatest (x.xxx)」から、「jenkins.war」をダウンロードする。
http://jenkins-ci.org/

jenkins.warのインストール

$ java -jar jenkins.war 
Running from: 絶対パス/jenkins.war
webroot: $user.home/.jenkins
[Winstone 2011/09/23 15:32:13] - Beginning extraction from war file
Jenkins home directory: /Users/<ユーザー名>/.jenkins found at: $user.home/.jenkins
[Winstone 2011/09/23 15:32:15] - HTTP Listener started: port=8080
[Winstone 2011/09/23 15:32:15] - AJP13 Listener started: port=8009
[Winstone 2011/09/23 15:32:15] - Winstone Servlet Engine v0.9.10 running: controlPort=disabled
2011/09/23 15:32:15 jenkins.model.Jenkins$6 onAttained
???: Started initialization
2011/09/23 15:32:15 jenkins.model.Jenkins$6 onAttained
???: Listed all plugins
2011/09/23 15:32:15 jenkins.model.Jenkins$6 onAttained
???: Prepared all plugins
2011/09/23 15:32:15 jenkins.model.Jenkins$6 onAttained
???: Started all plugins
2011/09/23 15:32:16 jenkins.model.Jenkins$6 onAttained
???: Augmented all extensions
2011/09/23 15:32:16 jenkins.model.Jenkins$6 onAttained
???: Loaded all jobs
2011/09/23 15:32:18 jenkins.model.Jenkins$6 onAttained
???: Completed initialization
2011/09/23 15:32:18 hudson.TcpSlaveAgentListener 
???: JNLP slave agent listener started on TCP port 49756
2011/09/23 15:32:28 hudson.WebAppMain$2 run
???: Jenkins is fully up and running

「Jenkins is fully up and running」と出たらインストール完了。(16秒ぐらい)

jenkinsの確認

ブラウザで http://localhost:8080にアクセスして、下記の画面が出たら完了

Jenkins初期画面

posted by やし at 19:08 | Comment(0) | Jenkins | このブログの読者になる | 更新情報をチェックする

     このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

2011年09月14日

GDD 2011 DevQuiz Androidの問題のメモ

GDD 2011 のDevQuizに初めてチャレンジしました。 スライドパズルは・・・ですが、AndroidのAIDLの問題は解けたのでそれについて書きたいと思います。

問題の概要

以下のAIDLで定義されているサービスを持つAndroid アプリケーションを配布します。 プログラム作って解答コードを取得してね。

package com.google.android.apps.gddquiz;

interface IQuizService {
  String getCode();
}

※AIDL(Android Interface Definition Language)とは、IDLの一種で、プロセス間通信行うためのものです。

準備

Androidプロジェクトを作成する。このとき、パッケージ名は配布アプリケーションと一緒じゃないといけない。 IQuizService.aidl ファイルをsrcに作成し、上のコードをコピペ。

配布されたAndroidアプリケーションを実機でも、エミュレータでもいいからインストールしたら、 メールアドレスとパスワードを入れる欄があったので、入力する。 メールアドレスはGDD 2011に登録したアドレスで、パスワードは問題文に書いてありました。

これで準備は完了。後はプログラム書くだけ。

方針は、

  1. アクティビティでボタンを押す→自分のサービスにバインド→配布アプリケーションと通信
  2. LogCatに答えを出す

以上

Activity

package com.google.android.apps.gddquiz;
// import は省略
public class MainActivity Extends Activity {

    TextView mTextView;
    Button mButton;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mTextView = (TextView)findViewById(R.id.hello);
        mButton = (Button)findViewById(R.id.startservice);
        // ボタンにリスナーを設定
        mButton.setOnClickListener(new startClickListener());        
    }

    // リスナー
    public class startClickListener implements OnClickListener {
        @Override
        public void onClick(View v) {
            // bindService()をコール
            serviceConnect();
        }
    }

    public void serviceConnect(){
        // public abstract boolean bindService (Intent service, ServiceConnection conn, int flags)
        bindService(new Intent(com.google.android.apps.gddquiz.IQuizService.class.getName()), // Intent
                    conn, // ServiceConnection
                    BIND_AUTO_CREATE); // int:automatically create the service as long as the binding exists. 
    }

    // 以下はServiceにバインドするとき、バインドして何がしたいのかの設定

    IQuizService mQuizService;
    Boolean mStartedService=false;

    private ServiceConnection conn = new ServiceConnection() {

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            Log.d("ServiceConnection","onServiceConnected Start");
            mQuizService = com.google.android.apps.gddquiz.IQuizService.Stub.asInterface(service);
            mStartedService = true;
		
            getStringInQuizService();
	}

        @Override
        public void onServiceDisconnected(ComponentName name) {
            mQuizService = null;
            mStartedService = false;
        }
    };
	
    public void getStringInQuizService(){
        super.onResume();
        if( mQuizService != null ){
            try {
                String ans = mQuizService.getCode().toString();
                mTextView.setText((String)ans);
                Log.d("AnsCode",ans); // 答えをLogCatに出力
                //Toast.makeText(this, ans, Toast.LENGTH_LONG).show(); // 先にToast表示したけど、コピペできないじゃん。。。
            } catch (RemoteException e) {
	    }
        }
    }
}

Service

bindService()で自分のサービスにバインドし、そこから配布されたアプリケーションにアクセスする。Class名にTestが付いてるけど、気にしない。

package com.google.android.apps.gddquiz;
//import は省略
public class TestService extends Service {
	private final ITestService.Stub mITestServiceBinder = new ITestService.Stub(){
		@Override
		public void stopService() throws RemoteException {
		}
	};
	
	@Override
	public void onCreate() {
		super.onCreate();
		// Toastを表示する
		Toast.makeText(this, "Service start", Toast.LENGTH_SHORT).show();
	}

	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}
}

マニフェスト

serviceタグを記述する。



    

    
        
            
                
                
            
        
        
          
            
            >
        

    

以上です。AIDL自体は知識としては知っていたけど、初めて使ったなぁ。

タグ:AIDL service
posted by やし at 01:07 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

     このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。