[GO] “golang air” auto reload web server tool in golang (echo,gin,…)

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 옵션을 추가하였다


댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다