This is an automated email from the ASF dual-hosted git repository. luchunliang pushed a commit to branch branch-1.9 in repository https://gitbox.apache.org/repos/asf/inlong.git
commit 56286d00e3ab891500f6dbe9a7725fe3a01c3eb5 Author: 卢春亮 <946240...@qq.com> AuthorDate: Thu Sep 21 10:42:39 2023 +0800 [INLONG-8942][Distribution] Support merging multiple module jars to reduce distribution package size (#8943) --- inlong-agent/bin/agent.sh | 6 ++ inlong-audit/bin/proxy-start.sh | 6 ++ inlong-audit/bin/store-start.sh | 6 ++ inlong-dataproxy/bin/dataproxy-start.sh | 6 ++ inlong-distribution/pom.xml | 18 +++++- .../script/backup_module_dependencys.sh | 74 ++++++++++++++++++++++ .../script/copy_module_dependencys.sh | 36 +++++++++++ .../script/prepare_module_dependencys.sh | 31 +++++++++ inlong-manager/manager-web/bin/startup.sh | 6 ++ inlong-tubemq/bin/env.sh | 6 ++ inlong-tubemq/tubemq-manager/bin/start-manager.sh | 6 ++ 11 files changed, 200 insertions(+), 1 deletion(-) diff --git a/inlong-agent/bin/agent.sh b/inlong-agent/bin/agent.sh index 60f827af69..480b55a219 100755 --- a/inlong-agent/bin/agent.sh +++ b/inlong-agent/bin/agent.sh @@ -18,6 +18,12 @@ BASE_DIR=$(dirname $0)/.. +# Prepare common dependency +ROOT_DIR=$BASE_DIR/.. +if [ -e $ROOT_DIR/bin/prepare_module_dependencys.sh ]; then + $ROOT_DIR/bin/prepare_module_dependencys.sh ./inlong-agent/lib +fi + source "${BASE_DIR}"/bin/agent-env.sh CONSOLE_OUTPUT_FILE="${LOG_DIR}/agent-out.log" diff --git a/inlong-audit/bin/proxy-start.sh b/inlong-audit/bin/proxy-start.sh index 47460ea9aa..0bd6e25879 100644 --- a/inlong-audit/bin/proxy-start.sh +++ b/inlong-audit/bin/proxy-start.sh @@ -30,6 +30,12 @@ BASE_DIR=$( # shellcheck disable=SC2164 cd "$BASE_DIR" +# Prepare common dependency +ROOT_DIR=$BASE_DIR/.. +if [ -e $ROOT_DIR/bin/prepare_module_dependencys.sh ]; then + $ROOT_DIR/bin/prepare_module_dependencys.sh ./inlong-audit/lib +fi + error() { local msg=$1 local exit_code=$2 diff --git a/inlong-audit/bin/store-start.sh b/inlong-audit/bin/store-start.sh index 2b048e5602..002b7c0f7e 100644 --- a/inlong-audit/bin/store-start.sh +++ b/inlong-audit/bin/store-start.sh @@ -31,6 +31,12 @@ BASE_DIR=$(dirname $SCRIPT_DIR) cd "$BASE_DIR" cd ../ +# Prepare common dependency +ROOT_DIR=$BASE_DIR/../.. +if [ -e $ROOT_DIR/bin/prepare_module_dependencys.sh ]; then + $ROOT_DIR/bin/prepare_module_dependencys.sh ./inlong-audit/lib +fi + PID=$(ps -ef | grep "audit-store" | grep -v grep | awk '{ print $2}') LOG_DIR="${BASE_DIR}/logs" diff --git a/inlong-dataproxy/bin/dataproxy-start.sh b/inlong-dataproxy/bin/dataproxy-start.sh index c16aff658c..a7aa2df133 100755 --- a/inlong-dataproxy/bin/dataproxy-start.sh +++ b/inlong-dataproxy/bin/dataproxy-start.sh @@ -21,6 +21,12 @@ cd "$(dirname "$0")"/../conf || exit basedir="$(pwd)" +# Prepare common dependency +ROOT_DIR=$basedir/../.. +if [ -e $ROOT_DIR/bin/prepare_module_dependencys.sh ]; then + $ROOT_DIR/bin/prepare_module_dependencys.sh ./inlong-dataproxy/lib +fi + error() { local msg=$1 local exit_code=$2 diff --git a/inlong-distribution/pom.xml b/inlong-distribution/pom.xml index 548ab7ab8a..1d3f404da5 100644 --- a/inlong-distribution/pom.xml +++ b/inlong-distribution/pom.xml @@ -70,7 +70,23 @@ </execution> </executions> </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <version>3.1.0</version> + <configuration> + <executable>${basedir}/script/backup_module_dependencys.sh</executable> + </configuration> + <executions> + <execution> + <id>uncompress</id> + <goals> + <goal>exec</goal> + </goals> + <phase>install</phase> + </execution> + </executions> + </plugin> </plugins> </build> - </project> diff --git a/inlong-distribution/script/backup_module_dependencys.sh b/inlong-distribution/script/backup_module_dependencys.sh new file mode 100755 index 0000000000..909def54b2 --- /dev/null +++ b/inlong-distribution/script/backup_module_dependencys.sh @@ -0,0 +1,74 @@ +#!/bin/bash +# +# +# 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. +# +cd "$(dirname "$0")"/../ || exit + +filelist() { + rm -fr $1/dependencys.txt + for file in $1/* + do + if [[ -f $file ]]; then + if [[ $file == *".jar" ]]; then + filename=$(basename "$file") + echo $filename >> $1/dependencys.txt + fi + fi + done +} + +# Get the current version for InLong +find_gz_file=`ls -l ./target/*bin.tar.gz |awk '{print $9}'` +gz_file=$(basename "$find_gz_file") +name_length=`expr length $gz_file` +version_length=$(expr $name_length \- 15 \- 10) +project_version=`expr substr $gz_file 15 $version_length` +projectpath="./target/apache-inlong-${project_version}-bin/apache-inlong-${project_version}" + +# Generate the file "dependencys.txt" +filelist "./$projectpath/inlong-agent/lib" +filelist "./$projectpath/inlong-dataproxy/lib" +filelist "./$projectpath/inlong-manager/lib" +filelist "./$projectpath/inlong-tubemq-server/lib" +filelist "./$projectpath/inlong-tubemq-manager/lib" +filelist "./$projectpath/inlong-audit/lib" + +# Move every module jar file to same lib directory +mkdir -p $projectpath/lib +mv $projectpath/inlong-agent/lib/*.jar $projectpath/lib/ +mv $projectpath/inlong-dataproxy/lib/*.jar $projectpath/lib/ +mv $projectpath/inlong-manager/lib/*.jar $projectpath/lib/ +mv $projectpath/inlong-tubemq-server/lib/*.jar $projectpath/lib/ +mv $projectpath/inlong-tubemq-manager/lib/*.jar $projectpath/lib/ +mv $projectpath/inlong-audit/lib/*.jar $projectpath/lib/ + +# Copy the file "copy_module_dependencys.sh" to bin directory +cp ./script/copy_module_dependencys.sh $projectpath/bin/ +chmod 755 $projectpath/bin/copy_module_dependencys.sh + +# Copy the file "prepare_module_dependencys.sh" to bin directory +cp ./script/prepare_module_dependencys.sh $projectpath/bin/ +chmod 755 $projectpath/bin/prepare_module_dependencys.sh + +# Package InLong version file +lastname=$(basename "$projectpath") +cd $projectpath/.. +tar cvf $lastname-bin.tar $lastname +gzip $lastname-bin.tar +mv $lastname-bin.tar.gz ../ diff --git a/inlong-distribution/script/copy_module_dependencys.sh b/inlong-distribution/script/copy_module_dependencys.sh new file mode 100755 index 0000000000..a6b2abae27 --- /dev/null +++ b/inlong-distribution/script/copy_module_dependencys.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# +# +# 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. +# +cd "$(dirname "$0")"/../ || exit + +copyfile() { + for line in $(cat "$1/dependencys.txt"); do + cp "./lib/$line" $1/ + done +} + +# Copy the jar files in dependencys.txt to every module directory +copyfile "./inlong-agent/lib" +copyfile "./inlong-dataproxy/lib" +copyfile "./inlong-manager/lib" +copyfile "./inlong-tubemq-server/lib" +copyfile "./inlong-tubemq-manager/lib" +copyfile "./inlong-audit/lib" +rm -fr ./lib diff --git a/inlong-distribution/script/prepare_module_dependencys.sh b/inlong-distribution/script/prepare_module_dependencys.sh new file mode 100755 index 0000000000..13a73cf6e1 --- /dev/null +++ b/inlong-distribution/script/prepare_module_dependencys.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# +# +# 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. +# +cd "$(dirname "$0")"/../ || exit + +jar_file_num=`ls -l $1 |grep jar |wc -l` + +if [ $jar_file_num -eq 0 ]; then + if [ -e $1/dependencys.txt ]; then + for line in $(cat "$1/dependencys.txt"); do + cp "./lib/$line" $1/ + done + fi +fi diff --git a/inlong-manager/manager-web/bin/startup.sh b/inlong-manager/manager-web/bin/startup.sh index 8b4651f0e9..2204077a11 100755 --- a/inlong-manager/manager-web/bin/startup.sh +++ b/inlong-manager/manager-web/bin/startup.sh @@ -43,6 +43,12 @@ BIN_PATH=$( pwd ) +# Prepare common dependency +ROOT_DIR=$BIN_PATH/../.. +if [ -e $ROOT_DIR/bin/prepare_module_dependencys.sh ]; then + $ROOT_DIR/bin/prepare_module_dependencys.sh ./inlong-manager/lib +fi + # Enter the root directory path # shellcheck disable=SC2164 cd "$BIN_PATH" diff --git a/inlong-tubemq/bin/env.sh b/inlong-tubemq/bin/env.sh index aabac44f80..cf0590bf5c 100755 --- a/inlong-tubemq/bin/env.sh +++ b/inlong-tubemq/bin/env.sh @@ -26,6 +26,12 @@ else export JAVA="$JAVA_HOME/bin/java" fi +# Prepare common dependency +ROOT_DIR=$BASE_DIR/.. +if [ -e $ROOT_DIR/bin/prepare_module_dependencys.sh ]; then + $ROOT_DIR/bin/prepare_module_dependencys.sh ./inlong-tubemq-server/lib +fi + tubemq_home=$BASE_DIR export CLASSPATH=$CLASSPATH:$BASE_DIR/conf:$(ls $BASE_DIR/lib/*.jar | tr '\n' :) diff --git a/inlong-tubemq/tubemq-manager/bin/start-manager.sh b/inlong-tubemq/tubemq-manager/bin/start-manager.sh index e48ed46679..9157face6d 100644 --- a/inlong-tubemq/tubemq-manager/bin/start-manager.sh +++ b/inlong-tubemq/tubemq-manager/bin/start-manager.sh @@ -18,6 +18,12 @@ base_dir=$(dirname $0) +# Prepare common dependency +ROOT_DIR=$base_dir/../.. +if [ -e $ROOT_DIR/bin/prepare_module_dependencys.sh ]; then + $ROOT_DIR/bin/prepare_module_dependencys.sh ./inlong-tubemq-manager/lib +fi + DAEMON_NAME=${DAEMON_NAME:-"tubemq-manager"} LOG_DIR=${LOG_DIR:-"$base_dir/../logs"} CONF_DIR=${CONF_DIR:-"$base_dir/../conf"}