You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Docker
		
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Docker
		
	
| # syntax=docker/dockerfile:1
 | |
| 
 | |
| # Copyright 2021 cli-docs-tool authors
 | |
| #
 | |
| # Licensed under the Apache License, Version 2.0 (the "License");
 | |
| # you may not use this file except in compliance with the License.
 | |
| # You may obtain a copy of the License at
 | |
| #
 | |
| #    http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing, software
 | |
| # distributed under the License is distributed on an "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| # See the License for the specific language governing permissions and
 | |
| # limitations under the License.
 | |
| 
 | |
| ARG GO_VERSION="1.18"
 | |
| ARG GOLANGCI_LINT_VERSION="v1.45"
 | |
| ARG ADDLICENSE_VERSION="v1.0.0"
 | |
| 
 | |
| ARG LICENSE_ARGS="-c cli-docs-tool -l apache"
 | |
| ARG LICENSE_FILES=".*\(Dockerfile\|\.go\|\.hcl\|\.sh\)"
 | |
| 
 | |
| FROM golangci/golangci-lint:${GOLANGCI_LINT_VERSION}-alpine AS golangci-lint
 | |
| FROM ghcr.io/google/addlicense:${ADDLICENSE_VERSION} AS addlicense
 | |
| 
 | |
| FROM golang:${GO_VERSION}-alpine AS base
 | |
| RUN apk add --no-cache cpio findutils git linux-headers
 | |
| ENV CGO_ENABLED=0
 | |
| WORKDIR /src
 | |
| 
 | |
| FROM base AS vendored
 | |
| RUN --mount=type=bind,target=.,rw \
 | |
|   --mount=type=cache,target=/go/pkg/mod \
 | |
|   go mod tidy && go mod download && \
 | |
|   mkdir /out && cp go.mod go.sum /out
 | |
| 
 | |
| FROM scratch AS vendor-update
 | |
| COPY --from=vendored /out /
 | |
| 
 | |
| FROM vendored AS vendor-validate
 | |
| RUN --mount=type=bind,target=.,rw <<EOT
 | |
| set -e
 | |
| git add -A
 | |
| cp -rf /out/* .
 | |
| diff=$(git status --porcelain -- go.mod go.sum)
 | |
| if [ -n "$diff" ]; then
 | |
|   echo >&2 'ERROR: Vendor result differs. Please vendor your package with "docker buildx bake vendor"'
 | |
|   echo "$diff"
 | |
|   exit 1
 | |
| fi
 | |
| EOT
 | |
| 
 | |
| FROM base AS lint
 | |
| RUN --mount=type=bind,target=. \
 | |
|   --mount=type=cache,target=/root/.cache \
 | |
|   --mount=from=golangci-lint,source=/usr/bin/golangci-lint,target=/usr/bin/golangci-lint \
 | |
|   golangci-lint run ./...
 | |
| 
 | |
| FROM base AS license-set
 | |
| ARG LICENSE_ARGS
 | |
| ARG LICENSE_FILES
 | |
| RUN --mount=type=bind,target=.,rw \
 | |
|   --mount=from=addlicense,source=/app/addlicense,target=/usr/bin/addlicense \
 | |
|   find . -regex "${LICENSE_FILES}" | xargs addlicense ${LICENSE_ARGS} \
 | |
|   && mkdir /out \
 | |
|   && find . -regex "${LICENSE_FILES}" | cpio -pdm /out
 | |
| 
 | |
| FROM scratch AS license-update
 | |
| COPY --from=set /out /
 | |
| 
 | |
| FROM base AS license-validate
 | |
| ARG LICENSE_ARGS
 | |
| ARG LICENSE_FILES
 | |
| RUN --mount=type=bind,target=. \
 | |
|   --mount=from=addlicense,source=/app/addlicense,target=/usr/bin/addlicense \
 | |
|   find . -regex "${LICENSE_FILES}" | xargs addlicense -check ${LICENSE_ARGS}
 | |
| 
 | |
| FROM vendored AS test
 | |
| RUN --mount=type=bind,target=. \
 | |
|   --mount=type=cache,target=/root/.cache \
 | |
|   --mount=type=cache,target=/go/pkg/mod \
 | |
|   go test -v -coverprofile=/tmp/coverage.txt -covermode=atomic ./...
 | |
| 
 | |
| FROM scratch AS test-coverage
 | |
| COPY --from=test /tmp/coverage.txt /coverage.txt
 |