test / debug 도중 페이지나 서버를 올려둔 상태에서 계속적인 수정이 일어날 때 마다 재빌드 및 실행을 도와준다
https://github.com/cosmtrek/air
PS E:XXX> go get -u github.com/cosmtrek/air
설치 후 실제 실행은 아래와 같다
PS E:XXX> air __ _ ___ / /\ | | | |_) /_/--\ |_| |_| \_ , built with Go [19:45:58] watching . [19:45:58] watching api [19:45:58] watching config [19:45:58] !exclude docs [19:45:58] watching model [19:45:58] watching model\producer [19:45:58] watching server [19:45:58] !exclude tmp [19:45:58] building... 2021/10/28 19:46:00 Generate general API Info, search dir:./ 2021/10/28 19:46:05 Generating model.STNotifyMail 2021/10/28 19:46:05 Generating model.sTNotifyCommon 2021/10/28 19:46:05 Generating model.mailContent 2021/10/28 19:46:00 Generate swagger docs.... 2021/10/28 19:46:05 create docs.go at docs\docs.go 2021/10/28 19:46:05 create swagger.json at docs\swagger.json 2021/10/28 19:46:05 create swagger.yaml at docs\swagger.yaml [19:46:08] running... [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] GET /swagger/*any --> github.com/swaggo/gin-swagger.CustomWrapHandler.func1 (5 handlers) [GIN-debug] GET /health --> xxx.com/notifyhandler/api.HealthController.Status-fm (5 handlers) [GIN-debug] GET /v1/param/:test/*action --> xxx.com/notifyhandler/api.Param (5 handlers) [GIN-debug] POST /v1/jsonMailTest --> xxx.com/notifyhandler/api.JsonMailTest (5 handlers) [GIN-debug] Listening and serving HTTP on :8080
위 와 같이 go build 및 구동이 알아서 된다
[19:48:12] model\model.go has changed [19:48:12] building...
프로젝트 내의 파일이 수정되게 되면 그것을 감지하여 빌드를 다시 시작- 그리고 위와 같은 순서로 다시 서버를 구동한다
root = "." tmp_dir = "tmp" [build] bin = "tmp\\main.exe" cmd = "swag init && go build -o ./tmp/main.exe ." delay = 1000 exclude_dir = ["assets", "tmp", "vendor", "docs"] exclude_file = [] exclude_regex = [] exclude_unchanged = false follow_symlink = false full_bin = "" include_dir = [] include_ext = ["go", "tpl", "tmpl", "html"] kill_delay = "0s" log = "build-errors.log" send_interrupt = false stop_on_error = true [color] app = "" build = "yellow" main = "magenta" runner = "green" watcher = "cyan" [log] time = true [misc] clean_on_exit = false
추가로 위 명령은 swagger docs 를 추가로 자동 구성하기 위해서 위와 같은 설정이 추가되었다
cmd = "swag init && go build -o ./tmp/main.exe ."
위 텍스트가 기존과 다른부분은 swag init 을 포함하고 그부분이 성공했을 때 에만 빌드를 시작 하도록 한다
또한 swag init 때 마다 docs 폴더의 갱신도 이루어지기 때문에 (이 직후 어차피 빌드할 것 이므로)
해당폴더에 대한 exclude_dir 옵션을 추가하였다
댓글 남기기