11---
22version : ' 3'
3+ vars :
4+ GOLANG_CODE_PATH : ' cmds'
35
46includes :
57 misc :
@@ -10,3 +12,143 @@ includes:
1012 FWCI_PROJECT_NAME : " test-dutctl"
1113 DUTCTL_CONFIG_FILE : " /etc/dutctl.yaml"
1214 SYSTEMD_FILE : " dutagent.service"
15+
16+ tasks :
17+ # ==========================
18+ # Compilation and building
19+ # ==========================
20+
21+ build :
22+ desc : Build all binaries
23+ cmds :
24+ - task : build:dutctl
25+ - task : build:dutagent
26+ - task : build:dutserver
27+
28+ build:dutctl :
29+ desc : Build dutctl CLI binary
30+ cmds :
31+ - go build -o bin/dutctl ./cmds/dutctl/
32+ env :
33+ CGO_ENABLED : 0
34+ sources :
35+ - ./cmds/dutctl/**/*.go
36+ generates :
37+ - ./bin/dutctl
38+
39+ build:dutagent :
40+ desc : Build dutagent binary
41+ cmds :
42+ - go build -o bin/dutagent ./cmds/dutagent/
43+ env :
44+ CGO_ENABLED : 0
45+ sources :
46+ - ./cmds/dutagent/**/*.go
47+ generates :
48+ - ./bin/dutagent
49+
50+ build:dutserver :
51+ desc : Build dutserver binary
52+ cmds :
53+ - go build -o bin/dutserver ./cmds/exp/dutserver/
54+ env :
55+ CGO_ENABLED : 0
56+ sources :
57+ - ./cmds/exp/dutserver/**/*.go
58+ generates :
59+ - ./bin/dutserver
60+
61+ goreleaser:build :
62+ desc : Use goreleaser to build the project
63+ cmds :
64+ - goreleaser build --auto-snapshot --clean
65+
66+ goreleaser:check :
67+ desc : Checks if goreleaser configuration is valid
68+ cmds :
69+ - goreleaser check
70+
71+ goreleaser:release-test :
72+ desc : Use goreleaser to test release the project
73+ cmds :
74+ - goreleaser release --draft --snapshot --clean
75+ env :
76+ GITHUB_TOKEN : ' dummy'
77+
78+ # ========================
79+ # Formatting and linting
80+ # ========================
81+
82+ format :
83+ desc : Run gofumt (fork of gofmt, stricter)
84+ cmds :
85+ - gofumpt -w '{{.GOLANG_CODE_PATH}}'
86+ - gofumpt -w 'pkg'
87+
88+ lint :
89+ desc : Run the linters
90+ cmds :
91+ - revive ./...
92+ - go vet ./...
93+ - staticcheck -fail "" ./...
94+ - golangci-lint run --issues-exit-code 0 ./...
95+
96+ # =========
97+ # Testing
98+ # =========
99+
100+ fwci:validate :
101+ desc : Validate FWCI files
102+ cmds :
103+ - fwci validate
104+
105+ fwci:sync :
106+ desc : Synchronize the repository with the CI
107+ cmds :
108+ - yes | fwci sync --force
109+ sources :
110+ - ./.firmwareci/**/*.yaml
111+ - ./.firmwareci/**/Taskfile.yml
112+ - ./Taskfile.yml
113+
114+ fwci:job :
115+ desc : Submit a job
116+ deps :
117+ - fwci:sync
118+ - misc:misc:dummy-binary-for-flashing
119+ vars :
120+ DUTCTL_PATH :
121+ sh : ls ./bin/dutctl_linux_amd64_*/dutctl
122+ FTI_PKG_PATH :
123+ sh : ls ./bin/fti_*_arm64.deb
124+ cmds :
125+ - fwci job --workflow="test-old-fti" "DUTCTL={{.DUTCTL_PATH}}" "REMOTE_PKG={{.FTI_PKG_PATH}}" "CONFIG=./example_configs/test_config.json" "DUMMY_SPI_FLASH_ROM=.firmwareci/dummy_binary.rom" "TASKFILE=.firmwareci/Taskfile.yml"
126+ sources :
127+ - ./.firmwareci/**/*.yaml
128+ - ./.firmwareci/**/Taskfile.yml
129+ - ./Taskfile.yml
130+ - ./bin/*.deb
131+ - ./bin/dutctl_linux_amd64_v1/dutctl
132+
133+ test :
134+ desc : Run tests
135+ env :
136+ LC_ALL : C
137+ vars :
138+ TEST_OPTIONS : ' {{default "" .TEST_OPTIONS}}'
139+ SOURCE_FILES : ' {{default "./..." .SOURCE_FILES}}'
140+ TEST_PATTERN : ' {{default "." .TEST_PATTERN}}'
141+ cmds :
142+ - go test $(go list ./... | grep -v /integration/) {{.TEST_OPTIONS}} -failfast -race -coverpkg=./... -covermode=atomic -coverprofile=coverage.txt {{.SOURCE_FILES}} -run {{.TEST_PATTERN}} -timeout=5m
143+
144+ test:integration :
145+ desc : Setup environment and run integration tests
146+ dir : integration
147+ cmds :
148+ # Setup integration environment
149+ - ./integration.sh
150+ # Spin up docker
151+ - docker-compose up -d remotelab-server
152+ - docker-compose up dutctl
153+ # Shutdown
154+ - docker-compose down
0 commit comments