-
Notifications
You must be signed in to change notification settings - Fork 425
Expand file tree
/
Copy pathTaskfile.yml
More file actions
146 lines (125 loc) · 4.19 KB
/
Copy pathTaskfile.yml
File metadata and controls
146 lines (125 loc) · 4.19 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
# https://taskfile.dev
version: "3"
vars:
GIT_TAG:
sh: echo "${GIT_TAG:-$(git describe --tags --exact-match 2>/dev/null || echo dev)}"
GIT_COMMIT:
sh: echo "${GIT_COMMIT:-$(git rev-parse HEAD 2>/dev/null || echo dev)}"
env:
GIT_TAG: "{{.GIT_TAG}}"
GIT_COMMIT: "{{.GIT_COMMIT}}"
tasks:
default:
desc: Run lint, test, and build
aliases: [dev]
deps: [lint, test, build]
build:
desc: Build the application binary
aliases: [b]
sources:
- "**/*.go"
- "**/*.template"
- "**/*.txt"
- "**/*.yml"
- "**/*.yaml"
- go.mod
- go.sum
generates:
- bin/docker-agent
cmds:
- ./scripts/build.sh
clean:
desc: Remove the generated binary
cmds:
- rm -rf ./bin
update-models:
desc: Refresh the embedded models.dev catalog snapshot
cmds:
- go generate ./pkg/modelsdev/...
check-models-fresh:
desc: Fail if the embedded models.dev snapshot is stale (run update-models to refresh)
cmds:
- CHECK_MODELS_SNAPSHOT_FRESHNESS=1 go test -run TestSnapshotDateIsFresh ./pkg/modelsdev/
check-plan-cross:
desc: Cross-compile the plan storage and host plans packages for every file-lock build-tag variant (plus the plan-consuming CLI and TUI packages on windows)
cmds:
- GOOS=linux GOARCH=amd64 go build ./pkg/tools/builtin/plan/ ./pkg/plans/
- GOOS=windows GOARCH=amd64 go build ./pkg/tools/builtin/plan/ ./pkg/plans/ ./cmd/root/ ./pkg/tui/
- GOOS=js GOARCH=wasm go build ./pkg/tools/builtin/plan/ ./pkg/plans/
- GOOS=wasip1 GOARCH=wasm go build ./pkg/tools/builtin/plan/ ./pkg/plans/
- GOOS=plan9 GOARCH=amd64 go build ./pkg/tools/builtin/plan/ ./pkg/plans/
deploy-local:
desc: Deploy the cli-plugin
aliases: [install]
deps: [build]
cmds:
- mkdir -p "${HOME}/.docker/cli-plugins"
- /bin/ln -sf "$(pwd)/bin/docker-agent" "${HOME}/.docker/cli-plugins/docker-agent"
lint:
desc: Run the linters
sources:
- "**/*.go"
- .golangci.yml
- go.mod
- go.sum
cmds:
- GOLANGCI_LINT_CACHE={{.TASKFILE_DIR}}/.cache/lint golangci-lint run
- go run ./lint .
- go mod tidy --diff >/dev/null || (echo 'go.mod/go.sum files are not tidy' && exit 1)
format:
desc: Format code
sources:
- "**/*.go"
- .golangci.yml
cmds:
- golangci-lint fmt
test:
desc: Run tests
dotenv: [.env.test]
cmds:
- go test ./...
test-binary:
desc: Run tests on build binary
deps: [deploy-local]
dotenv: [.env.test]
cmds:
- go test -tags=binary_required ./e2e/binary/...
build-local:
desc: Build binaries for local host platform
cmds:
- docker build --target=local --build-arg GIT_TAG --build-arg GIT_COMMIT --platform local --output=./dist .
- |
if [[ "$OSTYPE" == "msys" || "$OSTYPE" == "cygwin" ]]; then
mv ./dist/docker-agent ./dist/docker-agent.exe
fi
cross:
desc: Build binaries for multiple platforms
cmds:
- docker buildx build --target=cross --build-arg GIT_TAG --build-arg GIT_COMMIT --platform linux/amd64,linux/arm64,darwin/amd64,darwin/arm64,windows/amd64,windows/arm64 --output=./dist .
build-image:
desc: Build Docker image
cmds:
- docker build -t docker/docker-agent --build-arg GIT_TAG --build-arg GIT_COMMIT .
push-image:
desc: Build and Push Docker image
cmds:
- docker buildx build --push --platform linux/amd64,linux/arm64 -t docker/docker-agent --build-arg GIT_TAG --build-arg GIT_COMMIT .
template:
desc: Build the sandbox template image with the locally-built binary
cmds:
- docker buildx build --load --target=template --build-arg GIT_TAG --build-arg GIT_COMMIT -t docker/docker-agent-sbx-templates .
docs-serve:
desc: Preview the documentation site locally with Hugo
dir: docs
cmds:
- docker build -t docker-agent-docs .
- docker run --rm -v $(cd .. && pwd)/docs:/src -p 1313:1313 docker-agent-docs
docs-check-links:
desc: Build the documentation site and check for broken links
dir: docs
cmds:
- ../scripts/docs-check-links.sh
record-demo:
desc: Record demo gif
cmds:
- vhs ./docs/recordings/demo.tape