-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskfile.yml
More file actions
91 lines (74 loc) · 2.54 KB
/
Taskfile.yml
File metadata and controls
91 lines (74 loc) · 2.54 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
# https://taskfile.dev
version: '3'
env:
ANDROID_SDK_ROOT: /opt/android-sdk
ANDROID_AVD_HOME: "{{.HOME}}/.android/avd"
AVDCTL_GOLDEN_DIR: "{{.HOME}}/avd-golden"
AVDCTL_CLONES_DIR: "{{.HOME}}/avd-clones"
AVDCTL_CONFIG_TEMPLATE: "{{.TASKFILE_DIR}}/config.ini.tpl"
vars:
BASE_NAME: base-a35
SYS_IMAGE: "system-images;android-35;google_apis_playstore;x86_64"
DEVICE: "pixel_6"
GOLDEN: "{{.AVDCTL_GOLDEN_DIR}}/{{.BASE_NAME}}-prewarmed.qcow2"
COVERAGE_MIN: "90"
PORT1: "5580"
PORT2: "5582"
DHI_STATIC_TAG: "20250419"
DOCKER_BINARY_IMAGE: "avdctl:local"
DOCKER_PLATFORMS: "linux/amd64,linux/arm64"
DOCKER_BINARY_OCI: "/tmp/avdctl-local-multi.oci.tar"
tasks:
build:
cmds:
- go build -o bin/avdctl ./cmd/avdctl
test:
cmds:
- go test ./...
coverage:
env:
AVDCTL_CONFIG_TEMPLATE: ""
cmds:
- go list ./pkg/avdmanager/... | xargs go test -covermode=atomic -coverprofile=coverage.out
- go tool cover -func=coverage.out
- |
go tool cover -func=coverage.out | awk -v min="{{.COVERAGE_MIN}}" '/^total:/ { gsub("%","",$3); printf("Total coverage: %s%% (required: %s%%)\n", $3, min); if (($3 + 0) < (min + 0)) exit 1 }'
env: # quick show
cmds:
- echo ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT
- echo ANDROID_AVD_HOME=$ANDROID_AVD_HOME
- echo AVDCTL_GOLDEN_DIR=$AVDCTL_GOLDEN_DIR
- echo AVDCTL_CLONES_DIR=$AVDCTL_CLONES_DIR
- echo AVDCTL_CONFIG_TEMPLATE=$AVDCTL_CONFIG_TEMPLATE
a:
cmds:
- ./bin/avdctl {{.CLI_ARGS}}
mkdirs:
cmds:
- mkdir -p "$AVDCTL_GOLDEN_DIR" "$AVDCTL_CLONES_DIR" "$ANDROID_AVD_HOME"
init-base:
deps: [build, mkdirs]
cmds:
- ./bin/avdctl init-base --name "{{.BASE_NAME}}" --image "{{.SYS_IMAGE}}" --device "{{.DEVICE}}"
prewarm:
deps: [build, mkdirs]
cmds:
- ./bin/avdctl prewarm --name "{{.BASE_NAME}}" --dest "{{.GOLDEN}}"
# full from-scratch flow
fresh:
cmds:
- task clean-avds
- task init-base
- task prewarm
- task clone-acme
- task clone-gino
docker-build-local:
cmds:
- docker build -f Dockerfile.binary -t "{{.DOCKER_BINARY_IMAGE}}" --build-arg DHI_STATIC_TAG="{{.DHI_STATIC_TAG}}" .
docker-run:
deps: [docker-build-local]
cmds:
- docker run --rm "{{.DOCKER_BINARY_IMAGE}}" --help
docker-build:
cmds:
- docker buildx build -f Dockerfile.binary --platform "{{.DOCKER_PLATFORMS}}" --build-arg DHI_STATIC_TAG="{{.DHI_STATIC_TAG}}" -t "{{.DOCKER_BINARY_IMAGE}}" --output "type=oci,dest={{.DOCKER_BINARY_OCI}}" .