Slide 1

Slide 1 text

Ship cli tools for cross- platform w/Github + wecker 2014/09/26@HDE MTS TANABE Ken-ichi

Slide 2

Slide 2 text

動機 ● OS X, Linux, Windows向けにcliツールを配布 したい ● 開発者以外にも使ってほしい ○ APIを叩いて何か処理をしたり ○ 簡単なサーバを起動してデータをやりとりしたり ● いつものようにCIしつつビルド、リリースまで自動 化したい

Slide 3

Slide 3 text

道具 ● Go ○ クロスプラットフォーム (OS X, Linux, Windows, BSD) ○ 単一バイナリ ○ 豊富な標準ライブラリ (syscallからnet/httpまで) ● Github ○ ソースコードリポジトリ ● Wercker ○ ビルド環境を自由に作成できるCI as a Service ○ goxcを使い、クロスコンパイル ○ 成果物をGithub Releasesへデプロイ

Slide 4

Slide 4 text

goxc ● goxcを使うと以下を自動的に実行 ○ 各プラットフォーム向けツールチェインのビルド (必要なら) ○ クロスコンパイル ○ プラットフォーム毎にアーカイブ ● goxcももちろんGoで書かれていてダウンロードする だけで動作する goxc -tasks='xc archive' -bc 'linux,amd64,386 darwin,amd64,386'

Slide 5

Slide 5 text

wercker (workerと読む) ● Dockerのコンテナのように ビルド環境をboxとして自 由に構築、共有できる ● 成果物のデプロイプロセス も定義できる ● サービスはまだベータの 位置付け

Slide 6

Slide 6 text

wercker (build) ● YAMLでビルドプ ロセスを定義 ● go {get, build, test, fmt} ● 最後にgoxcでビ ルド

Slide 7

Slide 7 text

wercker (one-click deployment) herokuなどのPaaS にもデプロイ可能

Slide 8

Slide 8 text

wercker (deploy) ● UIから手動デプロイ ● 特定ブランチへの pushに応じて自動 デプロイ

Slide 9

Slide 9 text

参考文献 ● “pecoのバイナリ配布の話” http://lestrrat.ldblog.jp/archives/39736492.html ● “Wercker で Go のプロジェクトをクロスコンパイルし、 Github にリリースする” http://motemen.hatenablog. com/entry/2014/06/27/xcompile-go-and-release-to- github-with-wercker ● nabeken/docker-cleaner (上をまねて作った) https://github.com/nabeken/docker-cleaner