Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

TravisCIでGitHubからOpenShiftへデプロイ

OpenShiftでは、Gearを作成すると、デフォルトでGitのrepositoryを作ってくれるので、ソース管理はとても簡単です。
今回は、既にGitHubで管理してるコードをOpenShiftにデプロイしたいなぁと。

以下のStackOverflowに色々情報が詰まってる感じ。
stackoverflow.com

せっかくなのでCI使ってローカルコミット->プッシュ->ビルド->デプロイができれば嬉しいなぁと思いはじめ、CIも一緒に試すことにしました。

Jenkins

OpenShiftでは構築したGearをCIしてくれるJenkinsを簡単に作れますが、Gearを1つ使ってしまうので、無償枠で遊んでる分にはちょっとなぁ、と。

Circle CI

そういえば今までWebサービスのCI使ったことないので、せっかくなのでCircleCIを試してみました。

GitHubとの連携は超簡単なので、すぐビルドはできましたが、OpenShiftへのデプロイ方法がわからず。。。調べた所、頑張ればできそうだけど。。。みたいな。

Travis CI

ぬあー、と悩んでたところ以下@grimroseのエントリを発見!簡単そう。

grimrose.bitbucket.org

試したところ、簡単でした(^^;

上記のエントリには「ユーザ名とパスワードをtravisに設定するところが気になるところですが」という記述がありましたが、パスワードは簡単に暗号化できる仕組みが用意されていました。

Encryption keys - Travis CI

gem install travis

でTravis CLIを入れます。

このあとは以下のページが役立ちます。

OpenShift Deployment - Travis CI

デプロイ対象のプロジェクトに空の.travis.ymlを置いて、以下コマンドを実行すると

travis setup openshift

対話式にopenshiftの情報を聞かれて、中身を自動生成してくれます。

最初.travis.ymlごと生成してくれるのかなーと思ったのですが、以下エラーでした。

C:\Users\kikuta\Documents\NetBeansProjects\xxxxxxxxxx>travis setup openshift

no .travis.yml found
C:\Users\kikuta\Documents\NetBeansProjects\xxxxxxxxxx>travis setup openshift

OpenShift user: xxxx@yyyy.co.jp
OpenShift password: ********
OpenShift application name: |xxxxxxxxxx|
OpenShift domain: hogehoge
Deploy only from hogehoge/xxxxxxxxxx? |yes| yes
Encrypt Password? |yes| yes

これで.travis.ymlはOK。あとはGitHubのコード側でpom.xmlにopenshiftのプロファイル入れたり、.openshiftフォルダを入れるなどすれば自動化完了です。

Emotional Jenkins PluginとEmail-ext pluginで通知メールに感情を込めてみました

4月になって初めてのブログ更新です(^^;ここまで書かなかったのは久々な気が。

というのも今週あるOracleさんのセミナーにお声かけ頂き、ずっと発表資料の準備してたためでした。

最新のJavaを3時間で知る!Java解説セミナー

なんか場違いな気がすごいして…今から緊張しててあれなんですが…せっかくの機会なので頑張りたいなと思います。

……

少し前に仕事環境のJenkinsにEmotional Jenkins Pluginを入れて遊んで環境改善してみたのですが、なんか面白くて気に入りました(^^)

普段はふつうのJenkins執事さんですが
f:id:kikutaro777:20140414184058j:plain

ビルドエラーやテスト失敗、デプロイにこけたりすると
f:id:kikutaro777:20140414184129j:plain

の形相に!

ただ、Jenkinsの画面を見に行かないとわからないのが少し残念だなぁと思ったり(^^;

先に結果に気づくのは通知メールだったりするので。

ということで、ビルド通知やデプロイ通知でJenkinsから出している自動メールの添付ファイルとしてEmotional Jenkins Pluginの画像を付けてみました(^^;

こんな感じのメールが届きます。

問題ないとき

f:id:kikutaro777:20140414182950j:plain

問題があったとき

f:id:kikutaro777:20140414182956j:plain

通知メールがすごくうっとおしくわかりやすくなった!

メールはEmail-ext pluginを利用してSuccessやFailureをトリガーにしてるのですが、その設定でAttachmentsとしてEmotional Jenkins Pluginの画像を拝借しただけです。

f:id:kikutaro777:20140414183546j:plain

夜間ビルドが失敗してたりして、朝このメールをみると「ぶっ」と吹いて何か笑って「誰だよ~」って感じに許せるので、感情は大切だなぁと思ったり。(いいのかw)

ちなみに余談ですがEmotional Jenkins Pluginを知ったのは、昨年末のJJUG ナイトセミナ 「師走の Jenkins 祭り」でスライドに見たことないJenkinsおじさまの画像が出てきて、以下ツイートしたとき、作者の@masanobuimaiさんから教えてもらいました(^^;


CloudBeesのPaaSでJava EEアプリをクラウドへ簡単に展開!

現在ではCloudBeesではPaaS環境の提供がなくなっているため本記事は古いものとなります。itpro.nikkeibp.co.jp

無償でJava EE系APがのるPaaSとしてはOpenShiftなどがあります。kikutaro777.hatenablog.com

Java 8が無事にリリースされて、Javaの世界が盛り上がってる気がします(^^)

今日はこれから「JJUGイベント 「祝☆Java 8 Launch」」に参加予定です。
http://jjug.doorkeeper.jp/events/9344

この勢いでJava EE 7も盛り上がると面白そうだなーと思っているのですが(笑)

……

3月の初めにTechCrunch Japanで「Java PaaSのCloudBeesが早くもシリーズCで$11.2Mを調達」という記事になっていたCloudBeesを触ってみたところ、なんじゃこりゃーー、ズコーッ、ってくらい簡単にJava EEが使えるクラウドサービスでした。

意外にも日本語で画面キャプチャ付の情報とか少なかったので、まとめてみました。

Herokuや他のクラウドサービスを全て確認したわけではないのですが、GlassFish4やWildFly8まで含めて提供されてるクラウドサービスが他にあるのかなぁ?と(^^;知りたいです。

CloudBeesとは?

主にJavaを中心としたPaaS基盤を提供していて、ソースコード管理からJenkinsを利用したビルドやデプロイまでトータルに含んだサービスとなっています。

英語のWikipediaはこちら
http://en.wikipedia.org/wiki/CloudBees

http://www.cloudbees.com/

f:id:kikutaro777:20140320191329j:plain

自分がCloudBeesの存在を知ったのは、JJUGでよくJenkins開発者である川口耕介さんの名前を聞くのと、Jenkins勉強会に過去何回か参加していたためですが、実際に使ったのは今回が初めてです。

そういえば今年のはじめ、CloudBees社のCTOに川口さんがなられて話題になっていました。
海外で日本の方がCTOって…しびれるなぁ。

まずは登録(Sign Up)

サイトにある「Try it for Free!」または右上の「Sing Up」から登録をします。

GitHubやGoogleのアカウントを利用することもできるので、簡単に登録するならそちらが良いかと思います。

f:id:kikutaro777:20140321002917j:plain

無料枠は当然ながら色々制約があるのですが、詳しくは以下Pricingの表にあります。
http://www.cloudbees.com/platform/pricing/devcloud.cb

ユーザ数が3、Jenkinsのビルド時間トータルが月100分、その他に容量やサポートなどありますが、登録時にクレジットカード情報などは不要で、ちょっと試しに使ってみるには、とてもお手軽な感じです。

豊富なメニュー

Sing Up後、以下のような画面が表示されます。

f:id:kikutaro777:20140321003521j:plain

左上の「Click Start」を押すと、アプリケーションの選択肢メニューが出るのですが、これがすごい豊富。
一通りキャプチャしてみました。

f:id:kikutaro777:20140321003604j:plain

f:id:kikutaro777:20140321003622j:plain

f:id:kikutaro777:20140321003627j:plain

f:id:kikutaro777:20140321003632j:plain

f:id:kikutaro777:20140321003638j:plain

f:id:kikutaro777:20140321003644j:plain

Java系ではTomcatをはじめ、Jetty、GlassFish3、GlassFish4、JBoss71、Wildfly8などが選べますし、Play Framework2もあります。GroobyのGrailsやScalaのLift、Node.jsやVert.x、GoやCloujure、Erlang、Rubyなどもあったり。Senchaなんかも。

GlassFish4以外は試せてないのですが、なんかすごい(^^;

あと個人的には「PrimeFaces Showcase」があるのと「with SendGrid」系があって面白かったです。どんなのか、是非試してみなければ。

GlassFish4 Appを選択してみる

とりあえず今回はGlassFish4 Appを選んでみました。
Full PlatformとWeb Profileがちゃんと選べるのですが、とりあえずWeb Profileで。

f:id:kikutaro777:20140321004848j:plain

メニュー選択後、自分の場合は以下Jenkinsのprovisionedの画面が出てきて、少し待つ必要がありました。5分程度でしたが。

f:id:kikutaro777:20140321004934j:plain

f:id:kikutaro777:20140321004944j:plain

で、メニュー選択後、アプリケーションの名前を入れます。

f:id:kikutaro777:20140321005104j:plain

名前を入れて進むと、ソースのリポジトリ、Jenkins、アプリケーション、DBの準備が開始されます。

f:id:kikutaro777:20140321005151j:plain

f:id:kikutaro777:20140321005310j:plain

完了したので、ダイアログを閉じます。

f:id:kikutaro777:20140321005506j:plain

ホーム画面をみると、それぞれできてます。

f:id:kikutaro777:20140321005651j:plain

アプリケーションをみてみると、以下のように表示されます。

f:id:kikutaro777:20140321005842j:plain

URL叩くと、テンプレート的に作成されたアプリケーションが表示されます。

f:id:kikutaro777:20140321005920j:plain

これだけでもうGlassFish4の上にデプロイされたアプリケーションが使える状態です。なんて簡単なんだ!!!

個人的にはすごい感動したのですが(^^;

でも、さらにすごいのはこれから。

コードの取得

ここまででテンプレができていて、Gitのリポジトリも生成されてるので、コードを取得してみます。

メニューの「repos」をみると、GitのURLが確認できます。

f:id:kikutaro777:20140321010412j:plain

普通にコマンドでgit cloneとかしていってもいいのですが、とりあえず自分はNetBeansを使いました。(ちなみにNetBeans 8)

f:id:kikutaro777:20140321010615j:plain

メニューでコピーしたURLと認証情報を入れて、淡々と進めていきます。

f:id:kikutaro777:20140321010713j:plain

f:id:kikutaro777:20140321010758j:plain

f:id:kikutaro777:20140321010804j:plain

f:id:kikutaro777:20140321010812j:plain

cloneされたプロジェクトが表示されます。以下のような感じ。

f:id:kikutaro777:20140321010852j:plain

JSF書いてみた

取得したコードは一旦消して、JSFの簡単なサンプル作ってみました。

プロジェクトのプロパティでGlassFish4を選んでおいて

f:id:kikutaro777:20140321011017j:plain

フレームワークからJSFを選択します。ここではついでにPrimeFacesもつけときました。

f:id:kikutaro777:20140321011109j:plain

f:id:kikutaro777:20140321011116j:plain

f:id:kikutaro777:20140321011123j:plain

で、index.xhtmlを以下のように定義して

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>My First app on CloudBees</title>
    </h:head>
    <h:body>
        <h:form>
            <p:panel header="PrimeFaces Panel Header">
                <p:calendar />
            </p:panel>
        </h:form>
    </h:body>
</html>

ローカルで実行するとこんな感じ。しょぼしょぼですが(^^;

f:id:kikutaro777:20140321011234j:plain

プロジェクトはこんな風に変わってます。

f:id:kikutaro777:20140321011304j:plain

で、コミットしてプッシュします。

f:id:kikutaro777:20140321011437j:plain

f:id:kikutaro777:20140321011445j:plain

f:id:kikutaro777:20140321011453j:plain

f:id:kikutaro777:20140321011535j:plain

f:id:kikutaro777:20140321011542j:plain

f:id:kikutaro777:20140321011602j:plain

これで終了すると…なんと、CloudBees側でJenkinsがプッシュトリガーに自動ビルドを開始して、そのままデプロイしてくれます。マジすか。

自動ビルド&自動デプロイ

上記の操作後にCloudBeesのJenkinsをみるとタスクがピコピコしててビルドしてました(^^;

f:id:kikutaro777:20140321011753j:plain

で、成功すると、そのままデプロイまでしてくれて、さっきローカルで動かしたのと同じアプリケーションがあがってるーーーーー

f:id:kikutaro777:20140321011855j:plain

すごい!

GlassFishやWildFlyをクラウドで利用したい場合って、今の段階だと多くが、仮想マシンを一旦立てて、インストールして…という流れだと思いますが、CloudBeesならAzureのWebサイトみたいな感覚でお手軽に使えてしまうのが嬉しいですね。

はじめてのWindows Azure ~VM DepotでJenkinsサーバを簡単構築~

Windows Azureを触っていたら、「VM Depot」なる言葉が画面に出てきました。

f:id:kikutaro777:20140115022407j:plain

「これなんだろ?」と調べてみた所、コミュニティベースに集められたWindows Azureの仮想マシンイメージを提供するサービス、とのことでした。

f:id:kikutaro777:20140115015432j:plain

日本語での紹介サイトだと以下辺り

MSさんも今やこんなオープンなサービス提供してるのかぁ、面白いなぁ。

どんな仮想マシンイメージがあるのかな?とAzureのメニューをみると、既にかなりの量があります(^^;
f:id:kikutaro777:20140115020426j:plain

一覧はVM Depotのサイトからも見れるようなので、Azureに登録していない方でも以下でアクセスできます。
http://vmdepot.msopentech.com/List/Index

一部抜粋しただけですが、Alfreco,Solr,GitLab,JBoss,Jenkins,Jetty,Liferay,Redmine,Subversion,SugarCRM,Tomcat,Trac…などなどなど、他にも色々あるし、日々登録されていっているようです。

今回はJenkinsのイメージを使ってみたのですが、あっさり環境構築できてすごい…(^^)!

以下、手順をまとめます。

Jenkinsとは?

Jenkinsに関する情報は豊富なので、ここでは省略して、サイトとWikipediaのリンクだけおいておきます(^^;

以下、自分が前にJenkinsに関して書いたブログエントリですが、Jenkinsのおかげで日々のビルドや成果物生成、各試験環境へのデプロイなどを自動化することができました。ホント素晴らしいツールです。

手順

スクリーンショットを細かく取ってますが、手順としては迷いなく、かなり簡単です(^^;

Azureのメニューから「仮想マシン」->「VM DEPOTの参照」を選択します

f:id:kikutaro777:20140115022631j:plain

イメージを選択します

今回は一覧にあった最新バージョンのJenkinsを選択しました。
(今日2014年1月15日時点でJenkinsサイトにあるLatest and greatestのバージョンと同じでした)

f:id:kikutaro777:20140115022715j:plain

ストレージアカウントを選択します

とりあえず日本に近い東アジアを選択しました。

f:id:kikutaro777:20140115022855j:plain

上図のスクリーンキャプチャにも表示されているように、注意事項として、VM Depotで提供されたイメージはあくまでもコミュニティメンバーによるものであって、Microsoftとして責任を負うものではない、ということが書いてあります。

利用は自己責任となるので、そこは注意が必要です。

イメージ登録します

以下手順でイメージ登録を行うことで、後ほど仮想マシンを作成する際のベースが出来上がります。

私が試した際は10分程度の時間がかかりましたが、まずはイメージのコピー処理が行われます。
f:id:kikutaro777:20140115023147j:plain

コピーが完了すると以下画面となり、状態は「登録を保留しています」と出ています。
f:id:kikutaro777:20140115023250j:plain

下の「登録」ボタンを押すとイメージの名称等を入力するダイアログが表示されます。
f:id:kikutaro777:20140115023330j:plain

登録処理が行われます。
f:id:kikutaro777:20140115023351j:plain

完了して状態が「利用可能」となりました。
f:id:kikutaro777:20140115023447j:plain

仮想マシンを作成します

仮想マシンの作成メニューで「ギャラリーから」を選択します。
f:id:kikutaro777:20140115023530j:plain

イメージの選択画面で、左にある「マイイメージ」をクリックします。
すると、先ほど登録されたイメージが出てくるので選択します。

f:id:kikutaro777:20140115023612j:plain

あとは普段の仮想マシン作成と同じ流れで、マシン名やサイズなど入力していきます。

f:id:kikutaro777:20140115023701j:plain

f:id:kikutaro777:20140115023708j:plain

今回、とりあえずエンドポイントでHTTPを設定しておきました。

f:id:kikutaro777:20140115023749j:plain

仮想マシンの作成処理が行われます。
f:id:kikutaro777:20140115023823j:plain

確認してみる

上記の手順だけで、もうJenkinsが起動してるサーバができてました(^^;ひええ

ブラウザで作成した仮想マシンにアクセスすると以下ページが表示されました。
f:id:kikutaro777:20140115025003j:plain

「Access my application」をクリックすると…Jenkins!あっさりすぎる。
f:id:kikutaro777:20140115025110j:plain

ちなみにデフォルトでユーザ設定されているようで、入れた覚えない…と一瞬困ったのですが、以下の設定となっているようです。
http://bitnami.com/stack/jenkins/cloud/azure

さっそく、user/bitnamiでログインすると

f:id:kikutaro777:20140115025243j:plain

無事ログイン。すごい。。。

実際に運用で利用する場合はセキュリティ等を色々考慮する必要があると思いますが、この環境構築の手軽さはすごいなぁと。

BitNamiとは?

上記でブラウザからアクセスした際のトップページに「BitNami」という言葉が出てます。ログイン情報もそうですね。
私の場合は最初にsshでログインしたのですが、以下画面となって

f:id:kikutaro777:20140115023958j:plain

BitNamiって何…(^^;?と、なりました。

Azureのイメージ選択時に、ちゃんと提供元として名前があります。

f:id:kikutaro777:20140115024637j:plain

上記リンクをクリックすると、VM Depotのサイトで提供元の情報ページへ飛びました。
https://vmdepot.msopentech.com/User/Show?user=4

f:id:kikutaro777:20140115024744j:plain

こうした便利なアプリケーションイメージなどを提供するサービスなのですね。
http://bitnami.com/

f:id:kikutaro777:20140115024907j:plain

うーん、クラウド情弱…。

しかし便利な時代です。

JenkinsとJava EE6で取り組んだ初めてのCI

前の開発では、それなりに大規模な開発だったにもかかわらず、構成管理や試験が全て人間ベースで行われていました。

従って当然のようにミスは起きるし、終いには

「あの人がいないとビルドできない!」

とか

「ここの試験はあの人にお願いしないと」

みたいな状況が続きました(実は今も…)

運用が安定すると人も減らさなければならなくなり「引継ぎ」というマジカルワードの嵐が起き、メタメタなコードもドンドンと任されます。

でも自動テストもないので、引き継いだ立場の人間は改造で苦労の連続…自分自身、デグレスパイラルを何度も経験しました(-_-;

で問題が発生すれば、当然、担当した自分がお客様から色々言われるわけです。
過去に設計した人や開発した人達はどこへやら…。

そんなプロジェクトが自分自身の初参加プロジェクトだったのですが、この経験から運用系システムにおける品質の重要性を身を持って学んだ気がします。

運用システムは開発自体も大変ですが、いかんせん動いてからが始まりで、安定するのもつかの間、多々発生する改造への迅速な適応が求められます。

なので心の底から

全てを手でやるのは本当にありえない!

というわけで、去年Java EE6を始めて触るのを機に+自分がアーキテクチャを任せて頂ける機会を得て、世間一般で行われている自動化の取り組みを少しずつ入れていき、現状は以下のようになりました。

  • Jenkinsを中心にビルドやモジュール管理を自動化
  • Jenkinsでリグレッション的に自動試験を日々実行
    • 単体試験は主にJUnit(+Mockito)
    • 単体では難しい試験はArquillian
    • DBも伴った試験はArquillian Persistence Extension
  • 自動ビルドで生成されたモジュールを自動で試験環境へデプロイ
  • 自動ビルド結果は関係者へ自動メールでリターン

f:id:kikutaro777:20130426220741j:plain

今のプロジェクトがこの状態なのですが、やはり安心感が違う気がします。

なんで前の大規模プロジェクトでこういうことを最初に考える人がいなかったのか…今思うと不思議です。

こういう取り組みをしたことがどこで伝わったかわかりませんが、社内の全く関係のない部署の方からJenkinsについて教えて欲しい、などの問い合わせがきたりもして、少しずつ社内に浸透すれば嬉しいなぁと思う今日この頃。

でも世間ではもっともっとすごいことをやっている人だらけなので、勉強を続けていかねば。
まずは第一歩進めたかなぁ、という感じです。

そんなこんなでJenkinsとJavaには、色々とありがとうございます、という気持ちが大きいです。

Jenkinsでビルドタスクごとに利用するJDKをスイッチする方法

先日書いた「64bitのJVMで32bitのJNIライブラリを動かしたら…」の問題を一時対処するために、NetBeansのあるプロジェクトだけを32bitのJDKで実行するようにしました。が、今度はJenkins側で問題がありました(^^;

Jenkinsも64bitのマシンで64bitのJDKを入れていたので、当然64bitでテスト実行されます。
そうすると、NetBeansでは32bitでうまくテスト通過していたものが、Jenkinsの定期ビルド時に64bitで実行されて、テストでコケてしまう…という。

f:id:kikutaro777:20130207185302j:plain

Jenkinsのコンソール出力を確認すると…やっぱり「Can't load IA 32-bit .dll on a AMD 64-bit platform」のエラーが!

珍しくググらずに解決したのですが、以下手順で、Jenkinsのタスクごとに利用するJDKを選べるようになりました。Jenkinsホントすごい…。

最初、ビルド前処理でWindowsバッチコマンドの実行にてJAVA_HOME変えたりPATH変えたりしたのですが、駄目でした(^^;というか、以下のやり方に先に気づけば良かった。。。

「Jenkinsの管理」を選択します

f:id:kikutaro777:20130207185316j:plain

「システムの設定」を選択します

f:id:kikutaro777:20130207185322j:plain

元々定義していたJDKに加えて、スイッチしたいJDKを定義します

ここが複数書けることに気付いていませんでした(^^;

f:id:kikutaro777:20130207185328j:plain

※あ…ブログ書いてて気づいたけど、64bitのほうのバージョンが古い…(-_-;これはすぐアップデートせねば。イントラのみですが、一応。すいません…。

ビルドのタスク設定で追加したJDKを選択します

f:id:kikutaro777:20130207185438j:plain

JDKのプルダウンが出てきたー!って感じで会社デスクで一人感動してました(笑)すごいー。

ということで、このタスクだけ32bitのJDKで動かすことができ、無事Jenkinsでのビルド&自動テストが通りました(^^)満足

Jenkins勉強会(第7回)、Java x HTML5 Night、WebLogic Server 12c Forum 2013に参加させて頂きました

今日は雑記です。今週は週3回でOracle社へ足を運びました(^^;
各々別のイベントですが、参加した感想等を簡単にまとめます。

第7回Jenkins勉強会(2013/1/28)

開催情報は確かTwitter経由で知って、既に参加人数が定員オーバーしていたのですが申込み、当日に定員に繰り上がったので参加させて頂きました。

半分勢いで申し込んでいたため、当日初めて内容が組込み系と知りました(^^;

でも結果的には、便利そうなプラグインの話が聞けたり、組み込み系開発の現場話やJenkins活用例が聞けて楽しかったです。

プラグインに関しては、Jenkins開発者の川口さんから
・データベースプラグイン
・レシピプラグイン
・遠隔ターミナル・プラグイン
の3つ紹介がありました。

データベースプラグイン

Jenkinsを昨年から利用しているにも関わらず私は知らなかったのですが…Jenkinsって基本的にXMLでデータ保存されているんですね(^^;
昨今、起動・クエリ速度の向上、大規模インスタンスへの対応など何かとデータベース利用の需要があるとのことで作られたプラグインとのことです。

レシピプラグイン

これはすぐにでも試してみたいなぁ、と思いました。
既存設定したビルドタスクを簡単にエクスポートできて、これをインポートすれば別環境でもすぐにタスクが利用できるプラグイン。

Webにも簡単に公開できるので、色々便利な設定をしたタスクを公開して、簡単にスタートアップできる代物です。すごいー。

遠隔ターミナル・プラグイン
  • Jenkins上のバッチ処理のデバッグ
  • 対話的なスクリプトの開発
  • Jenkins上で失敗するテストの検査

などができるプラグイン。デモみたのですがJenkinsの画面内で普通にLinuxのターミナルが起動してました(^^;

その他、主に組み込み系の方々によるJenkins利用例などのプレゼンを聞きました。
実機でのテストが難しい、という点を除いては、Jenkins利用方法に関して通常のシステム開発と大きく異なる点はないようですね。

皆Jenkins大好き、という愛を感じるプレゼンで楽しかったです。

Java x HTML5 Night(2013/1/31)

JavaコミュニティのJJUG(Japan Java User Group)HTML5コミュニティのhtml5j.orgが初コラボで企画されたナイトセミナーに参加させて頂きました。

実はHTML5の知識はほとんどなく、でも今後Webを利用した案件に関わりそうなので
知っておかねば、と思い参加。

感想は…とにかくWebSocket使ってみたい!でした(^^;

アジェンダをみて事前にWebSocketとか少し勉強していったほうがいいかな…と思いながらも、結局手をつけずに参加したのですが、白石さんによる、とてもとても丁寧でわかりやすい説明があって
勉強になりました。

また、ひらいさんによる冒頭のJavaHTML5 Historyもとても勉強になって、Javaやって数か月の自分はまだまだ知らない用語あるなぁとメモばかりしてました(^^;

お二人の説明は本当にわかりやすく、HTML5を詳しく知らない私のような初心者でも短時間で色々興味が湧きました。

後半は寺田さんによるJava EE7によるHTML5対応の紹介とProject Avatarの紹介がありました。
WebSocket使いたいし、Java EE7をすぐにでも色々触りたいですが、今の自分としてはまず次期Java EE6の案件を確実に成功させることが重要かな…(^^;趣味で触ろう。

最後は櫻庭さんからJava FXとHTML5の紹介があり、Java FXとは何かという辺りから、HTML5が色々動くデモなど楽しい時間を過ごしました。

2時間ちょっとの長丁場でしたが、興味深い話ばかりであっという間に終わった感じでした(^^)

WebLogic Server 12c Forum 2013(2013/2/1)

前半は主にWebLogicに関するお話でした。冒頭は米Oracleマイク・リーマンさんからWebLogicJava EE等に関する紹介がありました。続いて、OracleさんとNECさんによるActive GridLink for RACの性能検証の発表があり、色々と素人な自分でも凄そうだなと感じるものでした(^^;
インフラ系の方だとかなり興味深い内容だったかと思います。

後半は主にJava EE関連で、寺田さんによるJava EE6の注目すべきポイントのお話がありました。

今回のセミナーでは、日本Oracleさんとして、国内でJava EE6がまだまだ浸透していないことへの危惧、そして啓蒙したいという想いがひしひしと伝わる感じでした。

最後はパネルセッションが行われて、実際にJava EEでシステム構築されている方々を交えての話がありました。

パネラーには「マスタリングJavaEE5」を書かれた斉藤さんやEclipseの日本語化など様々やられている伊賀さん(いがぴょんさんと言ったほうがわかるらしいです(^^;)がいらっしゃったのですが、実際に現場で利用されている方の話は私にとってとても興味深かったし、参考になりました。

斉藤さんがJSFのリッチコンポーネントの話をされた際に「RichFacesやIceFacesなど」と話されていて

「ええ…PrimeFacesは…」

と心で思っていたら

「色々ありますが、最近ではPrimeFacesが良く、私も使ってます」

という言われていて、おー、やったー、と何か勝手に興奮してました(^^;

セッションの後に質問時間とか設けられなかったのですが、個人的にどうしても聞きたかったので質問させて頂きました。

Java EE6でかなりオールインワンになったけれど、APサーバで何を使うのが良いか、JSFのコンポはどれが良いかなど細かい所では色々迷います。これらをどのように選択されているのでしょうか?

と…。

そういった悩みはやはり同じくあるとのことで、実際に少し触ってみる、小さいプログラム作ってみるなどをして選定されているとのことでした。自分も同じようなことをしているので、やはり間違っていないし、そうやって地道にやるのがベストなんだなぁ、と改めて思いました(^^)ありがとうございました。

そんなこんなで、帰りがけに本買いましたw

Java EE6を学んで、ある程度知識がついてから買おう、と思っていたので、まだ知識が十分ではないですが、勢いが大事なのと、今なら何とか新旧の区別はわかる程度にはなっている(であろう…)と思って。。。

Java EEについて

最後は今週色々と話を聞いて感じたことです。

自分の部門では長らくMS系の技術(C#,WebはASP.NETASP.NET MVC)が採用されており、今もMS一本です。
特に年配の方々はエンタープライズ系Javaに良い印象がないので仕方がない気もします。

MS技術は迷いがないし、情報も溢れているし、何も困ることはなく、開発では威力を発揮するのは間違いないです(^^)

昨年ちょっとした経緯があって一部の上の方からJava EEへの取り組みをまかせて頂き、調べ始め、そして触りました。

J2EEは噂レベルでは聞いていたので、最初はネガティブな印象でしたが、幸いにも今はJava EE6があり、大きく変わっているのは間違いないかなと。

そして驚くべきは海外での情報の豊富さ。なぜこんなに海外で利用されていて日本は使われないんだろう…と思いました。

言語仕様とか、開発効率という観点ではC#ASP.NETに比較するとまだまだ微妙な部分もあるとは思いますが、私が今Java EEを楽しくやっているのは、とにかく世界中に溢れているオープンな技術を自由に使えること。ここに尽きるかと思います。Jenkins等もその1つです。

これだけ自由な世界に触れると、開発環境やその他含めて、お金をかける場合とかけない場合で開発に微妙な差がでる世界にちょっとずつ疑問というか、うーん、という印象を持ちます。
逆に、ちょっとのお金で良い開発できるなら何の問題もない、と上の方々には言われますが。

いずれにせよ、次期Java EE6の開発では自分に責任があるし、正直不安な所もたくさんありますが、世界で使われているのは調べているとわかるし、なんかようわからないんですが、今は楽しいので何としても成功させたい所です(^^)

まあプログラムやシステムが成功しても、エンドユーザさんが本当に利用して満足してくれるかという所とは直結しないので難しい所ですが…(-_-;

Jenkinsで自動ビルドした成果物をGlassFishへ自動デプロイしてみる(リモート編)

今日は仕事納め。2012年は仕事の面でいえば変化のある年となり、C#2.0&WindowsFormの開発ばかりだった状態から一転、JavaEE&Web開発を任せて頂き、新しいことに触れる楽しさを思い出す年となりました。
冬休みはJavaEEGlassFishを中心に勉強しつつ、やはりC#2.0以降もちゃんと学びたいと思います。

……

先日の記事Jenkinsで自動ビルドした成果物をGlassFishへ自動デプロイしてみるはJenkinsとGlassFishが同一マシンにある状態でした。

今日はJenkinsのあるAサーバ(Windows7 Professional SP1)からGlassFishが入っているBサーバ(Windows Server2008 R2)への自動リモートデプロイをしてみました。

リモートデプロイするに当たってGlassFishの管理コンソールへ外部からアクセスできるように設定しました。
Advent Calendarの記事「GlassFishの管理画面にlocalhost以外からアクセスする」がとても参考になりました。

その後の設定は「Jenkinsで自動ビルドした成果物をGlassFishへ自動デプロイしてみる」の手順8でGlassFish hostnameのIPをBサーバにしただけですが…

特に問題なく成功!あれ、ネタなし…。

あ、あと試したこととしてはGlassFishのコマンドを使ったデプロイがありました。

asadmin --host 10.XX.XX.XX --user admin --port 4848 --secure deploy モジュールの絶対パス(C:\xxxx\xxx.war)

パスワードを要求されるので入れてあげると

xxxという名前のアプリケーションがデプロイされました。
コマンドdeployは正常に実行されました。

と出て、無事リモートデプロイできました。便利。

Jenkinsで自動ビルドした成果物をGlassFishへ自動デプロイしてみる

来年早々から開発が本格化するとのことで、今までやってきたJavaEE6プロトタイプ開発作業もプロトの域を脱して本番準備となりました。
とりあえず年内はモジュールの分離やら開発環境の周辺整備を優先することにしたため、最近は日記のネタがJavaEEから離れてMavenネタなどになっています。

今日は自動定期ビルドとして主に使っているJenkinsにて、ビルド完了後、GlassFishへ自動デプロイする、ということをやってみました。*1

なお自分の環境ではTracLightningで入れたJenkinsを利用しています。

1.「Jenkinsの管理」メニューを選びます


2.「プラグインの管理」を選びます


3.「利用可能」タブを選択します


4.数あるプラグインの中から「Deploy Plugin」を探します


5.チェックを入れて「ダウンロードして再起動後にインストール」ボタンを押下します


6.Jenkinsを再起動します

7.再起動して、ビルドタスクの設定を選び、下のほうにある「ビルド後の処理の追加」を押します

プラグインのインストール前

プラグインのインストール後
Deploy war/ear to a containerというメニューが追加されています

私の場合は成果物の保存も加えて設定しました。

8.Deploy war/ear to a containerの設定をします
とりあえず以下のような設定をしました。


9.Jenkinsからビルドしてみます

Deployのステータスがでて


成功したようです!


10.GlassFishの管理コンソールからみるとちゃんとデプロイされています

次はリモートのGlassFishへデプロイする予定です。

*1:Jenkinsとは別のマシンで立っているリモートのGlassFishへデプロイする予定ですが、今日時点ではJenkinsとGlassFishが同じマシン(Windows7 Professional SP1)にいる環境で試しています。

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村