mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-23 10:51:09 +00:00
The tree is at zero unformatted files for the first time. Nothing holds it there: gofmt drift is invisible in review because the common form of it is a missing newline at the end of a file, which no diff reader notices and no existing check looks at. That is how the batch cleaned up just now reached 26 files. `make fmt-check` reports rather than rewrites. CI cannot commit, and a target that silently reformats hides what it touched; `gofmt -l` names the files and says nothing when there are none, so its output is both the failure message and the fix. The step runs before the tests rather than beside checksilent at the end. A formatting miss is a one-command fix, and learning about it after five minutes of tests and an end-to-end install wastes five minutes for nothing.
111 lines
4.1 KiB
Makefile
111 lines
4.1 KiB
Makefile
PROJECT:=go-admin
|
|
|
|
.PHONY: build
|
|
build:
|
|
CGO_ENABLED=0 go build -ldflags="-w -s" -a -installsuffix "" -o go-admin .
|
|
|
|
# make build-linux
|
|
build-linux:
|
|
@docker build -t go-admin:latest .
|
|
@echo "build successful"
|
|
|
|
build-sqlite:
|
|
go build -tags sqlite3 -ldflags="-w -s" -a -installsuffix -o go-admin .
|
|
|
|
# make run
|
|
run:
|
|
# delete go-admin-api container
|
|
#
|
|
# stop then rm, rather than `rm -f`. The force flag kills a running
|
|
# container with SIGKILL and no grace at all, so restarting locally cut
|
|
# short every shutdown this application does - the drain window was never
|
|
# once reached on a developer's machine. --timeout has to cover
|
|
# extend.shutdown's drain + server + cleanup; checksilent's
|
|
# docker-stop-cuts-shutdown-short check compares it against
|
|
# config/settings.yml. On a container that has already stopped, stop is a
|
|
# no-op and the removal is unchanged.
|
|
@if [ $(shell docker ps -aq --filter name=go-admin --filter publish=8000) ]; then docker stop --timeout 30 go-admin && docker rm go-admin; fi
|
|
|
|
# 启动方法一 run go-admin-api container docker-compose 启动方式
|
|
# 进入到项目根目录 执行 make run 命令
|
|
@docker-compose up -d
|
|
|
|
# 启动方式二 docker run 这里注意-v挂载的宿主机的地址改为部署时的实际绝对路径
|
|
#@docker run --name=go-admin -p 8000:8000 -v /home/code/go/src/go-admin/go-admin/config:/go-admin-api/config -v /home/code/go/src/go-admin/go-admin-api/static:/go-admin/static -v /home/code/go/src/go-admin/go-admin/temp:/go-admin-api/temp -d --restart=always go-admin:latest
|
|
|
|
@echo "go-admin service is running..."
|
|
|
|
# delete Tag=<none> 的镜像
|
|
@docker image prune -f
|
|
@docker ps -a | grep "go-admin"
|
|
|
|
stop:
|
|
# delete go-admin-api container
|
|
@if [ $(shell docker ps -aq --filter name=go-admin --filter publish=8000) ]; then docker-compose down; fi
|
|
#@if [ $(shell docker ps -aq --filter name=go-admin --filter publish=8000) ]; then docker rm -f go-admin; fi
|
|
#@echo "go-admin stop success"
|
|
|
|
|
|
# -race is worth the extra minute here: common/actions reuses model instances
|
|
# across concurrent requests, so a Generate() that returns in place instead of
|
|
# a copy leaks data between them - and that is invisible to a single-threaded
|
|
# test run.
|
|
.PHONY: test
|
|
test:
|
|
go test -race -cover ./...
|
|
|
|
# The end-to-end install, which `test` above cannot reach: test/e2e-apporder
|
|
# is its own module, so `./...` in this one does not include it. It builds a
|
|
# go-admin binary with the example application linked in and drives
|
|
# `migrate install` / `migrate uninstall` against a real database.
|
|
#
|
|
# Its own target rather than a line in the CI workflow, so the one thing in
|
|
# the build that exercises installing an application is also the one thing
|
|
# somebody can run before pushing.
|
|
.PHONY: test-e2e
|
|
test-e2e:
|
|
cd test/e2e-apporder && go test ./... -count=1
|
|
|
|
# Reports the failures that do not announce themselves - see
|
|
# tools/checksilent. Exits non-zero on an ERROR; the one WARN-level check
|
|
# prints and does not fail the build.
|
|
#
|
|
# Pass UI_DIR to enable the cross-repository menu-name check, which is skipped
|
|
# without it: make checksilent UI_DIR=../go-admin-ui/src
|
|
.PHONY: checksilent
|
|
checksilent:
|
|
ifdef UI_DIR
|
|
go run ./tools/checksilent -ui-dir $(UI_DIR)
|
|
else
|
|
go run ./tools/checksilent
|
|
endif
|
|
|
|
# gofmt as a gate, not a rewrite. CI cannot commit, and a target that quietly
|
|
# reformats hides what it touched, so this reports and fails instead. `gofmt -l`
|
|
# prints the files it would rewrite and nothing at all when there are none, so
|
|
# that list is both the failure message and the instructions for fixing it.
|
|
#
|
|
# The tree reached zero unformatted files once; without something holding it
|
|
# there it drifts back, which is how the previous batch grew to 26 files -
|
|
# mostly a missing newline at the end of the file, which no reviewer notices.
|
|
.PHONY: fmt-check
|
|
fmt-check:
|
|
@unformatted=$$(gofmt -l .); \
|
|
if [ -n "$$unformatted" ]; then \
|
|
echo "gofmt would rewrite these files. Run 'gofmt -w .' and commit the result:"; \
|
|
echo "$$unformatted"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
#.PHONY: docker
|
|
#docker:
|
|
# docker build . -t go-admin:latest
|
|
|
|
# make deploy
|
|
deploy:
|
|
|
|
#@git checkout master
|
|
#@git pull origin master
|
|
make build-linux
|
|
make run
|