これから始めるPHPerのJenkinsでCIやってみよう に参加してきた
id:officel(@raki) 主催の これから始めるPHPerのJenkinsでCIやってみよう(DevHub西新宿) #DevHub0128 に参加してきました。共催というか。
まあ今回は会場提供だけ、の予定だったのですが、前日にちょっと予習をしようと思って、というかうちの会社のメンバーをハンズオンでサポートするつもりでいたので、コンテンツを聞いてみた。
するとハンズオンの教材が自作ではなくてありものだという。そうか。良かろう。
でそのありもの教材がこれ: Template for Jenkins Jobs for PHP Projects
おいおい英語かよ、と。いうのはともかく実はこれをそのまま追って行くと結構不親切。そもそもJenkinsのインストール書いてないじゃん!!
というわけで前日にがっつり予習をすることにした。
予習
まあこれはありがちで仕方ないのだが wgetとか言われてもあるわけがない。このjenkins-cli.jarについては、jenkinsの管理→Jenkins CLIのメニューからダウンロードするのが確実。
次に「Required PHP Tools」の部分については今回のtemplateで、これが必要、というわけではなくて、全然これでは不十分。実際にはphplocやらなんやらいろいろなツールをインストールする必要がある。なぜこれだけやり方が載っている・・・
次のbuild.xml については何がヤバいって、「これを何処に置くべきか」がわからないこと。実際にはプロジェクトを作成すると、ワークスペースがないのでビルドせいと言われるので、ビルドしてできたworkspaceの直下に配置。
ここでjenkinsからビルドをかけると、エラーになる。一発目のエラーは、srcのフォルダがないこと。なんでー?と思って調べるとlintのタスクでsrcフォルダ以下にphpファイルがある想定らしい。その上で、src以下の全てのファイルに、php -l コマンドを投げるの意と認識。
ここから先は、どうやらこのフォルダにて手動でantコマンドを叩きながら、ある程度のエラーをつぶしながらやったほうが効率的ということに気づき、方針転換。さよならjenkins(ぉ
ところがwindowsでantが鬼門
phplocのタスクでどハマる。どうやらcreateProcessでエラーになってるよとか言われている。(これはビルドのコンソールでエラーメッセージを見るのが良い)何。意味分かんない。
ここでphplocをコマンドとして叩いてみたが正常に実行されていることから、そもそもantからなぜかphplocが叩けないことに問題があると認識。phplocをよく見ると、batファイル... ということで、つまりコマンドとしては "cmd /c phploc"を実行しないといけない。
antではこれを以下のように書く。
<target name="phploc" description="Measure project size using PHPLOC"> <exec executable="cmd"> <!-- ここが修正点 --> <arg line="/c phploc" /> <!-- ここが修正点 --> <arg value="--log-csv" /> <arg value="${basedir}/build/logs/phploc.csv" /> <arg path="${basedir}/src" /> </exec> </target>
ていうかantの勉強になってるよ!!
とまあこんなところが予習のハマりポイントでした。
ということで、とにかくなんかまとめてビルドのコマンドの中でチェックコマンドとかを作っておいて、jenkinsから叩かせればいいのだと認識して、PHPのもろもろのコマンドを全部確認するとかめんどくさいので放棄。
さあ発表資料を作ろうか
まあ友達の勉強会では発表して盛り上げるのは当然だよね!ってことでここからとりあえず定番(謎)「やってみた」シリーズの仕込み。まあJenkinsに対してイメージしていたのはSVNから持ってきて、ビルドして、通知、ってことだったので、さわりはじめて数時間でこれに取り組んでみた。
ま、とにかく失敗させて(かつ、既存のphpcsとかではなく)エラーを通知させたらどうなるんだろう?という一連のタスクが作れたということで満足。
準備完了。
というわけで、この1ページのハンズオン用コンテンツは、2.5時間コースだなこれは・・・と認識。
また、Windowsの人はWindowsだからこそハマるポイントが明らかにある!と思ったので即、グループ分けはOSでわけた方がいいのではないかと提案。そのままWindowsのチームは自分が面倒を見る覚悟を決める。
当日。
えっ...ハンズオン1時間予定だって・・・?!無理無理!
というわけで @rakiのJenkins/CI/PHPのインスペクションについてのもろもろ発表が1時間。内容としては概要をざーっとという感じで、知ってる人は知ってるし、知らない部分があればふーん、ってなる内容。各インスペクションコマンドについて実行例がついてるとよりわかりやすかったように思う。
その後ハンズオンが一時間で、ワールドカフェが一時間との予定とのこと。ワールドカフェのファシリテーションも難しそうなので、とりあえずどうなるか楽しみにしていた
が、ハンズオンがやっぱり・・・時間を食ってしまったのと、その「止めるタイミング」が見つからないまま流れて行ってしまう...しかもMacのグループは途中でワールドカフェならぬCIについてもろもろを議論しているではないか!
というのを横目にWindowsのグループは割としっかり進捗。特に自分がポイントだと思ったのは、「antの手動実行した方がいいよ」と「エラーが出たらコンソール見るといいよ」っていうのを伝えたことによって「自分でトラブルシュートしやすい状況」を作れたことと思っている。ハンズオンの運営のコツの一つは「多分〜な環境の人が〜なポイントでハマるのではないか」というのを相当数想定しておくことで、かつ、「困ったときにはどういうプロセスで調べるか(単にググるではなく)」ということ、また、「そもそも今やっている作業にはどういう意味がある」ということを明確にして行くことなのではないかと思う。
コンテンツの流れとしては例えば「〜をするために〜します、具体的には〜なことで、このようにやってみてください、細かいリファレンスはここです」って感じ。
ちなみに懇親会ではこんなコメントももらった
- 何時の時点でどこらへんまで進んでいるのが理想ラインだとわかっているとやりやすい(し、周囲のサポートもしやすい)
- そもそも講師側の人数が足らない(まあ、そもそもひとりの予定だったんだけどさ!)
講師の人数が少なかった、とまでは思わなかったが、やっぱり教材の丁寧さ、というのは当然講師への質問の絶対数を減らすので、その分、講師の少なさ感は減るのかもしれない。やっぱハンズオンって難しいですよ!
会場について
今回Zussarで募集をかけたのですが、珍しくキャンセルもかなり少なかった。(20人の募集で4名。しかも最終的には20人ちょうどを収容。)20人が基本定員の部屋だったので、キャンセルがあると思っていた分ちょっと窮屈になってしまった。
また、個人持ち出しのWi-Fiルータが途中で接続しづらくなってしまうなどの問題があり、回線費用の足しのカンパ的に100円いただいているのですが、それに応えるサービスレベルが提供できなかったのがちょっと残念だった。会社所有のイーモバも動員すればよかったのかもしれないが、もしかしたら他の人もWiMAXを持ってきて起動していたことが、電波障害を起こしていたのかもしれない。
解決できる課題じゃないのかもしれないけど・・・悩ましいなあ。
あと・・・アンケート取るって言ってなかったっけ?