Skip to content

Commit 03b1de7

Browse files
authored
Merge pull request #442 from docker/chore/govulncheck
feat: govulncheck
2 parents ec92e67 + c19977b commit 03b1de7

File tree

4 files changed

+60
-1
lines changed

4 files changed

+60
-1
lines changed

.github/workflows/govulncheck.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: govulncheck
2+
on:
3+
push:
4+
branches:
5+
- main
6+
pull_request:
7+
jobs:
8+
check:
9+
name: Check for known vulnerabilities that affect Go code
10+
runs-on: ubuntu-latest
11+
permissions:
12+
id-token: write
13+
pull-requests: write
14+
contents: write
15+
steps:
16+
- uses: actions/checkout@v5
17+
18+
- name: Hub login
19+
uses: docker/login-action@v3
20+
with:
21+
username: ${{ vars.DOCKERBUILDBOT_USERNAME }}
22+
password: ${{ secrets.DOCKERBUILDBOT_WRITE_PAT }}
23+
24+
- name: Set up Docker Buildx
25+
id: buildx
26+
uses: docker/setup-buildx-action@v3
27+
with:
28+
driver: cloud
29+
endpoint: "docker/secrets-engine"
30+
install: true
31+
32+
- name: govulncheck
33+
run: make BUILDER=${{ steps.buildx.outputs.name }} govulncheck

Dockerfile

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,28 @@ RUN --mount=type=bind,target=.,ro \
7777
golangci-lint run -v $(go list -f '{{.Dir}}/...' -m | xargs)
7878
EOT
7979

80+
FROM golang AS govulncheck
81+
RUN --mount=type=cache,target=/root/.cache/go-build \
82+
--mount=type=cache,target=/go/pkg/mod \
83+
--mount=type=tmpfs,target=/go/src/ \
84+
go install "golang.org/x/vuln/cmd/govulncheck@latest" \
85+
&& govulncheck -version
86+
87+
FROM golang AS do-govulncheck
88+
ARG TARGETARCH
89+
ARG GO_VERSION
90+
COPY --link --from=govulncheck /go/bin/govulncheck /go/bin/govulncheck
91+
WORKDIR /govulncheck
92+
ENV GOARCH=${TARGETARCH}
93+
ENV GOTOOLCHAIN=go${GO_VERSION}
94+
ENV PATH=/go/bin:$PATH
95+
RUN --mount=type=bind,target=.,ro <<EOT
96+
set -euo pipefail
97+
for dir in $(go list -f '{{.Dir}}' -m); do
98+
(cd "$dir" && govulncheck -show=verbose ./...)
99+
done
100+
EOT
101+
80102
FROM golang AS gomodguard
81103
ARG GOMODGUARD_VERSION=v1.4.1
82104
RUN --mount=type=cache,target=/root/.cache/go-build \

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ mod:
102102
@go work sync
103103
@go work vendor
104104

105+
.PHONY: govulncheck
106+
govulncheck:
107+
@docker buildx build $(DOCKER_BUILD_ARGS) --target=do-govulncheck --platform=linux/arm64,linux/amd64 .
108+
105109
.PHONY: gomodguard
106110
gomodguard:
107111
@docker buildx build $(DOCKER_BUILD_ARGS) --target=do-gomodguard .

go.work

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
go 1.25.0
1+
go 1.25.6
22

33
use (
44
./client

0 commit comments

Comments
 (0)