75 lines
2.9 KiB
Makefile
75 lines
2.9 KiB
Makefile
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
SHELL := /bin/bash -o pipefail
|
|
SW_ROOT := $(shell dirname $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))))
|
|
CONTEXT := $(SW_ROOT)/test/e2e-v2/java-test-service
|
|
DOCKER_BUILD_TOP:=${SW_ROOT}/dist/docker_build
|
|
HUB ?= ghcr.io/apache/skywalking
|
|
TAG ?= latest
|
|
JRE ?= 8u322-b06-jre-focal
|
|
BASE_IMAGE ?= eclipse-temurin:$(JRE)
|
|
|
|
E2E_SERVICE_PROVIDER_NAME = e2e-service-provider
|
|
E2E_SERVICE_CONSUMER_NAME = e2e-service-consumer
|
|
|
|
.PHONY: init
|
|
init:
|
|
cd $(SW_ROOT) && git submodule update --init --recursive
|
|
|
|
.PHONY: build.e2e-service
|
|
build.e2e-service:
|
|
cd $(SW_ROOT) && ./mvnw --batch-mode -f $(CONTEXT)/pom.xml clean package
|
|
|
|
DOCKER_TARGETS:=docker.e2e-service-provider docker.e2e-service-consumer
|
|
|
|
.PHONY: docker docker.e2e-service
|
|
docker: init build.e2e-service docker.e2e-service
|
|
|
|
%.e2e-service-provider: NAME = $(E2E_SERVICE_PROVIDER_NAME)
|
|
%.e2e-service-consumer: NAME = $(E2E_SERVICE_CONSUMER_NAME)
|
|
|
|
docker.%: PLATFORMS =
|
|
docker.%: LOAD_OR_PUSH = --load
|
|
push.%: PLATFORMS = --platform linux/amd64,linux/arm64
|
|
push.%: LOAD_OR_PUSH = --push
|
|
|
|
push.docker.e2e-service-% docker.e2e-service-%: $(CONTEXT)/Dockerfile
|
|
$(DOCKER_RULE)
|
|
|
|
docker.e2e-service: $(DOCKER_TARGETS)
|
|
docker.push-e2e-service: $(DOCKER_TARGETS:%=push.%)
|
|
|
|
# $^ the name of the dependencies for the target
|
|
# Rule Steps #
|
|
##############
|
|
# 1. Make a directory $(DOCKER_BUILD_TOP)/$(NAME)
|
|
# 2. This rule uses cp to copy all dependency filenames into into $(DOCKER_BUILD_TOP/$(NAME)
|
|
# 3. This rule finally runs docker build passing $(BUILD_ARGS) to docker if they are specified as a dependency variable
|
|
|
|
define DOCKER_RULE
|
|
mkdir -p $(DOCKER_BUILD_TOP)/$(NAME)
|
|
cp -r $^ $(SW_ROOT)/test/e2e-v2/java-test-service/$(NAME)/target/$(NAME)-2.0.0.jar $(DOCKER_BUILD_TOP)/$(NAME)
|
|
docker buildx create --use --driver docker-container --name skywalking_test_service > /dev/null 2>&1 || true
|
|
docker buildx build $(PLATFORMS) $(LOAD_OR_PUSH) \
|
|
--no-cache \
|
|
--build-arg SERVICE_JAR="./$(NAME)-2.0.0.jar" \
|
|
--build-arg BASE_IMAGE=$(BASE_IMAGE) \
|
|
-t $(HUB)/$(NAME):$(TAG) \
|
|
-t $(HUB)/$(NAME):latest \
|
|
$(DOCKER_BUILD_TOP)/$(NAME)
|
|
docker buildx rm skywalking_test_service || true
|
|
endef |