소스 검색

Merge pull request #507 from docker/chore-import-restrictions

Add tool to check inter-dependencies between packages
Djordje Lukic 5 년 전
부모
커밋
464316d4fc
5개의 변경된 파일52개의 추가작업 그리고 1개의 파일을 삭제
  1. 4 1
      .github/workflows/ci.yml
  2. 8 0
      Dockerfile
  3. 4 0
      Makefile
  4. 3 0
      builder.Makefile
  5. 33 0
      import-restrictions.yaml

+ 4 - 1
.github/workflows/ci.yml

@@ -21,6 +21,9 @@ jobs:
       - name: Validate go-mod is up-to-date and license headers
         run: make validate
 
+      - name: Validate imports
+        run: make import-restrictions
+
       - name: Run golangci-lint
         run: |
           curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b . v1.30.0
@@ -57,4 +60,4 @@ jobs:
         run: make -f builder.Makefile cli
 
       - name: E2E Test
-        run: make e2e-local
+        run: make e2e-local

+ 8 - 0
Dockerfile

@@ -21,6 +21,7 @@ FROM --platform=${BUILDPLATFORM} golang:${GO_VERSION} AS base
 WORKDIR /api
 ENV GO111MODULE=on
 RUN apk add --no-cache \
+    git \
     docker \
     make \
     protoc \
@@ -45,6 +46,13 @@ RUN --mount=target=. \
     GIT_TAG=${GIT_TAG} \
     make -f builder.Makefile lint
 
+FROM base AS import-restrictions-base
+RUN go get github.com/docker/import-restrictions
+
+FROM import-restrictions-base AS import-restrictions
+RUN --mount=target=. \
+    make -f builder.Makefile import-restrictions
+
 FROM base AS make-cli
 ENV CGO_ENABLED=0
 ARG TARGETOS

+ 4 - 0
Makefile

@@ -72,6 +72,10 @@ lint: ## run linter(s)
 	--build-arg GIT_TAG=$(GIT_TAG) \
 	--target lint
 
+import-restrictions: ## run import-restrictions script
+	@docker build . \
+	--target import-restrictions
+
 serve: cli ## start server
 	@./bin/docker serve --address unix:///tmp/backend.sock
 

+ 3 - 0
builder.Makefile

@@ -56,6 +56,9 @@ test:
 lint:
 	golangci-lint run --timeout 10m0s ./...
 
+import-restrictions:
+	import-restrictions --configuration import-restrictions.yaml
+
 check-license-headers:
 	./scripts/validate/fileheader
 

+ 33 - 0
import-restrictions.yaml

@@ -0,0 +1,33 @@
+# Backends shouldn't depend on other backends or the cli
+- path: ./aci
+  forbiddenImports:
+    - github.com/docker/api/cli
+    - github.com/docker/api/ecs
+    - github.com/docker/api/example
+    - github.com/docker/api/local
+    - github.com/docker/api/metrics
+    - github.com/docker/api/server
+- path: ./ecs
+  forbiddenImports:
+    - github.com/docker/api/aci
+    - github.com/docker/api/cli
+    - github.com/docker/api/example
+    - github.com/docker/api/local
+    - github.com/docker/api/metrics
+    - github.com/docker/api/server
+- path: ./example
+  forbiddenImports:
+    - github.com/docker/api/aci
+    - github.com/docker/api/cli
+    - github.com/docker/api/ecs
+    - github.com/docker/api/local
+    - github.com/docker/api/metrics
+    - github.com/docker/api/server
+- path: ./local
+  forbiddenImports:
+    - github.com/docker/api/aci
+    - github.com/docker/api/cli
+    - github.com/docker/api/ecs
+    - github.com/docker/api/example
+    - github.com/docker/api/metrics
+    - github.com/docker/api/server