Skip to content

Commit c473e2d

Browse files
authored
Refactor docker/* targets in Makefile (#1028)
* Refactor docker/* targets in Makefile Signed-off-by: Gábor Lipták <[email protected]> * Add sync help Signed-off-by: Gábor Lipták <[email protected]> --------- Signed-off-by: Gábor Lipták <[email protected]>
1 parent bb48f38 commit c473e2d

File tree

2 files changed

+41
-39
lines changed

2 files changed

+41
-39
lines changed

.github/workflows/build-images.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,4 @@ jobs:
2828
docker version -f '{{.Server.Experimental}}'
2929
3030
- name: build_docker
31-
run: make build_prod_images
31+
run: make build

Makefile

+40-38
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ help: ## Display this help
3131
# This recipe builds and pushes images for production. Note: RELEASE_TAG must be set
3232
#
3333
.PHONY: cloudbuild
34-
cloudbuild: require_release_tag push_prod_images ## Build and push images
34+
cloudbuild: require_release_tag push ## Build and push images
3535

3636
.PHONY: require_release_tag
3737
require_release_tag:
@@ -43,78 +43,80 @@ endif
4343
#
4444
# These recipes build all the top-level docker images
4545

46-
build_%_image:
46+
build/image/%:
4747
@# if TAG is 'latest', the two -t arguments are equivalent and do the same thing
4848
docker build $(BUILD_ARG) -t ${REGISTRY}/$(IMAGE_NAME) -t ${REGISTRY}/$(IMAGE_NAME):$(TAG) -f $(DOCKERFILE) $(DIR)
4949

5050
#
5151
# These recipes build the sandbox images.
5252
#
53-
build_%_sandbox:
53+
build/sandbox/%:
5454
@# if TAG is 'latest', the two -t arguments are equivalent and do the same thing
5555
docker build -t ${REGISTRY}/$(IMAGE_NAME) -t ${REGISTRY}/$(IMAGE_NAME):$(TAG) -f $(DOCKERFILE) $(DIR)
5656

57-
build_analysis_image: DIR=$(PREFIX)
58-
build_analysis_image: DOCKERFILE=$(PREFIX)/cmd/analyze/Dockerfile
59-
build_analysis_image: IMAGE_NAME=analysis
57+
build/image/analysis: DIR=$(PREFIX)
58+
build/image/analysis: DOCKERFILE=$(PREFIX)/cmd/analyze/Dockerfile
59+
build/image/analysis: IMAGE_NAME=analysis
6060

61-
build_scheduler_image: DIR=$(PREFIX)
62-
build_scheduler_image: DOCKERFILE=$(PREFIX)/cmd/scheduler/Dockerfile
63-
build_scheduler_image: IMAGE_NAME=scheduler
61+
build/image/scheduler: DIR=$(PREFIX)
62+
build/image/scheduler: DOCKERFILE=$(PREFIX)/cmd/scheduler/Dockerfile
63+
build/image/scheduler: IMAGE_NAME=scheduler
6464

65-
build_static_analysis_sandbox: DIR=$(PREFIX)
66-
build_static_analysis_sandbox: DOCKERFILE=$(SANDBOX_DIR)/staticanalysis/Dockerfile
67-
build_static_analysis_sandbox: IMAGE_NAME=static-analysis
65+
build/sandbox/static_analysis: DIR=$(PREFIX)
66+
build/sandbox/static_analysis: DOCKERFILE=$(SANDBOX_DIR)/staticanalysis/Dockerfile
67+
build/sandbox/static_analysis: IMAGE_NAME=static-analysis
6868

69-
build_dynamic_analysis_sandbox: DIR=$(SANDBOX_DIR)/dynamicanalysis
70-
build_dynamic_analysis_sandbox: DOCKERFILE=$(SANDBOX_DIR)/dynamicanalysis/Dockerfile
71-
build_dynamic_analysis_sandbox: IMAGE_NAME=dynamic-analysis
69+
build/sandbox/dynamic_analysis: DIR=$(SANDBOX_DIR)/dynamicanalysis
70+
build/sandbox/dynamic_analysis: DOCKERFILE=$(SANDBOX_DIR)/dynamicanalysis/Dockerfile
71+
build/sandbox/dynamic_analysis: IMAGE_NAME=dynamic-analysis
7272

73-
.PHONY: build_prod_images
74-
build_prod_images: build_dynamic_analysis_sandbox build_static_analysis_sandbox build_analysis_image build_scheduler_image ## Build images
73+
.PHONY: build
74+
build: build/sandbox/dynamic_analysis build/sandbox/static_analysis build/image/analysis build/image/scheduler ## Build images
7575

7676
#
7777
# Builds then pushes analysis and sandbox images
7878
#
7979

80-
push_%:
80+
push/image/%:
8181
docker push --all-tags ${REGISTRY}/$(IMAGE_NAME)
8282

83-
push_analysis_image: IMAGE_NAME=analysis
84-
push_analysis_image: build_analysis_image
83+
push/sandbox/%:
84+
docker push --all-tags ${REGISTRY}/$(IMAGE_NAME)
8585

86-
push_scheduler_image: IMAGE_NAME=scheduler
87-
push_scheduler_image: build_scheduler_image
86+
push/image/analysis: IMAGE_NAME=analysis
87+
push/image/analysis: build/image/analysis
8888

89-
push_dynamic_analysis_sandbox: IMAGE_NAME=dynamic-analysis
90-
push_dynamic_analysis_sandbox: build_dynamic_analysis_sandbox
89+
push/image/scheduler: IMAGE_NAME=scheduler
90+
push/image/scheduler: build/image/scheduler
9191

92-
push_static_analysis_sandbox: IMAGE_NAME=static-analysis
93-
push_static_analysis_sandbox: build_static_analysis_sandbox
92+
push/sandbox/dynamic_analysis: IMAGE_NAME=dynamic-analysis
93+
push/sandbox/dynamic_analysis: build/sandbox/dynamic_analysis
9494

95-
.PHONY: push_prod_sandboxes
96-
push_prod_sandboxes: push_dynamic_analysis_sandbox push_static_analysis_sandbox
95+
push/sandbox/static_analysis: IMAGE_NAME=static-analysis
96+
push/sandbox/static_analysis: build/sandbox/static_analysis
9797

98-
.PHONY: push_prod_images
99-
push_prod_images: push_prod_sandboxes push_analysis_image push_scheduler_image ## Push production images
98+
.PHONY: push/prod_sandboxes
99+
push/prod_sandboxes: push/sandbox/dynamic_analysis push/sandbox/static_analysis
100100

101+
.PHONY: push
102+
push: push/prod_sandboxes push/image/analysis push/image/scheduler ## Push production images
101103

102104
#
103105
# These update (sync) locally built sandbox images from Docker to
104106
# podman. In order to use locally built sandbox images for analysis,
105107
# pass '-nopull' to scripts/run_analysis.sh
106108
#
107-
sync_%_sandbox:
109+
sync/sandbox/%:
108110
docker save ${REGISTRY}/${IMAGE_NAME}:$(TAG) | sudo podman load
109111

110-
sync_dynamic_analysis_sandbox: IMAGE_NAME=dynamic-analysis
111-
sync_dynamic_analysis_sandbox: build_dynamic_analysis_sandbox
112+
sync/sandbox/dynamic_analysis: IMAGE_NAME=dynamic-analysis
113+
sync/sandbox/dynamic_analysis: build/sandbox/dynamic_analysis
112114

113-
sync_static_analysis_sandbox: IMAGE_NAME=static-analysis
114-
sync_static_analysis_sandbox: build_static_analysis_sandbox
115+
sync/sandbox/static_analysis: IMAGE_NAME=static-analysis
116+
sync/sandbox/static_analysis: build/sandbox/static_analysis
115117

116-
.PHONY: sync_prod_sandboxes
117-
sync_prod_sandboxes: sync_dynamic_analysis_sandbox sync_static_analysis_sandbox
118+
.PHONY: sync
119+
sync: sync/sandbox/dynamic_analysis sync/sandbox/static_analysis ## Sync prod sandboxes
118120

119121

120122
#
@@ -175,7 +177,7 @@ e2e_test_logs_analysis:
175177

176178
.PHONY: build_e2e_test_images
177179
build_e2e_test_images: TAG=test
178-
build_e2e_test_images: sync_prod_sandboxes build_analysis_image build_scheduler_image
180+
build_e2e_test_images: sync build/image/analysis build/image/scheduler
179181

180182

181183

0 commit comments

Comments
 (0)