Rewrite check_mailgun.sh to golang
以前mailgunのステータスをmackerelで監視するシェルスクリプトを書きました。
これをようやくGoで書き直して、一応使える状態にはなったのでうp。
デモ。
$ ./build/darwin_amd64_check-mailgun -p key-xxxx -d ghost.ponpokopon.me
State OK: ghost.ponpokopon.me is active
あんまりよくわかってないまま書いたので後で復習が必要。特に以下。
http.Client{}
をなぜポインタのアドレスで指定しているのか- 型周り
- httpパッケージで戻り値が
(resp *Response)
になってて*Response
ってどういう型なのかわからんみたいな - Goプログラミング言語仕様 - golang.jp
- httpパッケージで戻り値が
- jsonパッケージが何やってるのかよくわからん
type domain struct
とtype data struct
の順番逆にするとエラーになるけどなんでjson.Unmarshal()
とjson.newdecoder()
の違いとか
GitHubへのリリース方法
githubへのリリースはgoxとghrを使って行いました。
- GitHub - tcnksm/ghr: Upload multiple artifacts to GitHub Release in parallel
- GitHub - mitchellh/gox: A dead simple, no frills Go cross compile tool
まずgoxでクロスコンパイル。
$ gox -output "build/{{.OS}}_{{.Arch}}_{{.Dir}}"
$ tree build
build
├── darwin_386_check-mailgun
├── darwin_amd64_check-mailgun
├── freebsd_386_check-mailgun
├── freebsd_amd64_check-mailgun
├── freebsd_arm_check-mailgun
├── linux_386_check-mailgun
├── linux_amd64_check-mailgun
├── linux_arm_check-mailgun
├── netbsd_386_check-mailgun
├── netbsd_amd64_check-mailgun
├── netbsd_arm_check-mailgun
├── openbsd_386_check-mailgun
├── openbsd_amd64_check-mailgun
├── windows_386_check-mailgun.exe
└── windows_amd64_check-mailgun.exe
次にghrでGitHubにリリース。
$ ghr v0.1.0 build/
==> Create a new release
--> Uploading: darwin_amd64_check-mailgun
--> Uploading: windows_amd64_check-mailgun.exe
--> Uploading: linux_arm_check-mailgun
--> Uploading: darwin_386_check-mailgun
--> Uploading: netbsd_arm_check-mailgun
--> Uploading: freebsd_arm_check-mailgun
--> Uploading: windows_386_check-mailgun.exe
--> Uploading: openbsd_amd64_check-mailgun
--> Uploading: freebsd_386_check-mailgun
--> Uploading: openbsd_386_check-mailgun
--> Uploading: netbsd_386_check-mailgun
--> Uploading: netbsd_amd64_check-mailgun
--> Uploading: linux_386_check-mailgun
--> Uploading: linux_amd64_check-mailgun
--> Uploading: freebsd_amd64_check-mailgun
やったね!
今後
- 自鯖の
check_mailgun.sh
を置き換える - 復習する
- テスト書いてみる