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{}をなぜポインタのアドレスで指定しているのか
  • 型周り
  • jsonパッケージが何やってるのかよくわからん
    • type domain structtype data structの順番逆にするとエラーになるけどなんで
    • json.Unmarshal()json.newdecoder()の違いとか

GitHubへのリリース方法

githubへのリリースはgoxとghrを使って行いました。

まず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を置き換える
  • 復習する
  • テスト書いてみる