[Jenkins][GitBucket] GitBucket Plugin をリリースしました

Hacker Newsに取り上げられました GitBucket とJenkinsを連携する GitBucket Plugin をリリースしました。

GitBucketはGithubのクローンですが、GitBucket PluginもGitHub Pluginパクリクローンで、WebHook通知によるビルドの起動、変変更履歴に記載されたissueやwikiへのリンク、リポジトリブラウザへのリンクの3つの機能を提供します。


WebHookによるビルドの設定だけを簡単に説明します。


WebHookによるビルドを行うには、GitBucketのWebHookの設定と、JenkinsでGitとビルドトリガの設定が必要になります。


まずは、GitBucketのWebHookを設定します。
プロジェクトのSettings -> Service Hooks を選択し、http://yourserver/gitbucket-webhook/ を設定します。yourserverは環境にあわせてください。


追記:gitbucket-webhook/ 最後の"/"が必要です。




次に、Jenkinsの設定です。


Gitの設定は、GitHubと同様ですが、GitBucketのここに表示される.git付きのURLを、



JenkinsのGitのURLに設定します。




最後に、ビルドトリガの"Build when a change is pushed to GitBucket"をチェックします。



以上で、設定は完了です。ソースを変更して、pushしてみてください。pushすると、GitBucketからJenkinsに通知します。Jenkinsは通知を受けると、変更があるかどうか確認して、変更があればビルドをスケジュールします。


GitBucketはまだ若いプロジェクトですが、日々機能が追加されています。REST APIなどが追加されれば、プルリクエストのビルドなども実装できるかもしれません。

BASIC認証の設定

とりあえず、めも。

web.xml
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Webadmin</web-resource-name>
            <url-pattern>*.json</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>WebadminRole</role-name>
        </auth-constraint>
    </security-constraint>
    
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>WebadminRealm</realm-name>
    </login-config>
    
    <security-role>
        <role-name>WebadminRole</role-name>
    </security-role>

JBoss AS 7

jboss-web.xml
<?xml version="1.0"?>
<jboss-web>
    <!-- standalone.xmlの<security-domain>のname属性 -->
    <security-domain>java:/jaas/WebadminDomain</security-domain>
</jboss-web>
standalone.xml
        <subsystem xmlns="urn:jboss:domain:security:1.1">

           (snip)
                <!-- 以下を追加 -->
                <!-- name属性の値は、jboss-web.xmlの値 -->
                <security-domain name="WebadminDomain" cache-type="default">
                    <authentication>
                        <login-module code="RealmUsersRoles" flag="required">
                            <module-option name="usersProperties" value="${jboss.server.config.dir}/application-users.properties"/>
                            <module-option name="rolesProperties" value="${jboss.server.config.dir}/application-roles.properties"/>
                            <!-- web.xmlの<login-config>のrealm-nameの値 -->
                            <module-option name="realm" value="WebadminRealm"/>
                            <module-option name="password-stacking" value="useFirstPass"/>
                        </login-module>
                    </authentication>
                </security-domain>
            </security-domains>
        </subsystem>
application-users.properties, application-roles.properties


bin/add-user.shでユーザを追加する。レルムはWebadminRealm, RoleはWebadminRole

Glassfish 3.1.1

glassfish-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" 
                                   "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
  <security-role-mapping>
    <role-name>WebadminRole</role-name>
    <principal-name>admin</principal-name>
  </security-role-mapping>
  <class-loader delegate="true"/>
  <jsp-config>
    <property name="keepgenerated" value="true">
      <description>Keep a copy of the generated servlet class' java code.</description>
    </property>
  </jsp-config>
</glassfish-web-app>
管理コンソールで設定


セキュリティのレルムからfileを選択


ユーザを管理 を選択


ユーザ"admin"を追加

OSC 2012 Fukuoka参加とPersona Plugin

先週の土曜日に、OSC 2012 Fukuokaに、日本Apache Camelユーザ会日本Jenkinsユーザ会として、参加してきました。


いろんな方とお話したのですが、導入しようと思っているけどなかなかそこまでできていないとか、プラグインが多すぎてどれを使ったらいいかわからないなどの意見を多く聞きました。
プラグインについては、山のようにあるけど、説明が英語だけであったり、画面イメージもなくてイメージが伝わらない、品質にばらつきがあるといった問題があるのは認識していますが、Mozillaプラグインのサイトみたいなのを作ろうと思うと、気が遠くなります。


ところで、今回OSCに参加するためにPersona Pluginのペルソナ(キャラクタ)を作ったのですが、ブースではほとんどお見せする機会がありませんでした。というか、この手の催しに参加する人は、真面目にOSCの情報を集めようとしているので、そんなおちゃらけプラグインに興味はないのかもしれません。でも、せっかく作ったのでここでひっそり公開します。

  1. 事前にPersona Pluginをインストールしておきます。
  2. persona-camel.hpiをダウンロードして、jenkinsの「プラグインの管理」の「高度な設定」でアップロードしてください。
  3. リスタートして、プロジェクトの設定画面の「ビルド後の処理の追加」で「Associate Persona」を追加して、表示するペルソナと表示位置を選択して下さい。






このプラグインで提供するペルソナは、日本Apache Camelユーザ会のマスコットです。私自身はあまり詳しくはありませんが、今回のキャラクタの1つは有名な絵師さんの作品です。なお、画像については商用での利用はできませんので気をつけてください。

Jenkins 1.464でJDK自動インストールが修正されました

しばらく前から壊れていたJDKの自動インストールが、1.464で修正されました。原因は、OracleのサイトからJDKをダウンロードする際に、クッキーの設定が必要になっていたためです。


以前のバージョンで、自動インストールを実行して失敗した方に注意です。
失敗した際に、JENKINS_HOMEにゴミが残っているため、1.464でも失敗する場合がありますので、以下のファイルを削除してみてください。


(マスタ) $JENKINS_HOME/cache/jdks/LINUX/amd64/ にある、ダウンロードに失敗したJDKのファイル (赤色の部分はOS等により異なります)



上記のファイルを削除すれば、再度Oracleのサイトから正しくダウンロードしてインストールするはずです。

Karotz Plugin0.1 リリースしました

Karotz Plugin 0.1をリリースしました。

Karotzさんといっしょ - ssogabeの日記で概略は説明していますが、イベント発生時の処理を拡張できるように変更しました。





EventHandlerをプルダウンで選択できるようにしています。ここでは、

  1. 内部定義されたメッセージを読み上げるEventHandler
  2. イベントごとのメッセージと言語を設定できるEventHandler

を選択することができます。


上記は標準のEventHandlerですが、KarotzEventHandlerを継承することで自由にKarotzの振る舞いを変更できます。詳細は、KarotzSpeakEventHandlerを参考にしてください。

Karotzさんといっしょ

Jenkins Advent Calendar 15日目です。現在、2-0です。


あれからもう1年... 思えばあれから受難の日々が...


第1回Hudson勉強会の@ikikkoさんのエルシャダイで学ぶ、大丈夫な「ビルド通知」を覚えていますか? エルシャダイねたとネットワークエラーでデモが動かなったウサギ型ロボットNabaztagを。いまから思えば、アレはNabaztagの受難の幕開けでしかなかったのです。


サーバがないと動かないのにサーバが停止とは... こころなしか涙目のNabaztagさん...


生まれかわったKarotzさん


Nabaztagのサポートが打ち切られた代わりに、Violet社から受け継いだMindscape社から第3世代のウサギ型ロボット Karotz が発表されました。どんなものかはkarotzの操作方法に関するメモを参考してください。

簡単に言うと、NabaztagwebcamとUSBにいれたMP3を演奏できるようにしたものです。新しく追加されたWebcamを使うと、KarotzをプレゼントしてAndorid端末やiphoneから観察できるカレログのようなこと色んなことができます。


残念な点もあります。Nabaztagでは日本語の音声も提供され日本語の文章を流暢に読み上げることもできましたが、Karotzでは提供されていませんので、日本語を読み上げることができません。Nabaztagの音声ファイルを流用できたらいいんですが...

また、APIの仕様も変わっていますのでNabaztag pluginを使用することはできません。と思っていたら、Githubでつくっていた人がいたので、内緒でぱちったものをためしてみましょう。

ちなみに、Nabaztagを持っていると割引とかで運送費込みで100ユーロでした。10,000円位です。まさに円高さまさまです。


プラグインでビルド結果を通知しよう


プラグインをインストールする前に、Karotzにアプリケーションの設定を行う必要があります。その前に、www.karotz.com にログインしておきましょう。

アプリケーションの登録



http://www.karotz.com/lab/app/formプラグイン用のアプリケーションを登録します。値は何でも問題ありません。適当にいれて保存します。IconにJenkinsさんのアイコンを指定するとわかりやすかもしれません。




http://www.karotz.com/lab/app/dashboardが表示されます。ここで、API KeySecret Keyをメモしておきます。

ここで「Add a new version」をクリックします。




以下のdepscriptor.xmlをZIP圧縮したdescriptor.zipを用意して、ファイル選択で選択後保存します。表示された画面で「test」をクリックします。

<descriptor>
   <version>1.0</version>
      <accesses>
          <access>tts</access>
          <access>ears</access>
          <access>led</access>
      </accesses>
      <deployment>external</deployment>
      <parameters>
        <parameter key="showInstallUuid" value="true"/>
      </parameters>
</descriptor>



http://www.karotz.com/my/object には、Karotzにインストールされているアプリケーションが複数表示されています。2ページ目に上で登録したアプリケーションがあるのでクリックすると、上の画面が表示されます。この画面に表示されているInstall idをメモします。


以上で、Karotzのアプリケーションの登録は完了です。次にプラグインをインストールします。

プラグインのインストールと設定


プラグインはまだ公開されていませんので、https://github.com/ssogabe/karotz-pluginをcloneしてビルドする必要があります。ビルドが面倒な場合は、karotz.hpi を取得してインストールします。



システムの設定画面で、メモしておいたAPI Key, Secret Key, Install IDを設定します。



最後に、プロジェクトの設定で上記の通りチェックすれば完了です。では、実行してみましょう。



最後に


KartozはAPIが変わったことで少し扱いづらくなっています。APIを叩くときはInteractive IDを取得してからAPIを叩くのですが、Interactive IDを取れないことやサーバエラーがよく発生します。プラグインももう少し対処できるようにしてから公開するつもりです。

うわさでは、Nabaztagのサーバも復活するらしいので、今Nabaztagを持っている方はもう少しまったほうがよさそうです。

ということで、バルセロナを観たいので終わりです。


あしたは、id:tyuki39 さんです。よろしくお願いします。