normalian blog

I will introduce about Microsoft Azure, ASP.NET or Java EE

Azure Web サイトで Jenkins を無料で稼働させてストレージサービスにデータをアップロードする

本日の記事は Azure Advent Calendar の14日目となる。今回は以下の様に Webサイト 上に Jenkins を配置し、ジョブ実行時にデータを Azure ストレージサービスにアップロードするまでを紹介する。

構築手順の概要は?

Webサイトは JDKTomcat が標準で配置されているが、以下の様に Jenkins や Jenkins Plugin は配置されていない。
f:id:waritohutsu:20141214121627p:plain
したがって以下の流れとなる。

  • Jenkins 配置向けの Webサイト を新規作成する
    • フォルダ作成、モジュール配置
    • 環境変数の設定
  • Jenkins を設定し、Azure ストレージ上にアップロードできるようにする
    • Jenkins 向けのストレージサービスを新規作成
    • Azure Storage プラグインの設定
    • ジョブの作成
    • ジョブの実行

Jenkins 配置向けの Webサイト を新規作成する

まず、管理ポータルから新規に Webサイト を作成(今回は normalian-jenkins という名前にした)し、以下の様に Tomat を有効化する(JDKTomcat のバージョンがちょっと古いのはご容赦願いたいが、自前でモジュールを配置すればもちろん最新版が利用可能だ)。
f:id:waritohutsu:20141214121828p:plain
更に、以下を参考に HUDSON_HOME と JAVA_OPTS の環境変数を設定する。以下の設定を行わない場合、Jenkins がエラーを出力して起動しないので要注意だ( Jetty 側は -Djava.net.preferIPv4Stack=true が元々オプションに入っているのに、なぜか Tomcat 側は入っていない)。
f:id:waritohutsu:20141214122105p:plain

次に、Kudu にログインしてする。Kudu を知らないのは Azure 界の著名人が記載する Windows Azure Web Sitesの魅力を120%引き出す を参照すること。Kudu の Debug console タブから移動し、以下の様に HUDSON_HOME 環境変数向けのフォルダを作成する。なお、Ant や Maven は必要な場合はフォルダを作成し、モジュールを配置すること。
f:id:waritohutsu:20141214122148p:plain

更に、webapp\ROOT の直下に jenkins.war モジュールの中身を配置する。一番簡単な方法は jenkins.war を jenkins.zip にリネームし、モジュールの中身を引っこ抜いてコピーすればよい。
f:id:waritohutsu:20141214122254p:plain

ここまで設定した後、Azure 管理ポータルから Jenkins の設定をした Webサイト を再起動してアクセスする。以下のような画面がでるのでしばらく待ってほしい。
f:id:waritohutsu:20141214122406p:plain

しばらくすると、以下の画面が表示されるので設定完了となる。
f:id:waritohutsu:20141214122442p:plain

Web サイトはインターネット上に公開されているため、ユーザ作成を含む最低限のセキュリティ設定(Jenkins) を参照して登録されたユーザのみログインすることが可能となる(が、https にすらなっていないので、あくまで最低限)。

Jenkins を設定し、Azure ストレージ上にアップロードできるようにする

先ほどまでの手順で Webサイト 上に Jenkins の環境が構築されたので、次は Jenkins 自体の設定を行う。
まずは Jenkins Plugin 向けのストレージサービスを新規に作成する(名前は任意でよい)が、こちらは一般的な方法なので手順は割愛する。
次に、以下の流れで Azure Storage Plugin をインストールする。

  • Jenkins のダッシュボードで、[Jenkins の管理] を押下する。
  • [Jenkins の管理] ページで [プラグインの管理] を押下する。
  • [利用可能] タブをクリックします。
  • [Windows Azure Storage plugin] で検索し、Microsoft Azure ストレージ プラグインを確認する。
  • [再起動せずにインストール] か [ダウンロードして再起動後にインストール] のどちらか押下してインストールを行う。

次に、[Jenkinsの管理]-[Jenkinsの管理] の Microsoft Azure Storage Account Configuration セクションで以下を参考に設定を行う。
f:id:waritohutsu:20141214122519p:plain

さらに、Jenkins のダッシュボードから [新規ジョブ作成]を選択し、[フリースタイル・プロジェクトのビルド]を選択し、以下を参考に情報を設定する。
f:id:waritohutsu:20141214122555p:plain

こちらについてはの詳細な手順は Jenkins 継続的インテグレーション ソリューションでの Azure ストレージの使用にもあるので合わせて参考にすること。
以上の設定が終わった状態から作成したジョブから [ビルドの実行] を選択するとストレージサービスにジョブで設定したファイルがアップロードされる。まずは Jenkins のジョブのページを確認すると、以下のようにジョブの実行結果が確認される。
f:id:waritohutsu:20141214122648p:plain

更に、ストレージサービスを確認するとモジュールがアップロードされていることが確認できる。
f:id:waritohutsu:20141214122754p:plain

終わりに

今回は無料で Azure Webサイト上に Jenkins 環境が構築できることを紹介した。こちらに対し、さらに NEXUS を追加 したり、Github の Jenkins plugin を追加しても面白いだろう。