DoDiODev opened a new pull request, #9180:
URL: https://github.com/apache/devlake/pull/9180
### Summary
`backend/Dockerfile` still installs mockery **v3.7.2**, while everything
else is on **v3.7.4**: `backend/Makefile` (`go-dep`),
`backend/Dockerfile.local` and `backend/scripts/install-mockery.sh`, which the
`unit-test` and `golangci-lint` workflows use. Which mockery generates the
mocks therefore depends on the build path. `make mock` also runs whatever
`mockery` is first on the `PATH`, e.g. the mockery v2 shipped in
`mericodev/lake-builder:latest`, which cannot read the v3 YAML configuration.
### Changes
- **`backend/Dockerfile`:** mockery `v3.7.2` → `v3.7.4`.
- **`backend/Makefile`:**
```make
MOCKERY_VERSION ?= v3.7.4
MOCKERY ?= GOOS= GOARCH= CGO_ENABLED=0 go run
github.com/vektra/mockery/v3@$(MOCKERY_VERSION)
```
`make mock` calls `$(MOCKERY)`, `make go-dep` installs
`@$(MOCKERY_VERSION)`. The pinned version is used no matter what is on the
`PATH`, and `go run` reuses the module/build cache, so there is little overhead
after the first run.
`GOOS`/`GOARCH` are cleared and cgo is disabled because
`backend/Dockerfile` runs `make all` with the *target* `GOARCH`/`CC` exported.
Without that, `go run` would build mockery for the target platform and fail
with `exec format error` in the arm64/amd64 cross build.
`MOCKERY=mockery make mock` keeps the previous behaviour.
No Go source, `go.mod`, `go.sum` or workflow change.
### Verification
| Check | Result |
|---|---|
| `make mock` with no `mockery` on `PATH` | ✅ 67 mocks, all `version=v3.7.4`
|
| `GOOS=linux GOARCH=amd64 CC=x86_64-linux-gnu-gcc CGO_ENABLED=1 make mock`
(cross, arm64 host) | ✅ — without the `GOOS=/GOARCH=` prefix: `exec format
error` |
| `GOARCH=arm64 make mock` | ✅ |
| `docker buildx build --platform linux/amd64 --target build` of
`backend/Dockerfile` on an arm64 host (cross build, `make all`) | ✅ |
| `go vet ./helpers/unithelper/`, `go test ./core/migration/
./helpers/pluginhelper/api/` | ✅ |
Unmodified upstream workflows in the fork (same
`mericodev/lake-builder:latest`): NOTICE-year-check, lint-commit-message,
check-grafana-dashboards, golangci-lint (runs `make mock`),
migration-script-lint, yaml-lint — all green.
Note for reviewers: the `paths` filters of `unit-test` and `test-e2e` only
match the root `Makefile`, so neither workflow runs for this PR. To cover them
I ran both in the fork with an additional throwaway commit touching a `.sh`
file; both are green, and the [unit-test
run](https://github.com/DoDiODev/devlake/actions/runs/36419153900) shows `make
mock` resolving mockery v3.7.4 via `go run`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]