zatsu_monitorを作った時の副産物です
sue445.hatenablog.com
やりたかったこと
- golangのクロスコンパイルを楽にやりたかった
- ビルドしたバイナリはzipで圧縮しつつ、zipのファイル名にosやarchもつけたかった
- 例)
zatsu_monitor_unix_amd64.zip
- バージョン名もつくとベスト
- zipをそのままリポジトリの releases にアップロードしたかった
- ただしバイナリには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でデフォルトで入ってる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_DIR
: バイナリの出力先
BIN_NAME
: バイナリ名
実行
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なので煮るなり焼くなりしてください( ◜◡◝ )