2016年6月29日水曜日

[Jenkins] Blue Ocean を試してみる

第7回大阪Jenkins勉強会で紹介された Blue Ocean がとっても良さそうだったので、試してみました。
ブログズミ: 「第7回大阪Jenkins勉強会」に行ってきた



Blue Ocean は現時点ではまだリリース前ですが、Github にソースコードが上がっており、パッケージをビルドしてインストールすれば使用することができます。
今回はこの方法で Blue Ocean を試してみたいと思います。
(筆者の環境は Windows 10 です。)

Maven
まず、パッケージをビルドするためには Maven が必要になります。
また、Maven を動かすためには JDK も必要になりますので、インストールして JAVA_HOME 環境変数を設定しておいてください。(後述してますが、 JDK は 64bit OS なら 64bit 版をインストールしてください。)

Maven は公式サイトから .zip をダウンロードしてきます。
Maven – Welcome to Apache Maven

ダウンロードしたら、展開し bin フォルダーに PATH を通します。

cmd を起動して mvn --version を実行してバージョンが正しくでればセットアップ完了です。


Blue Ocean をセットアップする
環境の準備ができたら、 github からソース一式を clone します。
git clone https://github.com/jenkinsci/blueocean-plugin.git
(執筆時のコミットは 051caf5aa7c0459abfd78f16d2b68bfb49a5820f)
ルートディレクトリで以下のコマンドを実行。
mvn clean install -DskipTests

途中でダウンロードが止まることがあったので、clean せず再実行
mvn install -DskipTests

それでも失敗する。ぐぬぬ。。。
[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.0:install-node-and-npm (install node and npm) on project blueocean-web: Could not download Node.js from: file:/blueocean-plugin/blueocean-web/target/frontend/v5.8.0/win-x86/node.exe: Could not download file:/blueocean-plugin/blueocean-web/target/frontend/v5.8.0/win-x86/node.exe: Source 'blueocean-plugin\blueocean-web\target\frontend\v5.8.0\win-x86\node.exe' does not exist -> [Help 1]

実際にそのフォルダを見に行ってみると、win-x86 フォルダがなく v5.8.0 フォルダの下に node.exe がありました。
JDK が 64bit じゃないとダメなのか?と思って x64 に変更してリトライ。



そこはパスしたものの、今度は別のエラー
[INFO] [20:30:09] error: SyntaxError: blueocean-plugin/blueocean-dashboard/target/jenkins-js-extension.jsx: Bad character escape sequence (6:113) while parsing file: blueocean-plugin\blueocean-dashboard\target\jenkins-js-extension.jsx
[ERROR]
[ERROR] blueocean-plugin\blueocean-dashboard\node_modules\@jenkins-cd\js-builder\index.js:557
[ERROR] throw 'Browserify bundle processing error. See above for details.';
[ERROR] ^
[ERROR] Browserify bundle processing error. See above for details.

ググるとこれが出た。
[JENKINS-35180] transformToJSX handles Path string wrong on windows - Jenkins JIRA
[Blue Ocean] Build failure when compiling BlueOcean : Dashboard in a Windows 7 PC - Google グループ
[Blue Ocean] Build failure when compiling BlueOcean : Dashboard in a Windows 7 PC - Google グループ
まさにコレです。
ただ、コメントを見る限りではこれは既に修正済みのはず。
実際に、自分が clone してきたのにもちゃんと対策がされてました。

なんでだろう?とログとエラーが発生している jenkins-js-extension.jsx ファイルをよくよく見ていたら、これは "throw new Error" の行が問題で yaml ファイルのパスのパス区切りが "\" のままになってました。問題としては上記URLで言われているものと同じですね。

じゃあ、同じように replace すれば解決するはずだ。というわけで、jenkins-js-extension.jsx をファイルを生成している blueocean-plugin\js-extensions\@jenkins-cd\subs\extensions-bundle.js をチェック。
問題のパスは jsExtensionsYAMLFile に格納されていたので、以下の様に書き換えました。
//var jsExtensionsYAMLFile = findExtensionsYAMLFile();
var jsExtensionsYAMLFile = findExtensionsYAMLFile().replace(/\\/g, "/");

node_module(blueocean-plugin\blueocean-dashboard\node_modules\@jenkins-cd\js-extensions\@jenkins-cd\subs) の方が残っているかもしれないので、を削除しておいて再実行。

通った!


試しに使ってみる
blueocean のトップディレクトリで以下のコマンドを実行します。
mvn -f blueocean-plugin/pom.xml hpi:run

Jenkins が起動するので、 http://localhost:8080/jenkins/blue にアクセスします。
Jenkins 2.0 でおなじみのアンロック画面が出ます。


コンソール出力にパスワードが出ているのでコピペして進んでください。
次に、プラグインインストール画面が出るので、左のオススメインストールをします。
この辺は普通に Jenkins 2.0 をインストールするときと一緒なんで、説明は省きます。

Jenkins 2.0 の初期設定が終わるといつものページが開きます。


「Try Blue Ocean UI...」って出てますね!
ここをクリックすると…

ジョブがなんもないので Not Found です。
でも、これで Blue Ocean が使えるようになりました!

既存の Jenkins にインストールしてみる
上記方法で Blue Ocean が試せるようになりました。
でも、「自分は既にある Jenkins で Blue Ocean を使ってみたいんだ!」ということでやってみました。
といっても、他のプラグインと同様にパッケージをつくるだけです。

まず、以下のコマンドを実行します。
mvn package -DskipTests



成功すると blueocean-plugin や blueocean-web の target ディレクトリに .hpi が出来上がっています。
blueocean-plugin はそれぞれに依存しているので、以下のように .hpii を順次アップロードしていきます。
アップロードは、Jenkinsの管理>プラグインの管理>高度な設定タブのプラグインのアップロードからします。


  1. blueocean-web
  2. blueocean-common
  3. blueocean-rest
  4. blueocean-rest-impl
  5. blueocean-dashboard
  6. blueocean-plugin
(※ GitHub Branch Source Plugin と Favorite プラグインに依存しているので事前にインストールしておくこと)
(※ 他にも依存しているかもしれないのでインストールに失敗したらエラーログを確認しよう)

インストールが無事に終わるとこのようにマイ Jenkins にも Blue Ocean がやってきます。

Blue Ocean を開くと…






やっぱり Not Found
そうなんです。私の Jenkins ではまだ Pipeline を使ってないんです。。。

せっかくだし、始めてみようとしたのですが、なぜか上手くいかなかったので今回はナシとさせて頂きますm(__)m
もう色々面倒くさいし、コンソールログに警告がイッパイ出てるし、一から Jenkins 2.0 とパイプラインを構築しようと思います。

実際に使ってみたところは、それが出来たらで。
今回は以上。では~



0 件のコメント:

コメントを投稿