-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathTaskfile.yml
More file actions
332 lines (290 loc) · 7.24 KB
/
Taskfile.yml
File metadata and controls
332 lines (290 loc) · 7.24 KB
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
version: "3"
env:
CONTAINER: deploystack
TERRAFORM_VERSION: $TERRAFORM_VERSION
DS_BASE_VERSION: $DS_BASE_VERSION
DS_GITHUB_VERSION: $DS_GITHUB_VERSION
DS_TUI_VERSION: $DS_TUI_VERSION
DS_GCLOUD_VERSION: $DS_GCLOUD_VERSION
DS_CONFIG_VERSION: $DS_CONFIG_VERSION
DEPLOYSTACK_PATH: $DEPLOYSTACK_PATH
DEPLOYSTACK_SHELL_PATH: $DEPLOYSTACK_SHELL_PATH
DEPLOYSTACK_TEST_PROJECT: $DEPLOYSTACK_TEST_PROJECT
tasks:
docker:lint:
dir: docker
desc: Check on build details
cmds:
- ./linter.sh
docker:clean:
ignore_error: true
dir: docker
desc: Clean Docker related artifacts
cmds:
- docker stop {{.CONTAINER}}
- docker rm {{.CONTAINER}}
docker:build:
dir: docker
deps:
- docker:clean
- docker:lint
desc: Build Docker image
cmds:
- |
docker build --build-arg TERRAFORM_VERSION={{.TERRAFORM_VERSION}} \
--build-arg DS_BASE_VERSION={{.DS_BASE_VERSION}} \
--build-arg DS_GITHUB_VERSION={{.DS_GITHUB_VERSION}} \
--build-arg DS_TUI_VERSION={{.DS_TUI_VERSION}} \
--build-arg DS_GCLOUD_VERSION={{.DS_GCLOUD_VERSION}} \
--build-arg DS_CONFIG_VERSION={{.DS_CONFIG_VERSION}} \
-t {{.CONTAINER}} .
docker:run:
deps:
- docker:build
desc: Run the docker image
cmds:
- |
docker run --platform linux/amd64 --rm -it --name {{.CONTAINER}} -v ~/.config:/root/.config -d {{.CONTAINER}}
docker exec -it {{.CONTAINER}} bash
update:
desc: Update files that tests depend on
dir: tools/testdata_updater
cmds:
- gcloud config set project {{.DEPLOYSTACK_TEST_PROJECT}}
- ./update
creds.json:
desc: Gets the details for the creds file, assuming you have permission
cmds:
- |
gcloud secrets versions access latest --secret=creds \
--project={{.DEPLOYSTACK_TEST_PROJECT}} > creds.json
test:
desc: Run all tests
deps:
- deploystack:test
- tui:test
- gcloud:test
- github:test
- terraform:test
- config:test
- dstester:test
test:verbose:
desc: Run all tests
deps:
- deploystack:test:verbose
- tui:test:verbose
- gcloud:test:verbose
- github:test:verbose
- terraform:test:verbose
- config:test:verbose
- dstester:test:verbose
go:clean:
desc: Cleans the caches before running tests
run: once
cmds:
- go clean -testcache
deploystack:test:
desc: Tests the deploystack package
deps:
- go:clean
cmds:
- go test . -cover
deploystack:tidy:
desc: updates modules for deploystack
cmds:
- go get -u
- go mod tidy
tui:tidy:
desc: updates modules for tui
dir: tui
cmds:
- go get -u
- go mod tidy
gcloud:tidy:
desc: updates modules for gcloud
dir: gcloud
cmds:
- go get -u
- go mod tidy
config:tidy:
desc: updates modules for config
dir: config
cmds:
- go get -u
- go mod tidy
github:tidy:
desc: updates modules for github
dir: github
cmds:
- go get -u
- go mod tidy
terraform:tidy:
desc: updates modules for terraform
dir: terraform
cmds:
- go get -u
- go mod tidy
all:tidy:
desc: updates modules for all
dir: config
cmds:
- task: config:tidy
- task: gcloud:tidy
- task: github:tidy
- task: terraform:tidy
- task: deploystack:tidy
tui:test:
desc: Tests the tui package
deps:
- go:clean
dir: tui
cmds:
- go test . -cover
gcloud:test:
desc: Tests the gcloud package
deps:
- go:clean
dir: gcloud
cmds:
- go test . -cover
config:test:
desc: Tests the config package
deps:
- go:clean
dir: config
cmds:
- go test . -cover
terraform:test:
desc: Tests the terraform package
deps:
- go:clean
dir: terraform
cmds:
- go test . -cover
github:test:
desc: Tests the github package
deps:
- go:clean
dir: github
cmds:
- go test . -cover
dstester:test:
desc: Tests the dstester package
deps:
- go:clean
dir: dstester
cmds:
- go test . -cover
deploystack:test:verbose:
desc: Tests the deploystack package
deps:
- go:clean
cmds:
- go test . -v
tui:test:verbose:
desc: Tests the tui package
deps:
- go:clean
dir: tui
cmds:
- go test . -v
gcloud:test:verbose:
desc: Tests the gcloud package
deps:
- go:clean
dir: gcloud
cmds:
- go test . -v
config:test:verbose:
desc: Tests the config package
deps:
- go:clean
dir: config
cmds:
- go test . -v
terraform:test:verbose:
desc: Tests the terraform package
deps:
- go:clean
dir: terraform
cmds:
- go test . -v
github:test:verbose:
desc: Tests the github package
deps:
- go:clean
dir: github
cmds:
- go test . -v
dstester:test:verbose:
desc: Tests the dstester package
deps:
- go:clean
dir: dstester
cmds:
- go test . -v
dsexec:clean:
desc: Cleans the generated files of the dsexec binary
ignore_error: true
dir: docker
cmds:
- rm dsexec
- rm go.mod
- rm go.sum
- rm buildTime
- rm versionDS
- rm versionGcloud
- rm versionTUI
- rm versionConfig
- rm versionTerraform
- rm -r -- ./*/
dsexec:build:
desc: Builds a local version of dsexec
dir: docker
deps:
- dsexec:clean
- go:clean
cmds:
- go mod init dsexec
- go get github.com/GoogleCloudPlatform/deploystack
- go mod tidy
- go mod edit -replace github.com/GoogleCloudPlatform/deploystack={{.DEPLOYSTACK_PATH}}
- ./version.sh
- go build -o dsexec deploystack_exec.go
dsexec:install:
desc: Installs a local version of dsexec
dir: docker
deps:
- dsexec:build
cmds:
- sudo cp dsexec /usr/local/bin/
- sudo cp deploystack /usr/local/bin/
cloud:test:
desc: Runs the cloudbuild testing job without a git push
cmds:
- gcloud builds submit --config test.yaml
shell:experimental:
desc: pushes to experimental branch
cmds:
- cd {{.DEPLOYSTACK_SHELL_PATH}} && git checkout experimental
- task: shell:export
shell:master:
desc: pushes to master branch
cmds:
- cd {{.DEPLOYSTACK_SHELL_PATH}} && git checkout master
- touch Dockerfile
- task: shell:export
shell:main:
desc: pushes to main branch
cmds:
- cd {{.DEPLOYSTACK_SHELL_PATH}} && git checkout main
- task: shell:export
shell:export:
desc: Copies key files to the shell image locally.
cmds:
- cp docker/deploystack {{.DEPLOYSTACK_SHELL_PATH}}
- cp docker/deploystack_exec.go {{.DEPLOYSTACK_SHELL_PATH}}/ds
- cp docker/version.sh {{.DEPLOYSTACK_SHELL_PATH}}/ds
- cd {{.DEPLOYSTACK_SHELL_PATH}} && git add .
- cd {{.DEPLOYSTACK_SHELL_PATH}} && git commit -m "chore:update from deploystack core version"
- cd {{.DEPLOYSTACK_SHELL_PATH}} && git push