@@ -11,37 +11,41 @@ ARG COMPONENT
11
11
ARG GOPROXY_ARG
12
12
ENV GOPROXY=${GOPROXY_ARG}
13
13
WORKDIR /workspace
14
- COPY "$COMPONENT" "$COMPONENT"
14
+ COPY "$COMPONENT" /go.* "$COMPONENT" /
15
15
RUN --mount=type=cache,target=/go/pkg/mod \
16
16
cd $COMPONENT && go mod download
17
17
18
+ # Component code
19
+ FROM base as component-base
20
+ COPY "$COMPONENT" "$COMPONENT"
21
+
18
22
# Linting
19
23
FROM harbor-repo.vmware.com/dockerhub-proxy-cache/golangci/golangci-lint:v1.50 AS lint-base
20
- FROM base AS lint
24
+ FROM component- base AS lint
21
25
RUN --mount=from=lint-base,src=/usr/bin/golangci-lint,target=/usr/bin/golangci-lint \
22
26
--mount=type=cache,target=/go/pkg/mod \
23
27
--mount=type=cache,target=/root/.cache/go-build \
24
28
--mount=type=cache,target=/root/.cache/golangci-lint \
25
29
cd $COMPONENT && golangci-lint run --config /workspace/.golangci.yaml --timeout 10m0s ./...
26
30
27
- FROM base AS fmt
31
+ FROM component- base AS fmt
28
32
RUN --mount=type=cache,target=/go/pkg/mod \
29
33
--mount=type=cache,target=/root/.cache/go-build \
30
34
cd $COMPONENT && go fmt ./...
31
35
32
- FROM base AS vet
36
+ FROM component- base AS vet
33
37
RUN --mount=type=cache,target=/go/pkg/mod \
34
38
--mount=type=cache,target=/root/.cache/go-build \
35
39
cd $COMPONENT && go vet ./...
36
40
37
41
# Testing
38
- FROM base AS test
42
+ FROM component- base AS test
39
43
RUN --mount=type=cache,target=/go/pkg/mod \
40
44
--mount=type=cache,target=/root/.cache/go-build \
41
45
cd $COMPONENT && mkdir /out && go test -v -coverprofile=/out/cover.out ./...
42
46
43
47
# Build the manager binary
44
- FROM base as builder
48
+ FROM component- base as builder
45
49
ARG TARGETOS
46
50
ARG TARGETARCH
47
51
ARG LD_FLAGS
0 commit comments