Goのアドレ弁とカレンダー書いてた
そのネタの一部としてhttptestでHTTPサーバをモックする方法を調べたり。詳細は明日の日記に。
myaws v0.0.7リリース
myaws v0.0.7をひっそりとリリースした
https://github.com/minamijoyo/myaws/releases/tag/v0.0.7
ほぼ機能増えてないけど、リファクタリングしてこねくり回してたら内部実装がだいぶ変わりまくりでdiffがヒドイことになってた。
https://github.com/minamijoyo/myaws/compare/v0.0.6...v0.0.7
基本的にパッケージ間の依存関係を単純にするために再構成したかんじ。
Terraform v0.8が出てた
https://www.hashicorp.com/blog/terraform-0-8.html
Terraform v0.8のConditional Valuesがどう見ても三項演算子だけど、これはもしかして待望のif文なのでわ?ってTwitterでつぶやいたらHashiCorpのHashimotoさん本人からif文も実装するつもりだよというコメントをいただく事案が発生。これは期待。
https://twitter.com/minamijoyo/status/808840863736438784
JAWS-UGコンテナ支部#7
JAWS-UGの勉強会に行ってきた。
https://jawsug-container.connpass.com/event/43553/
最近swarmだけじゃなくてECSもいじってるので、ECSのアップデートの話が気になってたけど、すぐに使えそうにないものばっかりだった。
個人的にはSpotFleetの話の方が楽しそうだったので何かのときに試してみたい。本題と関係ないけどTerraformユーザが少数派でAWSだとやっぱりCFn使ってる人がボリューム的には多いんだろうか。CFn巨大な設定ファイルを書いてる気分で可読性が低くてあんまり好きじゃないんだよね。
Makefileを作る
Goのプロジェクトはビルドツールにmakeを使ってることが多い。myawsはビルドとかパッケージ周りの作業は雑なシェルスクリプトで作業してたんだけど、やっぱりMakefileあった方がよいかなぁとか思って、Makefileを作った。随分前にC++とかやってたときは書いてたはずなんだけど、久々すぎて書き方がさっぱりわからなくてググりまくったり、人のリポジトリを参考にしたりして、まぁそれっぽいものはできた。あとは必要に応じて改造していけば出発点としてはよかろう。誰かの参考になるかと思い晒しておく。依存ライブラリの取得をどうしようかはいくつか選択肢があるので悩み中。
NAME := myaws VERSION := v0.0.6 REVISION := $(shell git rev-parse --short HEAD) LDFLAGS := "-X github.com/minamijoyo/myaws/cmd.Version=${VERSION} -X github.com/minamijoyo/myaws/cmd.Revision=${REVISION}" OSARCH := "darwin/amd64 linux/amd64" GITHUB_USER := minamijoyo ifndef GOBIN GOBIN := $(shell echo "$${GOPATH%%:*}/bin") endif LINT := $(GOBIN)/golint GOX := $(GOBIN)/gox ARCHIVER := $(GOBIN)/archiver GHR := $(GOBIN)/ghr $(LINT): ; @go get github.com/golang/lint/golint $(GOX): ; @go get github.com/mitchellh/gox $(ARCHIVER): ; @go get github.com/mholt/archiver/cmd/archiver $(GHR): ; @go get github.com/tcnksm/ghr .DEFAULT_GOAL := build .PHONY: build build: go build -ldflags $(LDFLAGS) -o bin/$(NAME) .PHONY: install install: go install -ldflags $(LDFLAGS) .PHONY: cross-build cross-build: $(GOX) rm -rf ./out && \ gox -ldflags $(LDFLAGS) -osarch $(OSARCH) -output "./out/${NAME}_${VERSION}_{{.OS}}_{{.Arch}}/{{.Dir}}" .PHONY: package package: cross-build $(ARCHIVER) rm -rf ./pkg && mkdir ./pkg && \ pushd out && \ find * -type d -exec archiver make ../pkg/{}.tar.gz {}/$(NAME) \; && \ popd .PHONY: release release: package $(GHR) ghr -u $(GITHUB_USER) $(VERSION) pkg/ .PHONY: lint lint: $(LINT) @golint ./... .PHONY: vet vet: @go vet ./... .PHONY: test test: @go test ./... .PHONY: check check: lint vet test build