github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/syz-cluster/Makefile (about) 1 # Copyright 2024 syzkaller project authors. All rights reserved. 2 # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. 3 4 IMAGE_TAG ?= latest 5 IMAGE_PREFIX ?= local/ 6 SHELL := /bin/bash 7 8 define build_image_rules = 9 image_name_$(2) := $(IMAGE_PREFIX)$(2):$(IMAGE_TAG) 10 dockerfile_$(2) := $(1)/Dockerfile 11 12 build-$(2): 13 @echo "Building $$(image_name_$(2)) (Dockerfile: $$(dockerfile_$(2)))" 14 DOCKER_BUILDKIT=1 docker build -t $$(image_name_$(2)) -f $$(dockerfile_$(2)) ../ 15 16 push-$(2): build-$(2) 17 @echo "Pushing $$(image_name_$(2))" 18 docker push $$(image_name_$(2)) 19 20 endef 21 22 $(eval $(call build_image_rules,./controller,controller)) 23 $(eval $(call build_image_rules,./dashboard,web-dashboard)) 24 $(eval $(call build_image_rules,./reporter-server,reporter-server)) 25 $(eval $(call build_image_rules,./series-tracker,series-tracker)) 26 $(eval $(call build_image_rules,./email-reporter,email-reporter)) 27 $(eval $(call build_image_rules,./workflow/triage-step,triage-step)) 28 $(eval $(call build_image_rules,./workflow/build-step,build-step)) 29 $(eval $(call build_image_rules,./workflow/fuzz-step,fuzz-step)) 30 $(eval $(call build_image_rules,./workflow/boot-step,boot-step)) 31 $(eval $(call build_image_rules,./tools/db-mgmt,db-mgmt)) 32 $(eval $(call build_image_rules,./tools/send-test-email,send-test-email)) 33 34 IMAGES := controller web-dashboard reporter-server series-tracker db-mgmt triage-step build-step boot-step fuzz-step send-test-email email-reporter 35 BUILD_TARGETS := $(addprefix build-, $(IMAGES)) 36 PUSH_TARGETS := $(addprefix push-, $(IMAGES)) 37 38 .PHONY: build-all push-all deploy-series-tracker run-series-tracker install-dev-config build-go-tests-dev run-go-tests-dev restart-spanner kustomize-dev 39 40 build-all: $(BUILD_TARGETS) 41 42 push-all: $(PUSH_TARGETS) 43 44 deploy-series-tracker: build-series-tracker 45 @kubectl rollout restart deployment series-tracker 46 47 run-series-tracker: build-series-tracker 48 ./run-local.sh series-tracker 49 50 deploy-web-dashboard: build-web-dashboard 51 @kubectl rollout restart deployment web-dashboard 52 53 install-dev-config: 54 minikube kubectl -- apply -f ./overlays/dev/global-config.yaml 55 56 build-go-tests-dev: 57 eval $$(minikube docker-env);\ 58 docker build -t go-tests-local -f Dockerfile.go-tests ../ 59 60 run-go-tests-dev: build-go-tests-dev 61 ./run-local.sh go-tests 62 63 restart-spanner: build-db-mgmt 64 minikube addons disable cloud-spanner; 65 minikube addons enable cloud-spanner; 66 ./run-local.sh db-mgmt migrate 67 68 # It takes some time for K8S to set up Argo CRDs, so if we `kubectl apply` everything at once, it will not 69 # work on the first attempt. 70 # The following two targets facilitate CI/CD: 71 # - k8s-config-argo installs Argo workflows. 72 # - k8s-config-argo-wait awaits untill all CRDs are ready. 73 k8s-config-argo: 74 @kubectl kustomize ./overlays/common/argo/ 75 76 k8s-config-argo-wait: 77 @kubectl wait --for condition=established --timeout=60s crd/cronworkflows.argoproj.io 78 @kubectl wait --for condition=established --timeout=60s crd/workflows.argoproj.io 79 80 escape_sed_replacement = \ 81 $(shell printf '%s' '$(subst ','\'',$(1))' | \ 82 sed -e 's~\\~\\\\~g' \ 83 -e 's~&~\\&~g' \ 84 -e 's~\$$~\\$$~g' \ 85 -e 's~/~\\/~g' \ 86 ) 87 88 SED_EXPRESSIONS := \ 89 -e "s~\$${IMAGE_PREFIX}~$(call escape_sed_replacement,${IMAGE_PREFIX})~g" \ 90 -e "s~\$${IMAGE_TAG}~$(call escape_sed_replacement,${IMAGE_TAG})~g" \ 91 -e "s~\$${SPANNER_DATABASE_URI}~$(call escape_sed_replacement,${SPANNER_DATABASE_URI})~g" \ 92 -e "s~\$${WORKFLOW_ARTIFACTS_BUCKET}~$(call escape_sed_replacement,${WORKFLOW_ARTIFACTS_BUCKET})~g" \ 93 -e "s~\$${BLOB_STORAGE_GCS_BUCKET}~$(call escape_sed_replacement,${BLOB_STORAGE_GCS_BUCKET})~g" \ 94 95 k8s-config-dev: 96 @kubectl kustomize ./overlays/minikube/ | sed $(SED_EXPRESSIONS) 97 98 k8s-config-gke-prod: ensure-spanner-database-uri-env ensure-blob-storage-env ensure-workflow-artifacts-bucket 99 @kubectl kustomize ./overlays/gke/prod/ | sed $(SED_EXPRESSIONS) 100 101 k8s-config-gke-staging: ensure-spanner-database-uri-env ensure-blob-storage-env ensure-workflow-artifacts-bucket 102 @kubectl kustomize ./overlays/gke/staging/ | sed $(SED_EXPRESSIONS) 103 104 migrate-job.yaml: 105 @cat tools/db-mgmt/migrate-job.yaml | sed $(SED_EXPRESSIONS) 106 107 send-test-email-job.yaml: 108 @cat tools/send-test-email/job.yaml | sed $(SED_EXPRESSIONS) 109 110 fetch-kernels-once.yaml: 111 @cat kernel-disk/fetch-kernels-once.yaml 112 113 ensure-spanner-database-uri-env: 114 @if [ -z "${SPANNER_DATABASE_URI}" ]; then \ 115 echo "Error: SPANNER_DATABASE_URI must be defined."; \ 116 exit 1; \ 117 fi 118 119 ensure-blob-storage-env: 120 @if [ -z "${BLOB_STORAGE_GCS_BUCKET}" ]; then \ 121 echo "Error: BLOB_STORAGE_GCS_BUCKET must be defined."; \ 122 exit 1; \ 123 fi 124 125 ensure-workflow-artifacts-bucket: 126 @if [ -z "${WORKFLOW_ARTIFACTS_BUCKET}" ]; then \ 127 echo "Error: WORKFLOW_ARTIFACTS_BUCKET must be defined."; \ 128 exit 1; \ 129 fi