kitematicでjenkins 2系を動かしてみる

前回とかでkitematicを読んで見てたけど、とりあえず最新verのkitematicを動かしてみたくなったので最近v2になったっぽいjenkinsを動かしてみた

jenkins 2.xをkitematicで起動する

kitematicを起動して検索窓に jenkins って入れるとオフィシャルのjenkins dockerが出てくるので選ぶ

f:id:henteko07:20160618200406p:plain

ここでそのままcreateを押すとlatestなverのjenkins(現状はv1.651.3)が立ち上がってしまうので、ここはtagを選択してインストールしたいverを選択する
とりあえず2.3くらいにしてみた(最新は2.9みたい changelog)

f:id:henteko07:20160618200652p:plain f:id:henteko07:20160618200657p:plain

これでcreateを押せば、指定のverのjenkinsが起動する

jenkins が立ち上がったら

jenkins 2系からかなり変わって、最初にjenkinsのダッシュボードにアクセスするとこんなのが出てくる

f:id:henteko07:20160618200835p:plain

なにやらパスワードをコピペしてこいと書かれているので、kitematicのこの部分のexecボタンを押して対象のdocker内で以下のコマンドを実行して出てきた文字列をコピペしてみた

f:id:henteko07:20160618200951p:plain

$ cat /var/jenkins_home/secrets/initialAdminPassword

そしたら次はプラグインのインストールしとく?みたいに聞かれるので、とりあえずインストール押しといた

f:id:henteko07:20160618201222p:plain f:id:henteko07:20160618201156p:plain

インストールが終わると普通にAdminユーザー作ってログインできた
お手軽感がすごい

f:id:henteko07:20160618201321p:plain f:id:henteko07:20160618201412p:plain

さいごに

kitematic経由でjenkins 2系をdockerで動かしてみた
すごい簡単すぎた
特にkitematicからexecボタン押したら即dockerコンテナ内でコマンド打てるの楽すぎるでしょ

jenkinsが2系をまだ触って見てないからちょっと触ってみる

kitematicを読んでる part2

前回からkitematicを読んでる
今回はkitematicがどうやってdockerとかVirtualBoxなどの依存するパッケージをインストールしているかを調べてみた

依存するパッケージのインストール方法

結論として、現状のkitematicではDocker Toolboxをユーザーの手でインストールしてもらっているみたい

https://github.com/docker/kitematic/blob/master/src/components/Setup.react.js#L49

すごい単純だった
実際に動かしてないから多分だけど

昔のkitematicではどうしていたか

現状では手動のインストールだけど、前のverとかだとどうしていたか気になったので調べてみたら、バイナリをコピーしたりしていた

https://github.com/docker/kitematic/blob/0ca35b5db1d614a0d0d00c98d060fdd4fc220ae5/src/utils/SetupUtil.js#L37

VirtualBoxインストーラーを叩くようにしているみたい

https://github.com/docker/kitematic/blob/0ca35b5db1d614a0d0d00c98d060fdd4fc220ae5/src/utils/SetupUtil.js#L54

割りと泥臭いけど、こんなんでいいかみたいな安心感ある

次はlocalにインストールされているdockerとかの確認をどうやってやっているかを詳しく読みたい

kitematicを読んでる

前回でとりあえずElectronのことが少しは分かったので、今回は他のElectron製のアプリのコード読んでみることにした

選んだのはdockerのGUIアプリのkitematic

github.com

選んだ理由としては、kitematicを使った時の最初の印象がすごいみたいな感じだったのと、単純にdockerとどう連携してるのかが気になったのでこれを読むことにした

読み方

とりあえず普段使ってるIntellij IDEAにimportして読んでる
今のところはビルドせずに単純に読むだけ、コードジャンプはしたいのでIntellij IDEAにお任せする、みたいな感じで読んでる

kitematicがlocalのdockerとどうやって連携しているか

まずlocalのdockerとどうやって連携しているのかが気になったので、そこから読み進めていってる

結論としては、kitematicはdockerのRemote APIを使って連携してるっぽい
https://github.com/docker/kitematic/blob/master/src/utils/DockerUtil.js

当初は普通に child_process.execSync とかでdockerコマンド叩いてるのかなとか妄想してたら、そうだRemote APIあるやんってなった
もっと詳しく見ると、どうやらnpmモジュールのdockerodeを使ってるみたい
便利すぎるこれ…

といいつつ、dockerのデーモンの生存確認として、child_process.execSync を使ってるみたいだった
https://github.com/docker/kitematic/blob/master/src/utils/DockerUtil.js#L120

さいごに

読むの楽しくなってきたからもう少し読んでみる
次はdockerやVirtualBoxなどの、localのインストールしておく必要がある依存しているもののインストールをどうやって行っているのかが知りたいのでそこら辺を見てみる

広告を非表示にする

ElectronでAbemaTV用のViewer作ってる

Electron熱が再度来たので、練習のためにとりあえずAbemaTV専用アプリ作ってみてる

github.com

こんな感じで各Windowごとにアニメ見れたり、複数Window出せたり、番組表をすぐ出せたりする f:id:henteko07:20160609223217p:plain

新しいWindowとか番組表Windowは全部ショートカットキーで呼び出せるので、割と便利

作ってて思ったこと

Destructuring assignment キモい

const {app, BrowserWindow, Menu} = require('electron');

こんな感じで書いてるところあるんだけど、これすごくキモい
この気持ち悪さはJavaScriptを書き続ければ慣れるのだろうか

Menu.buildFromTemplateがおかしい

Menuを作るときに渡すテンプレートなんだけど、こんな風に書いてもEditというMenuは表示されない

const template = [
  {
    label: 'Edit',
    submenu: [
      {
        label: 'Quit',
        accelerator: 'Cmd+Q',
        click: function() { app.quit(); }
      }
    ]
  }
];

一番はじめのMenuは絶対にlabelが潰されて強制的にアプリ名のMenuになるみたい
気付かずにハマった

エンジニア向けサービスを支える技術 で発表することになりました

今月末にあるイベントで発表することになったのでそのご報告です

sideci.connpass.com

エンジニア向けサービスを支える技術 というイベントで発表することになりました!
まだタイトルとかは発表されてないけど、多分「開発者向けサービスの作り方」とかそういう感じになると思う

まだスライド1枚も作ってないけどまだまだ時間あるし大丈夫だよね
このイベントで、初めてはてな東京オフィス行くので楽しみ(正確には2回目だけど、まだその時は東京オフィスはちゃんとできてなかった)

もし参加する人居たらよろしくお願いします

おわりに

超久しぶりにブログ書いた気がする

モバイルCIダベリNightで発表してきた #CIダベリNight

モバイルCIダベリNight - connpass に参加して発表してきました

ちなみにこんなAdvent Calendarもあるので是非ご参加下さい ;) qiita.com

資料

内容

発表内容的にはDeployGateのAndroidのCI環境を元に、CI環境構築がどれほど辛いか、みたいなことを適当にしゃべりました
適当すぎて、時間があまり過ぎたので、Slackに居るdgatanというbotの話(とても可愛いbotですよ♡)や、今開発中のCLIツールの話などをした

普通に発表内容よりも後の話の方が反応が良かった気がするのだけど、会の趣旨的にはモバイルCIなので脱線してしまった感あった

全体的な感想

当初は手書きで全部スライドを書こうと考えていたが、あまりの字の汚さに絶望したのでやめた
発表のときにここの部分微妙に滑ってて最悪っぽかったので反省点ですね

他の人の発表が割りとガチめですごい参考になりました
とにかくみんな辛さ溜まってるのが分かったので良かった

iPad Pro所感

iPad Proを触ってみた所感です
ちなみに、Apple Pencilなど周辺機器は買えませんでした

結論

思ってたより便利
とくに便利なのが、Split Viewで、これiPad Proの画面のデカさを最大限に活用できますね
こんな感じで、論文読みながらブラウザで検索とかできて、便利っぽい

でもまぁデカイ

とにかくデカイですね
デカイんですが、本体を持ってみるとそこまで重くない
割と持ち運べるのでは、とか考えてる
どうなんだろう…とにかくMBP13とiPad Proをリュックに背負ってる人やばそう

iPad ProでのSplit Viewの利点

1passwordなどを使ってブラウザでログインする時とかに、別途アプリを起動しなおして〜とかしなくていいので超便利
これ、割と他のアプリとかでもこういう「あ、便利だ」みたいなのちょいちょい出てきそうですごい

iPad ProでのSplit Viewの不満点

動画系のアプリ(torne mobileとかnetflix)で動画を見てる時にTwitterとかブラウザで他のことをしたりしたかったんだけど、できなかった
具体的には、Split Viewを動画再生中に使うと動画の再生が止まってしまうので、使えない
これはアプリ側が対応すれば大丈夫だと思うので、期待
実況はしないだろうけど、動画見ながら他のことしたいときあるしね

おわりに

まだApple Pencilを触ってないのでまだまだiPad Proの真価を発揮できてないので、早急にApple Pencilを手にいれる必要がある
それまではintuos creative stylus 2でお絵描きしてみようと思うったけど、このスタイラスペンiPad Proで設定してみたら、全然使えなくて面白かった
まぁ対応とか書いてないし、順当

広告を非表示にする