refac: rethought the complete workflow and deployement flow ; docs etc.
This commit is contained in:
1 parent
4a6209a8db
commit
09bd5afa4a
26 files changed
+800
-334
No files matched your search
+139
@@ -0,0 +1,139 @@
|
||||
version: '3'
|
||||
|
||||
vars:
|
||||
BINARY: renewcms
|
||||
DIST_DIR: internal/infrastructure/assets/dist
|
||||
VERSION:
|
||||
sh: git describe --tags --always --dirty
|
||||
LDFLAGS: -s -w -X main.version={{.VERSION}}
|
||||
RELEASE_TARGETS: [windows/amd64, windows/arm64, linux/amd64, linux/arm64, darwin/amd64, darwin/arm64]
|
||||
|
||||
env:
|
||||
CGO_ENABLED: '0'
|
||||
|
||||
tasks:
|
||||
default:
|
||||
cmds:
|
||||
- task --list
|
||||
silent: true
|
||||
|
||||
setup:
|
||||
desc: Install dev tools, Go modules and frontend dependencies
|
||||
cmds:
|
||||
- go install github.com/air-verse/air@latest
|
||||
- go install github.com/go-gremlins/gremlins/cmd/gremlins@latest
|
||||
- go mod download
|
||||
- task: web:install
|
||||
|
||||
dev:
|
||||
desc: Run the API (air, hot reload) and the SPA (Vite, HMR) together → http://localhost:5173
|
||||
deps: [dev:api, dev:web]
|
||||
|
||||
dev:api:
|
||||
desc: Run the API with hot reload on :8080 (SPA not embedded)
|
||||
cmds:
|
||||
- air
|
||||
|
||||
dev:web:
|
||||
desc: Run the Vite dev server on :5173, proxying /v1 to the API
|
||||
dir: web
|
||||
deps: [web:install]
|
||||
cmds:
|
||||
- bun dev
|
||||
|
||||
test:
|
||||
desc: Run the Go tests
|
||||
cmds:
|
||||
- go test -tags nofrontend ./test/... -count=1 {{.CLI_ARGS}}
|
||||
|
||||
cover:
|
||||
desc: Go test coverage of the use cases → tmp/coverage.out
|
||||
cmds:
|
||||
- mkdir -p tmp
|
||||
- go test -tags nofrontend ./test/... -count=1 -coverpkg=./internal/infrastructure/useCases/... -coverprofile=tmp/coverage.out
|
||||
- go tool cover -func=tmp/coverage.out
|
||||
|
||||
mutate:
|
||||
desc: Gremlins mutation testing of the use cases → tmp/gremlins.json
|
||||
cmds:
|
||||
- mkdir -p tmp
|
||||
- gremlins unleash --integration --tags nofrontend --output tmp/gremlins.json ./internal/infrastructure/useCases
|
||||
|
||||
lint:
|
||||
desc: gofmt check, go vet, eslint (--fix) and vue-tsc
|
||||
cmds:
|
||||
- task: lint:go
|
||||
- task: lint:web
|
||||
|
||||
lint:go:
|
||||
cmds:
|
||||
- cmd: test -z "$(gofmt -l .)" || (gofmt -l . && echo "unformatted Go files, run 'task fmt'" && exit 1)
|
||||
silent: true
|
||||
- go vet -tags nofrontend ./...
|
||||
|
||||
lint:web:
|
||||
dir: web
|
||||
deps: [web:install]
|
||||
cmds:
|
||||
- bun lint
|
||||
- bun run type-check
|
||||
|
||||
fmt:
|
||||
desc: Format Go and frontend sources
|
||||
cmds:
|
||||
- gofmt -w .
|
||||
- bun run --cwd web format
|
||||
|
||||
web:install:
|
||||
internal: true
|
||||
dir: web
|
||||
sources: [package.json, bun.lock]
|
||||
generates: ['node_modules/.bin/vite*']
|
||||
cmds:
|
||||
- bun install --frozen-lockfile
|
||||
|
||||
build:web:
|
||||
desc: Type-check and build the SPA into {{.DIST_DIR}}
|
||||
dir: web
|
||||
deps: [web:install]
|
||||
sources: [src/**/*, public/**/*, index.html, vite.config.ts, tsconfig*.json, package.json, bun.lock]
|
||||
generates: ['../{{.DIST_DIR}}/index.html']
|
||||
cmds:
|
||||
- bun run build
|
||||
|
||||
build:
|
||||
desc: Production binary for this machine → bin/{{.BINARY}}
|
||||
deps: [build:web]
|
||||
cmds:
|
||||
- go build -trimpath -ldflags "{{.LDFLAGS}}" -o bin/{{.BINARY}}{{exeExt}} ./cmd/server
|
||||
|
||||
release:
|
||||
desc: Cross-compile production binaries for all release targets → bin/
|
||||
deps: [build:web]
|
||||
cmds:
|
||||
- for: { var: RELEASE_TARGETS }
|
||||
task: build:target
|
||||
vars:
|
||||
GOOS: '{{index (splitList "/" .ITEM) 0}}'
|
||||
GOARCH: '{{index (splitList "/" .ITEM) 1}}'
|
||||
|
||||
build:target:
|
||||
internal: true
|
||||
vars:
|
||||
EXT: '{{if eq .GOOS "windows"}}.exe{{end}}'
|
||||
env:
|
||||
GOOS: '{{.GOOS}}'
|
||||
GOARCH: '{{.GOARCH}}'
|
||||
cmds:
|
||||
- go build -trimpath -ldflags "{{.LDFLAGS}}" -o bin/{{.BINARY}}_{{.VERSION}}_{{.GOOS}}_{{.GOARCH}}{{.EXT}} ./cmd/server
|
||||
|
||||
run:
|
||||
desc: Build and run the production binary locally
|
||||
deps: [build]
|
||||
cmds:
|
||||
- ./bin/{{.BINARY}}{{exeExt}}
|
||||
|
||||
clean:
|
||||
desc: Remove build output, the built SPA and tmp/
|
||||
cmds:
|
||||
- rm -rf bin tmp {{.DIST_DIR}}
|
||||
Reference in new issue
Block a user