Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Supports live reloading for Go

License

NotificationsYou must be signed in to change notification settings

goccy/rebirth

Repository files navigation

Supports live reloading for Go

go_rebirth

Features

  • Better features than github.com/pilu/fresh
  • Supports cross compile and live reloading on host OS fordocker users (Very Fast forDocker for Mac user )
  • Supports cross compile by cgo ( C/C++ ) ( currently, works on macOS ( and target architecture isamd64 ) only )
  • Supports helper commands forgo rungo testgo build

Synopsis

Settings

rebirth needs configuration file (rebirth.yml ) to running .rebirth init create it .

rebirth.yml example is the following.

task:migrate:desc:migrate schemacommands:      -mysql ....host:docker:container_namebuild:main:path/to/main.go# change path to main package ( default: . )init:    -echo 'init hook'# called once at startingbefore:    -echo 'before hook'# called before buildafter:    -echo 'after hook'# called after buildenv:CGO_LDFLAGS:/usr/local/lib/libz.arun:env:RUNTIME_ENV:"fuga"watch:root: .# root directory for watching ( default: . )ignore:    -vendor
  • task : define custom command
  • host : specify host information for running to an application ( currently, supportsdocker only )
  • build : specify ENV variables for building
  • run : specify ENV variables for running
  • watch : specifyroot directory orignore directories for watching go file

In case of running on localhost

1. Installrebirth CLI

$ GO111MODULE=on go get -u github.com/goccy/rebirth/cmd/rebirth

2. Createrebirth.yml

$ rebirth init

3. Runrebirth

rebirth

In case of running with Docker for Mac

Example tree

.├── docker-compose.yml├── main.go└── rebirth.yml

main.go is your web application's source.

1. Installrebirth CLI

$ GO111MODULE=on go get -u github.com/goccy/rebirth/cmd/rebirth

2. Install cross compiler for cgo

$ brew install FiloSottile/musl-cross/musl-cross

3. Write settings

docker-compose.yml

version:'2'services:app:image:golang:1.13.5container_name:rebirth_appvolumes:      -'.:/go/src/app'working_dir:/go/src/appenvironment:GO111MODULE:"on"command:|      tail -f /dev/null

rebirth.yml

host:docker:rebirth_app# container_name in docker-compose.yml

4. Runrebirth

$ rebirth# start live reloading !!# build for docker container's architecture on macOS (e.g. GOOS=linux GOARCH=amd64# execute built binary on target container

Helper commands

Usage:  rebirth [OPTIONS]<command>Help Options:  -h, --help  Show thishelp messageAvailable commands:  build  execute'go build'command  init   create rebirth.ymlfor configuration  run    execute'go run'commandtest   execute'go test'command

rebirth build

Help cross compile your go script

$ rebirth build -o app script/hoge.go

rebirth test

Help cross compile forgo test

$ rebirthtest -v ./ -run Hoge

rebirth run

Help cross compile forgo run

$ rebirth run script/hoge.go

How it Works

~/work/app directory is mounted on the container as/go/src/app

  1. installrebirth CLI (GO111MODULE=on go get -u github.com/goccy/rebirth/cmd/rebirth )
  2. runrebirth and it cross compile myself for Linux ( GOOS=linux, GOARCH=amd64 ) and put it to.rebirth directory as__rebirth
  3. copy.rebirth/__rebirth to the container (.rebirth directory is mounted on the container )
  4. watchmain.go ( byfsnotify )

  1. cross compilemain.go for Linux and put to.rebirth directory asprogram
  2. copy.rebirth/program to the container

  1. run__rebirth on the container
  2. __rebirth executesprogram
  3. editmain.go
  4. rebirth detects file changed event

  1. cross compilemain.go for Linux and put to.rebirth directory asprogram
  2. copy.rebirth/program to the container
  3. rebirth send signal to__rebirth for reloading (SIGHUP )
  4. __rebirth kill the current application and executeprogram as a new application

License

MIT


[8]ページ先頭

©2009-2025 Movatter.jp