From fa9c6006bacf9d4d5d0eae825f1c5da55f525253 Mon Sep 17 00:00:00 2001 From: Sean Breen Date: Wed, 19 Nov 2025 11:29:46 +0000 Subject: [PATCH 1/3] creates a run directory under build to use when developing locally --- Makefile | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index 4a63c9e40..cea256ff4 100644 --- a/Makefile +++ b/Makefile @@ -19,10 +19,10 @@ GOBIN ?= $$(go env GOPATH)/bin # | amazonlinux | 2, 2023 | | # | ubuntu | 22.04, 24.04 25.04 | | # | debian | bullseye-slim, bookworm-slim, trixie-slim | | +# | alpine | 3.19, 3.20, 3.21 3.22 | | # | redhatenterprise | 8, 9, 10 | | # | rockylinux | 8, 9, 10 | | # | almalinux | 8, 9, 10 | | -# | alpine | 3.19, 3.20, 3.21 3.22 | | # | oraclelinux | 8, 9, 10 | | # | suse | sle15 | | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @@ -36,17 +36,19 @@ IMAGE_PATH ?= "/nginx/agent" TAG ?= "" NGINX_LICENSE_JWT ?= "" -BUILD_DIR := build -TEST_BUILD_DIR := build/test -CERTS_DIR := build/certs +BUILD_DIR := $(shell pwd)/build +RUN_DIR := $(BUILD_DIR)/run +TEST_BUILD_DIR := $(BUILD_DIR)/test +CERTS_DIR := $(BUILD_DIR)/certs DOCS_DIR := docs PROTO_DIR := proto -BINARY_NAME := nginx-agent -PROJECT_DIR = cmd/agent -PROJECT_FILE = main.go -COLLECTOR_PATH ?= /etc/nginx-agent/opentelemetry-collector-agent.yaml -LIB_DIR ?= /var/lib/nginx-agent -DIRS = $(BUILD_DIR) $(TEST_BUILD_DIR) $(BUILD_DIR)/$(DOCS_DIR) $(BUILD_DIR)/$(DOCS_DIR)/$(PROTO_DIR) +BINARY_NAME := nginx-agent +PROJECT_DIR = cmd/agent +PROJECT_FILE = main.go +LOG_PATH ?= $(RUN_DIR)/agent.log +COLLECTOR_PATH ?= $(RUN_DIR) +LIB_DIR ?= $(RUN_DIR) +DIRS = $(BUILD_DIR) $(RUN_DIR) $(TEST_BUILD_DIR) $(BUILD_DIR)/$(DOCS_DIR) $(BUILD_DIR)/$(DOCS_DIR)/$(PROTO_DIR) $(shell mkdir -p $(DIRS)) VERSION ?= $(shell git describe --match "v[0-9]*" --abbrev=0 --tags) @@ -68,7 +70,6 @@ DEB_PACKAGE := ./build/$(PACKAGE_NAME).deb RPM_PACKAGE := ./build/$(PACKAGE_NAME).rpm MOCK_MANAGEMENT_PLANE_CONFIG_DIRECTORY ?= -MOCK_MANAGEMENT_PLANE_EXTERNAL_FILE_SERVER ?= MOCK_MANAGEMENT_PLANE_LOG_LEVEL ?= INFO MOCK_MANAGEMENT_PLANE_GRPC_ADDRESS ?= 127.0.0.1:0 MOCK_MANAGEMENT_PLANE_API_ADDRESS ?= 127.0.0.1:0 @@ -163,7 +164,7 @@ build-mock-management-otel-collector: mkdir -p $(BUILD_DIR)/mock-management-otel-collector @CGO_ENABLED=0 GOARCH=$(OSARCH) GOOS=linux $(GOBUILD) -o $(BUILD_DIR)/mock-management-otel-collector/collector test/mock/collector/mock-collector/main.go -integration-test: $(SELECTED_PACKAGE) build-mock-management-plane-grpc +integration-test: $(SELECTED_PACKAGE) build-mock-management-plane-grpc TEST_ENV="Container" CONTAINER_OS_TYPE=$(CONTAINER_OS_TYPE) BUILD_TARGET="install-agent-local" CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} \ PACKAGES_REPO=$(OSS_PACKAGES_REPO) PACKAGE_NAME=$(PACKAGE_NAME) BASE_IMAGE=$(BASE_IMAGE) DOCKERFILE_PATH=$(DOCKERFILE_PATH) IMAGE_PATH=$(IMAGE_PATH) TAG=${IMAGE_TAG} \ OS_VERSION=$(OS_VERSION) OS_RELEASE=$(OS_RELEASE) \ @@ -179,15 +180,7 @@ official-image-integration-test: $(SELECTED_PACKAGE) build-mock-management-plane TEST_ENV="Container" CONTAINER_OS_TYPE=$(CONTAINER_OS_TYPE) CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} BUILD_TARGET="install" \ PACKAGES_REPO=$(OSS_PACKAGES_REPO) TAG=${TAG} PACKAGE_NAME=$(PACKAGE_NAME) BASE_IMAGE=$(BASE_IMAGE) DOCKERFILE_PATH=$(OFFICIAL_IMAGE_DOCKERFILE_PATH) \ OS_VERSION=$(OS_VERSION) OS_RELEASE=$(OS_RELEASE) IMAGE_PATH=$(IMAGE_PATH) \ - NGINX_LICENSE_JWT=$(NGINX_LICENSE_JWT) \ go test -v ./test/integration/managementplane ./test/integration/auxiliarycommandserver - -metrics-test: $(SELECTED_PACKAGE) build-mock-management-otel-collector - TEST_ENV="Container" CONTAINER_OS_TYPE=$(CONTAINER_OS_TYPE) CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} BUILD_TARGET="install" \ - PACKAGES_REPO=$(OSS_PACKAGES_REPO) TAG=${TAG} PACKAGE_NAME=$(PACKAGE_NAME) BASE_IMAGE=$(BASE_IMAGE) DOCKERFILE_PATH=$(OFFICIAL_IMAGE_DOCKERFILE_PATH) \ - OS_VERSION=$(OS_VERSION) OS_RELEASE=$(OS_RELEASE) IMAGE_PATH=$(IMAGE_PATH) \ - NGINX_LICENSE_JWT=$(NGINX_LICENSE_JWT) \ - go test -v ./test/integration/metrics performance-test: mkdir -p $(TEST_BUILD_DIR) @@ -202,7 +195,12 @@ run: build ## Run code dev: ## Run agent executable @echo "🚀 Running App" - NGINX_AGENT_COLLECTOR_CONFIG_PATH=$(COLLECTOR_PATH) NGINX_AGENT_LIB_DIR=$(LIB_DIR) $(GORUN) -ldflags=$(DEBUG_LDFLAGS) $(PROJECT_DIR)/$(PROJECT_FILE) + touch $(LOG_PATH) + NGINX_AGENT_COLLECTOR_CONFIG_PATH=$(COLLECTOR_PATH)/opentelemetry-collector-agent.yaml \ + NGINX_AGENT_COLLECTOR_LOG_LEVEL="DEBUG" \ + NGINX_AGENT_COLLECTOR_LOG_PATH=$(COLLECTOR_PATH)/otel.log \ + NGINX_AGENT_LIB_DIR=$(LIB_DIR) \ + $(GORUN) -ldflags=$(DEBUG_LDFLAGS) $(PROJECT_DIR)/$(PROJECT_FILE) race-condition-dev: ## Run agent executable with race condition detection @echo "🏎️ Running app with race condition detection enabled" @@ -210,7 +208,7 @@ race-condition-dev: ## Run agent executable with race condition detection run-mock-management-grpc-server: ## Run mock management plane gRPC server @echo "🖲️ Running mock management plane gRPC server" - $(GORUN) test/mock/grpc/cmd/main.go -configDirectory=$(MOCK_MANAGEMENT_PLANE_CONFIG_DIRECTORY) -logLevel=$(MOCK_MANAGEMENT_PLANE_LOG_LEVEL) -grpcAddress=$(MOCK_MANAGEMENT_PLANE_GRPC_ADDRESS) -apiAddress=$(MOCK_MANAGEMENT_PLANE_API_ADDRESS) -externalFileServer=$(MOCK_MANAGEMENT_PLANE_EXTERNAL_FILE_SERVER) + $(GORUN) test/mock/grpc/cmd/main.go -configDirectory=$(MOCK_MANAGEMENT_PLANE_CONFIG_DIRECTORY) -logLevel=$(MOCK_MANAGEMENT_PLANE_LOG_LEVEL) -grpcAddress=$(MOCK_MANAGEMENT_PLANE_GRPC_ADDRESS) -apiAddress=$(MOCK_MANAGEMENT_PLANE_API_ADDRESS) .PHONY: build-test-nginx-plus-and-nap-image From 8e14fc306dc3fbcbe0b4b87de4050e6f02ef2581 Mon Sep 17 00:00:00 2001 From: Sean Breen Date: Wed, 19 Nov 2025 12:21:09 +0000 Subject: [PATCH 2/3] add back missing target --- Makefile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Makefile b/Makefile index cea256ff4..dba17cc00 100644 --- a/Makefile +++ b/Makefile @@ -182,6 +182,13 @@ official-image-integration-test: $(SELECTED_PACKAGE) build-mock-management-plane OS_VERSION=$(OS_VERSION) OS_RELEASE=$(OS_RELEASE) IMAGE_PATH=$(IMAGE_PATH) \ go test -v ./test/integration/managementplane ./test/integration/auxiliarycommandserver +metrics-test: $(SELECTED_PACKAGE) build-mock-management-otel-collector + TEST_ENV="Container" CONTAINER_OS_TYPE=$(CONTAINER_OS_TYPE) CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} BUILD_TARGET="install" \ + PACKAGES_REPO=$(OSS_PACKAGES_REPO) TAG=${TAG} PACKAGE_NAME=$(PACKAGE_NAME) BASE_IMAGE=$(BASE_IMAGE) DOCKERFILE_PATH=$(OFFICIAL_IMAGE_DOCKERFILE_PATH) \ + OS_VERSION=$(OS_VERSION) OS_RELEASE=$(OS_RELEASE) IMAGE_PATH=$(IMAGE_PATH) \ + NGINX_LICENSE_JWT=$(NGINX_LICENSE_JWT) \ + go test -v ./test/integration/metrics + performance-test: mkdir -p $(TEST_BUILD_DIR) bash -c 'CGO_ENABLED=0 $(GOTEST) -count 10 -timeout 6m -bench=. -benchmem -run=^$$ ./... | tee $(TEST_BUILD_DIR)/benchmark.txt; test $${PIPESTATUS[0]} -eq 0' From c03e7ed78855aeb6b5ccb3e896abf33d6a18df31 Mon Sep 17 00:00:00 2001 From: Sean Breen Date: Fri, 21 Nov 2025 10:59:00 +0000 Subject: [PATCH 3/3] add back external file server to mock management target --- Makefile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index dba17cc00..bdaba18a5 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,8 @@ APK_PACKAGE := ./build/$(PACKAGE_NAME).apk DEB_PACKAGE := ./build/$(PACKAGE_NAME).deb RPM_PACKAGE := ./build/$(PACKAGE_NAME).rpm -MOCK_MANAGEMENT_PLANE_CONFIG_DIRECTORY ?= +MOCK_MANAGEMENT_PLANE_CONFIG_DIRECTORY ?= +MOCK_MANAGEMENT_PLANE_EXTERNAL_FILE_SERVER ?= MOCK_MANAGEMENT_PLANE_LOG_LEVEL ?= INFO MOCK_MANAGEMENT_PLANE_GRPC_ADDRESS ?= 127.0.0.1:0 MOCK_MANAGEMENT_PLANE_API_ADDRESS ?= 127.0.0.1:0 @@ -215,7 +216,12 @@ race-condition-dev: ## Run agent executable with race condition detection run-mock-management-grpc-server: ## Run mock management plane gRPC server @echo "🖲️ Running mock management plane gRPC server" - $(GORUN) test/mock/grpc/cmd/main.go -configDirectory=$(MOCK_MANAGEMENT_PLANE_CONFIG_DIRECTORY) -logLevel=$(MOCK_MANAGEMENT_PLANE_LOG_LEVEL) -grpcAddress=$(MOCK_MANAGEMENT_PLANE_GRPC_ADDRESS) -apiAddress=$(MOCK_MANAGEMENT_PLANE_API_ADDRESS) + $(GORUN) test/mock/grpc/cmd/main.go \ + -configDirectory=$(MOCK_MANAGEMENT_PLANE_CONFIG_DIRECTORY) \ + -logLevel=$(MOCK_MANAGEMENT_PLANE_LOG_LEVEL) \ + -grpcAddress=$(MOCK_MANAGEMENT_PLANE_GRPC_ADDRESS) \ + -apiAddress=$(MOCK_MANAGEMENT_PLANE_API_ADDRESS) \ + -externalFileServer=$(MOCK_MANAGEMENT_PLANE_EXTERNAL_FILE_SERVER) .PHONY: build-test-nginx-plus-and-nap-image