normalian blog

Let's talk about Microsoft Azure, ASP.NET and Java!

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 を追加しても面白いだろう。