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