forked from flipt-io/flipt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTaskfile.yml
154 lines (135 loc) · 3.36 KB
/
Taskfile.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# https://taskfile.dev/
version: 3
vars:
PROJECT: flipt
SOURCE_FILES: ./...
UI: ui
tasks:
default:
desc: Build the binary
deps: [prep]
cmds:
- go build -trimpath -tags assets -ldflags "-X main.commit={{.GIT_COMMIT}} -X main.date={{.BUILD_DATE}}" -o {{.OUTPUT}}/{{.PROJECT}} ./cmd/{{.PROJECT}}/.
vars:
OUTPUT: '{{default "./bin" .OUTPUT}}'
GIT_COMMIT:
sh: set -e && git rev-parse --verify HEAD || ""
BUILD_DATE:
sh: date -u +%Y-%m-%dT%H:%M:%SZ
prep:
desc: Prepare for release
cmds:
- task: clean
- task: proto
- task: assets
pkg:
desc: Package the binary
cmds:
- task: default
vars: { OUTPUT: "./pkg" }
- mkdir -p ./pkg/config/migrations
- cp -R ./config/migrations/ ./pkg/config/migrations/
- cp ./config/*.yml ./pkg/config/
vars:
GIT_COMMIT:
sh: set -e && git rev-parse --verify HEAD || ""
assets:
desc: Build the UI
deps: [assets:deps]
dir: "{{.UI}}"
cmds:
- npm run build
sources:
- ./{{.UI}}/static/*
- ./{{.UI}}/src/**/*
- ./{{.UI}}/src/**/**/*
- ./{{.UI}}/index.html
- ./{{.UI}}/package.json
method: checksum
assets:deps:
desc: Install UI dependencies
dir: "{{.UI}}"
cmds:
- npm ci
sources:
- ./{{.UI}}/package-lock.json
method: checksum
assets:dev:
desc: Run the UI dev server
dir: "{{.UI}}"
cmds:
- npm run dev
bench:
desc: Run benchmarks
cmds:
- go test -bench={{.BENCH_PATTERN}} {{.SOURCE_FILES}} -run=XXX {{.TEST_FLAGS}}
vars:
BENCH_PATTERN: .
TEST_FLAGS: -v
bootstrap:
desc: Install necessary development tools
cmds:
- ./script/bootstrap
sources:
- ./_tools/go.mod
generates:
- ./_tools/go.sum
method: checksum
build:
desc: Run Go build
cmds:
- go build -trimpath -tags assets -ldflags "-X main.commit={{.GIT_COMMIT}}" -o ./bin/{{.PROJECT}} ./cmd/{{.PROJECT}}/.
vars:
GIT_COMMIT:
sh: set -e && git rev-parse --verify HEAD || ""
build:clients:
desc: Generate Ruby and Go proto clients
deps: [proto]
cmds:
- buf generate --template=buf.public.gen.yaml
proto:
desc: Generate protobuf files from .protos
deps: [bootstrap]
cmds:
- buf generate
dev:
desc: Run the server and UI in development mode
cmds:
- script/server
server:
desc: Start the server
cmds:
- go run ./cmd/flipt/. --config ./config/local.yml --force-migrate
clean:
desc: Remove built assets
cmds:
- go mod tidy
- go clean -i {{.SOURCE_FILES}}
- rm -rf dist/*
- rm -rf pkg/*
- rm -rf bin/*
cover:
desc: Run test coverage
deps: [test]
cmds:
- go tool cover -html={{.COVERAGE_FILE}}
vars:
COVERAGE_FILE: coverage.txt
fmt:
desc: Run goimports
cmds:
- goimports -w $(go list -f {{`{{.Dir}}`}} ./... | grep -v /rpc/)
lint:
desc: Run the linters
cmds:
- golangci-lint run 2>&1
- buf lint
test:
desc: Run all the tests
cmds:
- go test {{.TEST_OPTS}} -covermode=atomic -count=1 -coverprofile={{.COVERAGE_FILE}} {{.SOURCE_FILES}} -run={{.TEST_PATTERN}} -timeout=30s {{.TEST_FLAGS}}
vars:
COVERAGE_FILE: coverage.txt
TEST_PATTERN: .
TEST_FLAGS: -v
TEST_OPTS: -race