Skip to content
Snippets Groups Projects
Makefile 4.23 KiB
Newer Older
  • Learn to ignore specific revisions
  • Andre Sterba's avatar
    Andre Sterba committed
    MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
    MAKEFILE_DIR  := $(dir $(MAKEFILE_PATH))
    
    TOOLS_DIR := build-tools
    
    GOSDN_TMP_DIR := /tmp/gosdn
    CLAB_DIR := $(GOSDN_TMP_DIR)/clab
    
    Andre Sterba's avatar
    Andre Sterba committed
    GOSDN_PRG := $(MAKEFILE_DIR)$(TOOLS_DIR)
    
    GOPATH := $(~/go)
    
    Andre Sterba's avatar
    Andre Sterba committed
    GOBIN := $(GOSDN_PRG)
    
    SCRIPTS_DIR := /scripts
    
    Andre Sterba's avatar
    Andre Sterba committed
    
    GOCMD=go
    GOBUILD=$(GOCMD) build
    
    GOCLEAN=$(GOCMD) clean -cache -fuzzcache -testcache -modcache
    
    BUILD_ARTIFACTS_PATH=artifacts
    
    
    # Tool Versions
    GOTESTSUM_VERSION=v1.8.1
    
    GOLANGCI_LINT_VERSION=v1.59.1
    
    MOCKERY_VERSION=v2.20.0
    YGOT_GENERATOR_VERSION=v0.27.0
    YGOT_GENERATOR_GENERATOR_VERSION=v0.0.4
    
    
    include $(MAKEFILE_SUBDIR)/build/Makefile
    include $(MAKEFILE_SUBDIR)/ci/Makefile
    include $(MAKEFILE_SUBDIR)/clab/Makefile
    include $(MAKEFILE_SUBDIR)/container/Makefile
    include $(MAKEFILE_SUBDIR)/generate/Makefile
    
    .DEFAULT_GOAL := all
    
    
    Andre Sterba's avatar
    Andre Sterba committed
    all: build
    
    
    pre:
    	mkdir -p $(BUILD_ARTIFACTS_PATH)
    
    
    create-gosdn-tmp-dir:
    	mkdir -p $(GOSDN_TMP_DIR)
    
    create-clab-dir: create-gosdn-tmp-dir
    	mkdir -p $(CLAB_DIR)
    
    
    Andre Sterba's avatar
    Andre Sterba committed
    install-tools:
    	@echo Install development tooling
    	mkdir -p $(GOSDN_PRG)
    
    	export GOBIN=$(GOSDN_PRG) && go install gotest.tools/gotestsum@$(GOTESTSUM_VERSION) &&\
    	go install github.com/golangci/golangci-lint/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION) &&\
    	go install github.com/vektra/mockery/v2@$(MOCKERY_VERSION) &&\
    	go install github.com/openconfig/ygot/generator@$(YGOT_GENERATOR_VERSION) &&\
    	go install github.com/andresterba/go-ygot-generator-generator@$(YGOT_GENERATOR_GENERATOR_VERSION)
    
    Andre Sterba's avatar
    Andre Sterba committed
    	@echo Finished installing development tooling
    
    
    lint: install-tools
    
    	./$(TOOLS_DIR)/golangci-lint run --config .golangci.yml
    
    
    lint-fix: install-tools
    
    	./$(TOOLS_DIR)/golangci-lint run --config .golangci.yml --fix
    
    build: pre build-gosdn build-gosdnc build-plugin-registry build-venv-manager build-arista-routing-engine-app build-hostname-checker-app build-basic-interface-monitoring-app
    
    
    containerize-all: containerize-gosdn containerize-gosdnc containerize-plugin-registry
    
    generate-all-certs: pre generate-root-ca generate-gosdn-certs generate-gnmi-target-certs
    
    
    shell-gosdn:
    	docker exec -it clab-gosdn_csbi_arista_base-gosdn bash
    
    shell-orchestrator:
    	docker exec -it clab-gosdn_csbi_arista_base-orchestrator bash
    
    start: build-gosdn
    	./$(BUILD_ARTIFACTS_PATH)/gosdn -l debug --config ./controller/configs/gosdn.toml
    
    
    virt-manager-example-start: build containerize-plugin-registry
    
    	./scripts/manage_virt_env.sh --mode start --topology dev_env_data/clab/basic_two_aristas.yaml --sdnconfig dev_env_data/sdn/basic_two_aristas.json
    
    
    virt-manager-example-stop:
    
    	./scripts/manage_virt_env.sh --mode stop --topology dev_env_data/clab/basic_two_aristas.yaml
    
    
    dev-env-start: generate-gnmi-target-certs generate-gosdn-certs containerize-gosdn containerize-plugin-registry
    
    	./scripts/simple-dev-setup.sh --mode start --topology dev_env_data/clab/basic_two_gnmi_targets.yaml
    
    dev-env-stop:
    	./scripts/simple-dev-setup.sh --mode stop --topology dev_env_data/clab/basic_two_gnmi_targets.yaml
    
    basic-compose-up: generate-certs containerize-gosdn containerize-plugin-registry
    	docker-compose -f dev_env_data/docker-compose/basic_docker-compose.yml down
    	docker-compose -f dev_env_data/docker-compose/basic_docker-compose.yml up -d
    
    basic-compose-down:
    	docker-compose -f dev_env_data/docker-compose/basic_docker-compose.yml down
    
    
    generate-certs: generate-gnmi-target-certs generate-gosdn-certs
    
    
    integration-tests: generate-certs containerize-gosdn containerize-plugin-registry
    
    	docker-compose -f dev_env_data/docker-compose/integration-test_docker-compose.yml down
    	docker-compose -f dev_env_data/docker-compose/integration-test_docker-compose.yml up -d
    
    	go test -p 1 ./integration-tests/*
    
    	docker-compose -f dev_env_data/docker-compose/integration-test_docker-compose.yml down
    
    
    integration-tests-debug-up: generate-certs containerize-gosdn containerize-plugin-registry
    
    	docker-compose -f dev_env_data/docker-compose/integration-test_docker-compose.yml up -d
    
    
    integration-tests-debug-down:
    
    	docker-compose -f dev_env_data/docker-compose/integration-test_docker-compose.yml down
    
    
    # Warning: Depending on your go and development configuration might also clean caches, modules and docker containers from your other projects.
    
    	rm -rf $(BUILD_ARTIFACTS_PATH)
    
    	docker system prune -af