Skip to content

Commit 7cd6406

Browse files
Reduce build target radius (#2293)
Signed-off-by: Azeem Shaikh <azeemshaikh38@gmail.com> Signed-off-by: Azeem Shaikh <azeemshaikh38@gmail.com>
1 parent a7a503a commit 7cd6406

File tree

6 files changed

+215
-154
lines changed

6 files changed

+215
-154
lines changed

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
11
# binary.
22
scorecard
3+
scorecard.docker
4+
scorecard.releaser
35
gitblobcache
46
clients/githubrepo/roundtripper/tokens/server/github-auth-server
7+
clients/githubrepo/roundtripper/tokens/server/github-auth-server.docker
58
cron/internal/data/add/add
69
cron/internal/data/validate/validate
710
cron/internal/data/update/projects-update
811
cron/internal/controller/controller
12+
cron/internal/controller/controller.docker
913
cron/internal/worker/worker
1014
cron/internal/cii/cii-worker
15+
cron/internal/cii/cii-worker.docker
1116
cron/internal/shuffle/shuffle
1217
cron/internal/webhook/webhook
18+
cron/internal/webhook/webhook.docker
1319
cron/internal/bq/data-transfer
20+
cron/internal/bq/data-transfer.docker
1421

1522
# Binaries for programs and plugins.
1623
*.exe

Makefile

Lines changed: 81 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,9 @@ build: $(build-targets)
143143
build-proto: ## Compiles and generates all required protobufs
144144
build-proto: cron/internal/data/request.pb.go cron/internal/data/metadata.pb.go
145145
cron/internal/data/request.pb.go: cron/internal/data/request.proto | $(PROTOC) $(PROTOC_GEN_GO)
146-
$(PROTOC) --plugin=$(PROTOC_GEN_GO) --go_out=../../../ cron/internal/data/request.proto
146+
$(PROTOC) --plugin=$(PROTOC_GEN_GO) --go_out=. --go_opt=paths=source_relative cron/internal/data/request.proto
147147
cron/internal/data/metadata.pb.go: cron/internal/data/metadata.proto | $(PROTOC) $(PROTOC_GEN_GO)
148-
$(PROTOC) --plugin=$(PROTOC_GEN_GO) --go_out=../../../ cron/internal/data/metadata.proto
148+
$(PROTOC) --plugin=$(PROTOC_GEN_GO) --go_out=. --go_out=paths=source_relative cron/internal/data/metadata.proto
149149

150150
generate-mocks: ## Compiles and generates all mocks using mockgen.
151151
generate-mocks: clients/mockclients/repo_client.go \
@@ -179,45 +179,107 @@ validate-docs: docs/checks/internal/generate/main.go
179179
# Validating checks.yaml
180180
go run ./docs/checks/internal/validate/main.go
181181

182-
build-scorecard: ## Runs go build on repo
182+
SCORECARD_DEPS = $(shell find . -iname "*.go" | grep -v tools/ | grep -v attestor/)
183+
build-scorecard: ## Build Scorecard CLI
184+
build-scorecard: scorecard
185+
scorecard: $(SCORECARD_DEPS)
183186
# Run go build and generate scorecard executable
184187
CGO_ENABLED=0 go build -trimpath -a -tags netgo -ldflags '$(LDFLAGS)'
185-
186-
build-releaser: ## Runs goreleaser on the repo
188+
scorecard-docker: ## Build Scorecard CLI Docker image
189+
scorecard-docker: scorecard.docker
190+
scorecard.docker: Dockerfile $(SCORECARD_DEPS)
191+
DOCKER_BUILDKIT=1 docker build . --file Dockerfile \
192+
--tag $(IMAGE_NAME) && \
193+
touch scorecard.docker
194+
195+
build-releaser: ## Build goreleaser for the Scorecard CLI
196+
build-releaser: scorecard.releaser
197+
scorecard.releaser: .goreleaser.yml $(SCORECARD_DEPS) | $(GORELEASER)
187198
# Run go releaser on the Scorecard repo
188-
$(GORELEASER) check
189-
VERSION_LDFLAGS="$(LDFLAGS)" $(GORELEASER) release --snapshot --rm-dist --skip-publish --skip-sign
190-
191-
build-controller: ## Runs go build on the cron PubSub controller
199+
$(GORELEASER) check && \
200+
VERSION_LDFLAGS="$(LDFLAGS)" $(GORELEASER) release \
201+
--snapshot --rm-dist --skip-publish --skip-sign && \
202+
touch scorecard.releaser
203+
204+
CRON_CONTROLLER_DEPS = $(shell find cron/internal/ -iname "*.go")
205+
build-controller: ## Build cron controller
206+
build-controller: cron/internal/controller/controller
207+
cron/internal/controller/controller: $(CRON_CONTROLLER_DEPS)
192208
# Run go build on the cron PubSub controller
193209
cd cron/internal/controller && CGO_ENABLED=0 go build -trimpath -a -ldflags '$(LDFLAGS)' -o controller
210+
cron-controller-docker: ## Build cron controller Docker image
211+
cron-controller-docker: cron/internal/controller/controller.docker
212+
cron/internal/controller/controller.docker: cron/internal/controller/Dockerfile $(CRON_CONTROLLER_DEPS)
213+
DOCKER_BUILDKIT=1 docker build . --file cron/internal/controller/Dockerfile \
214+
--tag $(IMAGE_NAME)-batch-controller \
215+
&& touch cron/internal/controller/controller.docker
194216

195217
build-worker: ## Runs go build on the cron PubSub worker
196218
# Run go build on the cron PubSub worker
197219
cd cron/internal/worker && CGO_ENABLED=0 go build -trimpath -a -ldflags '$(LDFLAGS)' -o worker
198220

199-
build-cii-worker: ## Runs go build on the CII worker
221+
CRON_CII_DEPS = $(shell find cron/internal/ clients/ -iname "*.go")
222+
build-cii-worker: ## Build cron CII worker
223+
build-cii-worker: cron/internal/cii/cii-worker
224+
cron/internal/cii/cii-worker: $(CRON_CII_DEPS)
200225
# Run go build on the CII worker
201226
cd cron/internal/cii && CGO_ENABLED=0 go build -trimpath -a -ldflags '$(LDFLAGS)' -o cii-worker
202-
203-
build-shuffler: ## Runs go build on the cron shuffle script
227+
cron-cii-worker-docker: # Build cron CII worker Docker image
228+
cron-cii-worker-docker: cron/internal/cii/cii-worker.docker
229+
cron/internal/cii/cii-worker.docker: cron/internal/cii/Dockerfile $(CRON_CII_DEPS)
230+
DOCKER_BUILDKIT=1 docker build . --file cron/internal/cii/Dockerfile \
231+
--tag $(IMAGE_NAME)-cii-worker && \
232+
touch cron/internal/cii/cii-worker.docker
233+
234+
CRON_SHUFFLER_DEPS = $(shell find cron/internal/data/ cron/internal/shuffle/ -iname "*.go")
235+
build-shuffler: ## Build cron shuffle script
236+
build-shuffler: cron/internal/shuffle/shuffle
237+
cron/internal/shuffle/shuffle: $(CRON_SHUFFLER_DEPS)
204238
# Run go build on the cron shuffle script
205239
cd cron/internal/shuffle && CGO_ENABLED=0 go build -trimpath -a -ldflags '$(LDFLAGS)' -o shuffle
206240

207-
build-bq-transfer: ## Runs go build on the BQ transfer cron job
208-
build-bq-transfer: ./cron/internal/bq/*.go
241+
CRON_TRANSFER_DEPS = $(shell find cron/internal/data/ cron/internal/config/ cron/internal/bq/ -iname "*.go")
242+
build-bq-transfer: ## Build cron BQ transfer worker
243+
build-bq-transfer: cron/internal/bq/data-transfer
244+
cron/internal/bq/data-transfer: $(CRON_TRANSFER_DEPS)
209245
# Run go build on the Copier cron job
210246
cd cron/internal/bq && CGO_ENABLED=0 go build -trimpath -a -ldflags '$(LDFLAGS)' -o data-transfer
211-
212-
build-github-server: ## Runs go build on the GitHub auth server
213-
build-github-server: ./clients/githubrepo/roundtripper/tokens/*
247+
cron-bq-transfer-docker: ## Build cron BQ transfer worker Docker image
248+
cron-bq-transfer-docker: cron/internal/bq/data-transfer.docker
249+
cron/internal/bq/data-transfer.docker: cron/internal/bq/Dockerfile $(CRON_TRANSFER_DEPS)
250+
DOCKER_BUILDKIT=1 docker build . --file cron/internal/bq/Dockerfile \
251+
--tag $(IMAGE_NAME)-bq-transfer && \
252+
touch cron/internal/bq/data-transfer.docker
253+
254+
TOKEN_SERVER_DEPS = $(shell find clients/githubrepo/roundtripper/tokens/ -iname "*.go")
255+
build-github-server: ## Build GitHub token server
256+
build-github-server: clients/githubrepo/roundtripper/tokens/server/github-auth-server
257+
clients/githubrepo/roundtripper/tokens/server/github-auth-server: $(TOKEN_SERVER_DEPS)
214258
# Run go build on the GitHub auth server
215259
cd clients/githubrepo/roundtripper/tokens/server && \
216260
CGO_ENABLED=0 go build -trimpath -a -ldflags '$(LDFLAGS)' -o github-auth-server
217-
218-
build-webhook: ## Runs go build on the cron webhook
261+
cron-github-server-docker: ## Build GitHub token server Docker image
262+
cron-github-server-docker: clients/githubrepo/roundtripper/tokens/server/github-auth-server.docker
263+
clients/githubrepo/roundtripper/tokens/server/github-auth-server.docker: \
264+
clients/githubrepo/roundtripper/tokens/server/Dockerfile $(TOKEN_SERVER_DEPS)
265+
DOCKER_BUILDKIT=1 docker build . \
266+
--file clients/githubrepo/roundtripper/tokens/server/Dockerfile \
267+
--tag ${IMAGE_NAME}-github-server && \
268+
touch clients/githubrepo/roundtripper/tokens/server/github-auth-server.docker
269+
270+
CRON_WEBHOOK_DEPS = $(shell find cron/internal/webhook/ cron/internal/data/ -iname "*.go")
271+
build-webhook: ## Build cron webhook server
272+
build-webhook: cron/internal/webhook/webhook
273+
cron/internal/webhook/webhook: $(CRON_WEBHOOK_DEPS)
219274
# Run go build on the cron webhook
220275
cd cron/internal/webhook && CGO_ENABLED=0 go build -trimpath -a -ldflags '$(LDFLAGS)' -o webhook
276+
cron-webhook-docker: ## Build cron webhook server Docker image
277+
cron-webhook-docker: cron/internal/webhook/webhook.docker
278+
cron/internal/webhook/webhook.docker: cron/internal/webhook/Dockerfile $(CRON_WEBHOOK_DEPS)
279+
DOCKER_BUILDKIT=1 docker build . --file cron/internal/webhook/Dockerfile \
280+
--tag ${IMAGE_NAME}-webhook && \
281+
touch cron/internal/webhook/webhook.docker
282+
221283

222284
build-add-script: ## Runs go build on the add script
223285
build-add-script: cron/internal/data/add/add
@@ -241,20 +303,8 @@ docker-targets = scorecard-docker cron-controller-docker cron-worker-docker cron
241303
.PHONY: dockerbuild $(docker-targets)
242304
dockerbuild: $(docker-targets)
243305

244-
scorecard-docker:
245-
DOCKER_BUILDKIT=1 docker build . --file Dockerfile --tag $(IMAGE_NAME)
246-
cron-controller-docker:
247-
DOCKER_BUILDKIT=1 docker build . --file cron/internal/controller/Dockerfile --tag $(IMAGE_NAME)-batch-controller
248306
cron-worker-docker:
249307
DOCKER_BUILDKIT=1 docker build . --file cron/internal/worker/Dockerfile --tag $(IMAGE_NAME)-batch-worker
250-
cron-cii-worker-docker:
251-
DOCKER_BUILDKIT=1 docker build . --file cron/internal/cii/Dockerfile --tag $(IMAGE_NAME)-cii-worker
252-
cron-bq-transfer-docker:
253-
DOCKER_BUILDKIT=1 docker build . --file cron/internal/bq/Dockerfile --tag $(IMAGE_NAME)-bq-transfer
254-
cron-webhook-docker:
255-
DOCKER_BUILDKIT=1 docker build . --file cron/internal/webhook/Dockerfile --tag ${IMAGE_NAME}-webhook
256-
cron-github-server-docker:
257-
DOCKER_BUILDKIT=1 docker build . --file clients/githubrepo/roundtripper/tokens/server/Dockerfile --tag ${IMAGE_NAME}-github-server
258308
###############################################################################
259309

260310
##@ Tests

cron/internal/data/metadata.pb.go

Lines changed: 53 additions & 52 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cron/internal/data/metadata.proto

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414

1515
syntax = "proto3";
1616

17-
package ossf.scorecard.cron.data;
17+
package ossf.scorecard.cron.internal.data;
1818

19-
option go_package = "github.com/ossf/scorecard/cron/data";
19+
option go_package = "github.com/ossf/scorecard/cron/internal/data";
2020

2121
message ShardMetadata {
2222
optional string shard_loc = 1;

0 commit comments

Comments
 (0)