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 とパイプラインを構築しようと思います。

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



2016年6月21日火曜日

「第7回大阪Jenkins勉強会」に行ってきた


第7回大阪Jenkins勉強会」に行ってきました。

前回から約2年半ぶりだったんですね。
ブログズミ: 第6回大阪Jenkins勉強会に参加しました
久しぶりの大阪Jenkins勉強会でしたが、今回はヒジョーーーに内容の濃い勉強会でした。
すべてを書くのはとっても大変なので、簡単に発表の紹介をしつつ感想なりを書いておきます。

前半戦
前半戦は、Jenkins 2.0 をインストールするところから始まり、事例や 1.X との比較と順番に良い流れでした。

「初めての自動化、Jenkins」
Jenkins 2.0 のインストールしてみたときの躓いたポイントを交えながらの発表でした。
Jenkins 2.0 になって、インストールの時の手順が少し変わったので知らない人も結構いたのではないでしょうか?

Jenkins Pipeline Plugin と Android アプリ開発
Jenkins 2.0 を使ってみた事例
個人的には Android な話がもっと聞けたら嬉しかったです。

実録!隣のJenkins2
Jenkins 1.X + Build Pipeline と Jenkins 2.X + Pipeline Plugin の比較。
自身のデモ動画にツッコミながら解説する新しいスタイルの発表でした。比較もわかりやすくて良かったです。

そしてフォローありがとうございます。


Jenkins 2.0の紹介
川口さんのセッション。Jenkins 2.0の紹介
このスライドは読んだことがあったのですが、やはり本人(しかも Jenkins の生みの親である川口さん)から聞けたのがすごーくうれしかった。
ちなみに、Pipeline plugin の DSL は Pipeline script と呼んでいるそうです。

Blue ocean UI
Jenkins 新しい UI プロジェクト。https://jenkins.io/projects/blueocean/

Blue Ocean の紹介と実際に動作しているところを見せていただきました。(通訳川口さんとの掛け合いも面白かった)
見たい情報が見やすくなる(入力待ちのステージや失敗したステージが上にくる)とか、ちょっとしたアニメーションとか、Jenkins 見てくれない問題の解決に近づくかなーという期待が持てました。

Travis, Circle, そしてJenkins 2.0
Jenkins の問題点は、「Jenkins がすご過ぎること」。
そして、プラグインもりもり、独自のジョブ構成、属人化…の末に Jenkins 職人が生まれてしまうこと。

私の会社でもそんな感じになってますね…
こちらの発表でもあったように、CI サービスのほうが手軽で管理が楽なので、個人的な趣味プロは CI サービスに移行しちゃってます。

しかし、CI サービスの恩恵を受けた Jenkins 2.0 は、Jenkins 職人業を減らすことができるようになったのでは?という話ですね。
Blue Ocean も個人的には期待が持てますし、会社では今後も Jenkins を使っていくことでしょうし、とにかく、まぁ Jenkins 職人業が減るといいですよね。

ピザ待ち質問大会、そして LT へ
ビアバッシュのビールとピザ待ちの間に、川口さんへの質問大会となりました。
付箋に聞きたいことを書いて、答えていただく形式。
私も何個か質問を書きました。

そして、待ちに待ったビールとピザの登場。
(ピザの登場タイミングもすごいタイミングよくてびっくり)
おなかも膨れて、いい感じにお酒も入ったところで LT 大会へ。


うん、もうどれもすご過ぎて説明できない!!
ホント LT のレベル高すぎでした(やらなくてよかった~)

まとめ
本編・ビアバッシュともに大変満足。楽しかったー
ぜひ、第8回もやってほしいです!

最後に、会場となった楽天さんありがとうございました。

2016年6月17日金曜日

iutest v1.15.1 のリリースを予定していましたがスキップします

現在 llvm apt repository が落ちており、一部のテストが回っていないため予定していていた iutest v1.15.1 のリリースはスキップさせていただきます。
(※ github のタグは更新されています)

Travis CI Build Failing - Stack Overflow
[llvm-dev] IMPORTANT: APT repo temporary switched off

2016年6月6日月曜日

Codecov の見た目が変わって使いやすくなっていた



Codecov は以前にも紹介したカバレッジレポートサービスです。
ブログズミ: [C++] Codecov でコードカバレッジ
(いつ変わったのかわからないのですが、)ちょっと見た目が変わって使いやすくなっていたので、また紹介したいと思います。

まずは、ダッシュボード。
グラフが表示されるようになりました。


次に、差分表示。
これが一番いいなと思った機能で、前回との Diff 表示とその変更点部分のカバレッジを見ることができます。

これイイです!


さらに、3つの種類のグラフ表示ができます。


Sunbrust

Sunbrust は各ブロックをクリックすると動きます。

Icicle


Grid



最近、カバレッジを見てなかったので、また少し気にするようにしたいと思います。
それでは。