| # 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 | |
| HUB ?= skywalking | |
| NAME ?= skywalking-java | |
| TAG ?= latest | |
| AGENT_PACKAGE ?= skywalking-agent | |
| CLI_VERSION ?= 0.13.0 # CLI version inside agent image should always use an Apache released artifact. | |
| .PHONY: build | |
| build: | |
| ./mvnw --batch-mode clean package -Dmaven.test.skip=true | |
| .PHONY: dist | |
| dist: build | |
| COPYFILE_DISABLE=1 tar czf apache-skywalking-java-agent-$(TAG).tgz --exclude '._*' --exclude .DS_Store $(AGENT_PACKAGE) | |
| gpg --armor --detach-sig apache-skywalking-java-agent-$(TAG).tgz | |
| shasum -a 512 apache-skywalking-java-agent-$(TAG).tgz > apache-skywalking-java-agent-$(TAG).tgz.sha512 | |
| # Docker build | |
| base.all := alpine java8 java11 java17 java21 java25 | |
| base.each = $(word 1, $@) | |
| base.image.alpine := alpine:3 | |
| base.image.java8 := eclipse-temurin:8-jre | |
| base.image.java11 := eclipse-temurin:11-jre | |
| base.image.java17 := eclipse-temurin:17-jre | |
| base.image.java21 := eclipse-temurin:21-jre | |
| base.image.java25 := eclipse-temurin:25-jre | |
| docker.%: PLATFORMS = | |
| docker.%: LOAD_OR_PUSH = --load | |
| docker.push.%: PLATFORMS = --platform linux/amd64,linux/arm64 | |
| docker.push.%: LOAD_OR_PUSH = --push | |
| .PHONY: $(base.all) | |
| $(base.all:%=docker.%): BASE_IMAGE=$($(base.each:docker.%=base.image.%)) | |
| $(base.all:%=docker.%): FINAL_TAG=$(TAG)-$(base.each:docker.%=%) | |
| $(base.all:%=docker.push.%): BASE_IMAGE=$($(base.each:docker.push.%=base.image.%)) | |
| $(base.all:%=docker.push.%): FINAL_TAG=$(TAG)-$(base.each:docker.push.%=%) | |
| $(base.all:%=docker.%) $(base.all:%=docker.push.%): skywalking-agent | |
| docker buildx create --use --driver docker-container --name skywalking_main > /dev/null 2>&1 || true | |
| docker buildx build $(PLATFORMS) $(LOAD_OR_PUSH) \ | |
| --no-cache \ | |
| --build-arg BASE_IMAGE=$(BASE_IMAGE) \ | |
| --build-arg DIST=$(AGENT_PACKAGE) \ | |
| --build-arg SKYWALKING_CLI_VERSION=$(CLI_VERSION) \ | |
| . -t $(HUB)/$(NAME):$(FINAL_TAG) | |
| docker buildx rm skywalking_main || true | |
| .PHONY: docker docker.push | |
| docker: $(base.all:%=docker.%) | |
| docker.push: $(base.all:%=docker.push.%) |