Supports live reloading for Go
- Better features than github.com/pilu/fresh
- Supports cross compile and live reloading on host OS for
docker
users ( Very Fast forDocker for Mac
user ) - Supports cross compile by cgo ( C/C++ ) ( currently, works on macOS ( and target architecture is
amd64
) only ) - Supports helper commands for
go run
go test
go build
rebirth
needs configuration file ( rebirth.yml
) to running .
rebirth init
create it .
rebirth.yml
example is the following.
task:
migrate:
desc: migrate schema
commands:
- mysql ....
host:
docker: container_name
build:
init:
- echo 'init hook' # called once at starting
before:
- echo 'before hook' # called before build
after:
- echo 'after hook' # called after build
env:
CGO_LDFLAGS: /usr/local/lib/libz.a
run:
env:
RUNTIME_ENV: "fuga"
watch:
root: . # root directory for watching ( default: . )
ignore:
- vendor
task
: define custom commandhost
: specify host information for running to an application ( currently, supportsdocker
only )build
: specify ENV variables for buildingrun
: specify ENV variables for runningwatch
: specifyroot
directory orignore
directories for watching go file
$ GO111MODULE=on go get -u github.com/goccy/rebirth/cmd/rebirth
$ rebirth init
rebirth
Example tree
.
├── docker-compose.yml
├── main.go
└── rebirth.yml
main.go
is your web application's source.
$ GO111MODULE=on go get -u github.com/goccy/rebirth/cmd/rebirth
$ brew install FiloSottile/musl-cross/musl-cross
version: '2'
services:
app:
image: golang:1.13.5
container_name: rebirth_app
volumes:
- '.:/go/src/app'
working_dir: /go/src/app
environment:
GO111MODULE: "on"
command: |
tail -f /dev/null
host:
docker: rebirth_app # container_name in docker-compose.yml
$ rebirth
# start live reloading !!
# build for docker container's architecture on macOS (e.g. GOOS=linux GOARCH=amd64
# execute built binary on target container
Usage:
rebirth [OPTIONS] <command>
Help Options:
-h, --help Show this help message
Available commands:
build execute 'go build' command
init create rebirth.yml for configuration
run execute 'go run' command
test execute 'go test' command
Help cross compile your go script
$ rebirth build -o app script/hoge.go
Help cross compile for go test
$ rebirth test -v ./ -run Hoge
Help cross compile for go run
$ rebirth run script/hoge.go
~/work/app
directory is mounted on the container as /go/src/app
- install
rebirth
CLI (GO111MODULE=on go get -u github.com/goccy/rebirth/cmd/rebirth
) - run
rebirth
and it cross compile myself for Linux ( GOOS=linux, GOARCH=amd64 ) and put it to.rebirth
directory as__rebirth
- copy
.rebirth/__rebirth
to the container (.rebirth
directory is mounted on the container ) - watch
main.go
( by fsnotify )
- cross compile
main.go
for Linux and put to.rebirth
directory asprogram
- copy
.rebirth/program
to the container
- run
__rebirth
on the container __rebirth
executesprogram
- edit
main.go
rebirth
detects file changed event
- cross compile
main.go
for Linux and put to.rebirth
directory asprogram
- copy
.rebirth/program
to the container rebirth
send signal to__rebirth
for reloading (SIGHUP
)__rebirth
kill the current application and executeprogram
as a new application
MIT