zatsu_monitorを作った時の副産物です
やりたかったこと
- golangのクロスコンパイルを楽にやりたかった
- ビルドしたバイナリはzipで圧縮しつつ、zipのファイル名にosやarchもつけたかった
- ただしバイナリにはosやarchは つけたくなかった
- 例)
zatsu_monitor
- 好みの問題だと思うのですが、バイナリにosなどがつくとプロビジョニングツールで削るのが面倒なので
- プロビジョニングツールではunzipして出てきたファイルをポン置きするだけにしたかった
- 例)
gox が一番理想に近かったのですが、バイナリにosやarchがつくのが嫌だったので自分でビルドスクリプトを書きました
ビルドスクリプト
https://github.com/sue445/zatsu_monitor/blob/0.2.0/build.sh
できること
- 各OS, archごとに
<バイナリ名>_<バージョン>_<os>_<arch>.zip
の形式のzipファイルを作成 - zipを解凍したらosやarchはつかないバイナリが出てくる
- バージョンでtagを生成してpushする
使い方
Macの場合は gnu-sed をインストール
Macでデフォルトで入ってるBSD版のsedだと正規表現が使えなくて機能が貧弱なので gru-sedをインストールしてください
brew install gnu-sed
version.go にバージョン情報を記載
package main const VERSION = "0.1.0"
build.shを適宜変更
readonly DIST_DIR="dist" readonly BIN_NAME="zatsu_monitor"
実行
distディレクトリに出力するので予め作っておいてください。(あと .gitignore への登録も)
$ ./build.sh Write: dist/zatsu_monitor_0.1.0_darwin_amd64.zip Write: dist/zatsu_monitor_0.1.0_linux_amd64.zip Write: dist/zatsu_monitor_0.1.0_linux_arm.zip
zipの中身
$ unzip -l dist/zatsu_monitor_0.1.0_linux_amd64.zip Archive: dist/zatsu_monitor_0.1.0_linux_amd64.zip Length Date Time Name -------- ---- ---- ---- 11623512 07-06-16 23:23 zatsu_monitor -------- ------- 11623512 1 file
./build sh release
のように実行すると自動的にバージョンのtagを生成してリポジトリにpushまでします
50行くらいのスクリプトなので詳しくはソースを読んでください
ライセンスとか
zatsu_monitor同様MITなので煮るなり焼くなりしてください( ◜◡◝ )