Browse Source

feat(build): add trimpath for kuiperd and plugin build

ngjaying 4 years ago
parent
commit
d135551698

+ 3 - 3
.ci/Dockerfile-plugins

@@ -17,7 +17,7 @@ RUN set -e -u -x \
     && for lib in $(cat etc/$PLUGIN_TYPE/$PLUGIN_NAME.json | jq -r ".libs[]"); do go get $lib; done \
     && case $PLUGIN_NAME in \
          influxdb ) \
-           go build --buildmode=plugin -tags plugins -o plugins/$PLUGIN_TYPE/$PLUGIN_NAME/$PLUGIN_NAME@$VERSION.so plugins/$PLUGIN_TYPE/$PLUGIN_NAME/$PLUGIN_NAME.go \
+           go build -trimpath --buildmode=plugin -tags plugins -o plugins/$PLUGIN_TYPE/$PLUGIN_NAME/$PLUGIN_NAME@$VERSION.so plugins/$PLUGIN_TYPE/$PLUGIN_NAME/$PLUGIN_NAME.go \
            ;; \
          tdengine ) \
            if [ "$(uname -m)" = "x86_64" ]; then \
@@ -28,10 +28,10 @@ RUN set -e -u -x \
            fi; \
            tar -zxvf /tmp/TDengine-client-2.0.6.0.tar.gz \
            && cd TDengine-client-2.0.6.0 && ./install_client.sh && cd - \
-           && go build --buildmode=plugin -tags plugins -o plugins/$PLUGIN_TYPE/$PLUGIN_NAME/$PLUGIN_NAME@$VERSION.so plugins/$PLUGIN_TYPE/$PLUGIN_NAME/$PLUGIN_NAME.go \
+           && go build -trimpath --buildmode=plugin -tags plugins -o plugins/$PLUGIN_TYPE/$PLUGIN_NAME/$PLUGIN_NAME@$VERSION.so plugins/$PLUGIN_TYPE/$PLUGIN_NAME/$PLUGIN_NAME.go \
            ;; \
          * ) \
-           go build --buildmode=plugin -o plugins/$PLUGIN_TYPE/$PLUGIN_NAME/$PLUGIN_NAME@$VERSION.so plugins/$PLUGIN_TYPE/$PLUGIN_NAME/*.go \
+           go build -trimpath --buildmode=plugin -o plugins/$PLUGIN_TYPE/$PLUGIN_NAME/$PLUGIN_NAME@$VERSION.so plugins/$PLUGIN_TYPE/$PLUGIN_NAME/*.go \
            ;; \
        esac \
     && if [ -f "etc/$PLUGIN_TYPE/$PLUGIN_NAME.yaml" ]; then cp etc/$PLUGIN_TYPE/$PLUGIN_NAME.yaml plugins/$PLUGIN_TYPE/$PLUGIN_NAME; fi \

+ 2 - 2
.github/workflows/run_fvt_tests.yaml

@@ -42,8 +42,8 @@ jobs:
           run: |
             sudo apt update && sudo apt install pkg-config libczmq-dev -y
             make build_with_edgex
-            go build --buildmode=plugin -o plugins/sources/Zmq.so plugins/sources/zmq/zmq.go
-            go build --buildmode=plugin -o plugins/functions/Image.so plugins/functions/image/*.go
+            go build -trimpath --buildmode=plugin -o plugins/sources/Zmq.so plugins/sources/zmq/zmq.go
+            go build -trimpath --buildmode=plugin -o plugins/functions/Image.so plugins/functions/image/*.go
         - name: run edgex && emqx && kuiper
           run: |
             sudo ./fvt_scripts/setup_env.sh

+ 4 - 4
Makefile

@@ -49,10 +49,10 @@ build_prepare:
 build_without_edgex: build_prepare
 	@if [ ! -z $(GOOS) ] && [ ! -z $(GOARCH) ] && [ $(CGO_ENABLED) == 0 ];then \
 		GO111MODULE=on GOOS=$(GOOS) GOARCH=$(GOARCH) CGO_ENABLED=0 go build -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -o kuiper xstream/cli/main.go; \
-		GO111MODULE=on GOOS=$(GOOS) GOARCH=$(GOARCH) CGO_ENABLED=0 go build -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -o kuiperd xstream/server/main.go; \
+		GO111MODULE=on GOOS=$(GOOS) GOARCH=$(GOARCH) CGO_ENABLED=0 go build -trimpath -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -o kuiperd xstream/server/main.go; \
 	else \
 		GO111MODULE=on CGO_ENABLED=1 go build -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -o kuiper xstream/cli/main.go; \
-		GO111MODULE=on CGO_ENABLED=1 go build -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -o kuiperd xstream/server/main.go; \
+		GO111MODULE=on CGO_ENABLED=1 go build -trimpath -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -o kuiperd xstream/server/main.go; \
 	fi
 	@if [ ! -z $$(which upx) ] && [ "$$(uname -m)" != "aarch64" ]; then upx ./kuiper; upx ./kuiperd; fi
 	@mv ./kuiper ./kuiperd $(BUILD_PATH)/$(PACKAGE_NAME)/bin
@@ -66,10 +66,10 @@ pkg_without_edgex: build_without_edgex
 build_with_edgex: build_prepare
 	@if [ ! -z $(GOOS) ] && [ ! -z $(GOARCH) ] && [ $(CGO_ENABLED) == 0 ];then \
 		GO111MODULE=on GOOS=$(GOOS) GOARCH=$(GOARCH) CGO_ENABLED=0 go build -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -tags edgex -o kuiper xstream/cli/main.go; \
-		GO111MODULE=on GOOS=$(GOOS) GOARCH=$(GOARCH) CGO_ENABLED=0 go build -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -tags edgex -o kuiperd xstream/server/main.go; \
+		GO111MODULE=on GOOS=$(GOOS) GOARCH=$(GOARCH) CGO_ENABLED=0 go build -trimpath -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -tags edgex -o kuiperd xstream/server/main.go; \
 	else \
 		GO111MODULE=on CGO_ENABLED=1 go build -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -tags edgex -o kuiper xstream/cli/main.go; \
-		GO111MODULE=on CGO_ENABLED=1 go build -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -tags edgex -o kuiperd xstream/server/main.go; \
+		GO111MODULE=on CGO_ENABLED=1 go build -trimpath -ldflags="-s -w -X main.Version=$(VERSION) -X main.LoadFileType=relative" -tags edgex -o kuiperd xstream/server/main.go; \
 	fi
 	@if [ ! -z $$(which upx) ] && [ "$$(uname -m)" != "aarch64" ]; then upx ./kuiper; upx ./kuiperd; fi
 	@mv ./kuiper ./kuiperd $(BUILD_PATH)/$(PACKAGE_NAME)/bin

+ 1 - 1
deploy/packages/deb/debian/rules

@@ -17,7 +17,7 @@ PKG_VSN ?= develop
 ## the generate command EXECUTES in rel/
 build:
 	GO111MODULE=on CGO_ENABLED=1 go build -ldflags="-s -w -X main.Version=$(PKG_VSN) -X main.LoadFileType=absolute" -o kuiper xstream/cli/main.go
-	GO111MODULE=on CGO_ENABLED=1 go build -ldflags="-s -w -X main.Version=$(PKG_VSN) -X main.LoadFileType=absolute" -o kuiperd xstream/server/main.go
+	GO111MODULE=on CGO_ENABLED=1 go build -trimpath -ldflags="-s -w -X main.Version=$(PKG_VSN) -X main.LoadFileType=absolute" -o kuiperd xstream/server/main.go
 
 clean:
 	dh_clean

+ 1 - 1
deploy/packages/rpm/kuiper.spec

@@ -26,7 +26,7 @@ A lightweight IoT edge analytics software
 %build
 cd %{_code_source}
 GO111MODULE=on CGO_ENABLED=1 go build -ldflags="-s -w -X main.Version=%{_version}-%{_release} -X main.LoadFileType=absolute" -o %{_code_source}/kuiper %{_code_source}/xstream/cli/main.go
-GO111MODULE=on CGO_ENABLED=1 go build -ldflags="-s -w -X main.Version=%{_version}-%{_release} -X main.LoadFileType=absolute" -o %{_code_source}/kuiperd %{_code_source}/xstream/server/main.go
+GO111MODULE=on CGO_ENABLED=1 go build -trimpath -ldflags="-s -w -X main.Version=%{_version}-%{_release} -X main.LoadFileType=absolute" -o %{_code_source}/kuiperd %{_code_source}/xstream/server/main.go
 cd -
 
 %install

+ 1 - 1
docs/en_US/extension/function.md

@@ -57,7 +57,7 @@ It is a best practice to combine all related functions in a plugin to simplify t
 Build the implemented function as a go plugin and make sure the output so file resides in the plugins/functions folder.
 
 ```bash
-go build --buildmode=plugin -o plugins/functions/MyFunction.so plugins/functions/my_function.go
+go build -trimpath --buildmode=plugin -o plugins/functions/MyFunction.so plugins/functions/my_function.go
 ```
 
 ### Register multiple functions

+ 2 - 1
docs/en_US/extension/overview.md

@@ -35,9 +35,10 @@ A typical environment for developing plugins is to put the plugin and Kuiper in
 2. Create the plugin implementation file inside plugins/sources or plugin/sinks or plugin/functions according to what extension type is developing.
 3. Build the file as plugin into the same folder. The build command is typically like:
 ```bash
-go build --buildmode=plugin -o plugins/sources/MySource.so plugins/sources/my_source.go
+go build -trimpath --buildmode=plugin -o plugins/sources/MySource.so plugins/sources/my_source.go
 ```
 
+Notice that, the `-trimpath` build flag is required if using the prebuilte kuiper or kuiper docker image because the kuiperd is also built with the flag to improve build reproducibility.
 
 ### Plugin development
 The development of plugins is to implement a specific interface according to the plugin type and export the implementation with a specific name. There are two types of exported symbol supported:

+ 1 - 1
docs/en_US/extension/sink.md

@@ -49,7 +49,7 @@ The [Memory Sink](../../../plugins/sinks/memory.go) is a good example.
 Build the implemented sink as a go plugin and make sure the output so file resides in the plugins/sinks folder.
 
 ```bash
-go build --buildmode=plugin -o plugins/sinks/MySink.so plugins/sinks/my_sink.go
+go build -trimpath --buildmode=plugin -o plugins/sinks/MySink.so plugins/sinks/my_sink.go
 ```
 
 ### Usage

+ 1 - 1
docs/en_US/extension/source.md

@@ -69,7 +69,7 @@ There are 2 common configuration fields.
 Build the implemented source as a go plugin and make sure the output so file resides in the plugins/sources folder.
 
 ```bash
-go build --buildmode=plugin -o plugins/sources/MySource.so plugins/sources/my_source.go
+go build -trimpath --buildmode=plugin -o plugins/sources/MySource.so plugins/sources/my_source.go
 ```
 
 ### Usage

+ 3 - 3
docs/en_US/plugins/plugins_tutorial.md

@@ -167,7 +167,7 @@ Developers can locally compile Kuiper and the plugin for debugging, which steps
     1. Run `go mod edit -replace github.com/emqx/kuiper=$kuiperPath` under the plugin project, make the Kuiper dependence point to the local Kuiper, and then please replace the download directory of step 1 by $kuiperPath, the same below.
    2. Compile the plugin so to the directory of Kuiper plugin
    ```go
-   go build --buildmode=plugin -o $kuiperPath/_build/$build/plugins/sinks/Mysql@v1.0.0.so sinks/mysql.go
+   go build -trimpath --buildmode=plugin -o $kuiperPath/_build/$build/plugins/sinks/Mysql@v1.0.0.so sinks/mysql.go
    ```
 
 ### Docker compile
@@ -185,7 +185,7 @@ Kuiper provides different docker images for different purpose. The development d
     -- In docker instance
     # cd /home/samplePlugin
     # go mod edit -replace github.com/emqx/kuiper=/go/kuiper
-    # go build --buildmode=plugin -o /home/samplePlugin/target/plugins/sinks/Mysql@v1.0.0.so sinks/mysql.go
+    # go build -trimpath --buildmode=plugin -o /home/samplePlugin/target/plugins/sinks/Mysql@v1.0.0.so sinks/mysql.go
     ```
 You can use below sample shell script in your plugin project to automatically build and package the plugins. Please modify the variables at the beginning of the script to meet the requirements of different environments.
 
@@ -199,7 +199,7 @@ export VERSION=0.0.1
 
 go mod edit -replace github.com/emqx/kuiper=$KUIPER_SOURCE
 
-go build --buildmode=plugin -o $PLUGIN_TARGET/sinks/Mysql@v$VERSION.so sinks/mysql.go
+go build -trimpath --buildmode=plugin -o $PLUGIN_TARGET/sinks/Mysql@v$VERSION.so sinks/mysql.go
 
 ## zip the output
 mkdir $ZIP_TARGET/sinks

+ 1 - 1
docs/en_US/plugins/sinks/file.md

@@ -6,7 +6,7 @@ The sink is used for saving analysis result into a specified file.
 
 ```shell
 # cd $kuiper_src
-# go build --buildmode=plugin -o plugins/sinks/File.so plugins/sinks/file/file.go
+# go build -trimpath --buildmode=plugin -o plugins/sinks/File.so plugins/sinks/file/file.go
 # cp plugins/sinks/File.so $kuiper_install/plugins/sinks
 ```
 

+ 1 - 1
docs/en_US/plugins/sinks/image.md

@@ -6,7 +6,7 @@ Sink is used to save the picture to the specified folder.
 
 ```shell
 # cd $kuiper_src
-# go build --buildmode=plugin -o plugins/sinks/Image.so plugins/sinks/image/image.go
+# go build -trimpath --buildmode=plugin -o plugins/sinks/Image.so plugins/sinks/image/image.go
 # cp plugins/sinks/Image.so $kuiper_install/plugins/sinks
 ```
 

+ 1 - 1
docs/en_US/plugins/sinks/influx.md

@@ -11,7 +11,7 @@ Please make following update before compile the plugin,
 
 ```shell
 # cd $kuiper_src
-# go build --buildmode=plugin -o plugins/sinks/Influx.so plugins/sinks/influx/influx.go
+# go build -trimpath --buildmode=plugin -o plugins/sinks/Influx.so plugins/sinks/influx/influx.go
 # zip influx.zip plugins/sinks/Influx.so
 # cp influx.zip /root/tomcat_path/webapps/ROOT/
 # bin/kuiper create plugin sink influx -f /tmp/influxPlugin.txt

+ 1 - 1
docs/en_US/plugins/sinks/tdengine.md

@@ -17,7 +17,7 @@ require (
 
 ```shell
 go mod edit -replace github.com/emqx/kuiper=/$kuiper
-go build --buildmode=plugin -o /$kuiper/plugins/sinks/Tdengine@v1.0.0.so /$kuiper/plugins/sinks/tdengine/tdengine.go
+go build -trimpath --buildmode=plugin -o /$kuiper/plugins/sinks/Tdengine@v1.0.0.so /$kuiper/plugins/sinks/tdengine/tdengine.go
 ```
 ### Install plugin
 Since the operation of the tdengine plug-in depends on the tdengine client, for the convenience of users, the tdengine client will be downloaded when the plug-in is installed. However, the tdengine client version corresponds to the server version one-to-one, which is not compatible with each other, so the user must inform the tdengine server version used.

+ 1 - 1
docs/en_US/plugins/sinks/zmq.md

@@ -6,7 +6,7 @@ The sink will publish the result into a Zero Mq topic.
 
 ```shell
 # cd $kuiper_src
-# go build --buildmode=plugin -o plugins/sinks/Zmq.so plugins/sinks/zmq/zmq.go
+# go build -trimpath --buildmode=plugin -o plugins/sinks/Zmq.so plugins/sinks/zmq/zmq.go
 # cp plugins/sinks/Zmq.so $kuiper_install/plugins/sinks
 ```
 

+ 1 - 1
docs/en_US/plugins/sources/random.md

@@ -6,7 +6,7 @@ he source will generate random inputs with a specified pattern.
 
 ```shell
 # cd $kuiper_src
-# go build --buildmode=plugin -o plugins/sources/Random.so plugins/sources/random/random.go
+# go build -trimpath --buildmode=plugin -o plugins/sources/Random.so plugins/sources/random/random.go
 # cp plugins/sources/Random.so $kuiper_install/plugins/sources
 ```
 

+ 1 - 1
docs/en_US/plugins/sources/zmq.md

@@ -6,7 +6,7 @@ The source will subscribe to a Zero Mq topic to import the messages into kuiper
 
 ```shell
 # cd $kuiper_src
-# go build --buildmode=plugin -o plugins/sources/Zmq.so plugins/sources/zmq/zmq.go
+# go build -trimpath --buildmode=plugin -o plugins/sources/Zmq.so plugins/sources/zmq/zmq.go
 # cp plugins/sources/Zmq.so $kuiper_install/plugins/sources
 ```
 

+ 1 - 1
docs/zh_CN/extension/function.md

@@ -56,7 +56,7 @@ var(
 将实现的函数构建为 go 插件,并确保输出 so 文件位于 plugins/functions 文件夹中。
 
 ```bash
-go build --buildmode=plugin -o plugins/functions/MyFunction.so plugins/functions/my_function.go
+go build -trimpath --buildmode=plugin -o plugins/functions/MyFunction.so plugins/functions/my_function.go
 ```
 
 ### 注册多个函数

+ 1 - 1
docs/zh_CN/extension/sink.md

@@ -50,7 +50,7 @@ func MySink() api.Sink {
 将实现的 Sink (目标)构建为 go 插件,并确保输出的 so 文件位于 plugins/sinks 文件夹中。
 
 ```bash
-go build --buildmode=plugin -o plugins/sinks/MySink.so plugins/sinks/my_sink.go
+go build -trimpath --buildmode=plugin -o plugins/sinks/MySink.so plugins/sinks/my_sink.go
 ```
 
 ### 使用

+ 1 - 1
docs/zh_CN/extension/source.md

@@ -62,7 +62,7 @@ Kuiper 扩展支持配置系统自动读取 yaml 文件中的配置,并将其
 将已实现的源构建为 go 插件,并确保输出的 so 文件位于 plugins/sources 文件夹中。
 
 ```bash
-go build --buildmode=plugin -o plugins/sources/MySource.so plugins/sources/my_source.go
+go build -trimpath --buildmode=plugin -o plugins/sources/MySource.so plugins/sources/my_source.go
 ```
 
 ### 使用

+ 3 - 3
docs/zh_CN/plugins/plugins_tutorial.md

@@ -167,7 +167,7 @@ require (
     1. 在插件项目下,运行 `go mod edit -replace github.com/emqx/kuiper=$kuiperPath`,使得 Kuiper 依赖指向本地 Kuiper,请替换 $kuiperPath 到步骤1下载目录,下同。
    2. 编译插件 so 到 Kuiper 插件目录下
    ```go
-    go build --buildmode=plugin -o $kuiperPath/_build/$build/plugins/sinks/Mysql@v1.0.0.so sinks/mysql.go
+    go build -trimpath --buildmode=plugin -o $kuiperPath/_build/$build/plugins/sinks/Mysql@v1.0.0.so sinks/mysql.go
    ```
 
 ### Docker 编译
@@ -185,7 +185,7 @@ require (
     -- In docker instance
     # cd /home/samplePlugin
     # go mod edit -replace github.com/emqx/kuiper=/go/kuiper
-    # go build --buildmode=plugin -o /home/samplePlugin/target/plugins/sinks/Mysql@v1.0.0.so sinks/mysql.go
+    # go build -trimpath --buildmode=plugin -o /home/samplePlugin/target/plugins/sinks/Mysql@v1.0.0.so sinks/mysql.go
     ```
 
 在插件项目中可以使用如下 shell 脚本自动编译及打包插件。修改脚本开头的参数以满足不同环境下的开发调试需求。
@@ -200,7 +200,7 @@ export VERSION=0.0.1
 
 go mod edit -replace github.com/emqx/kuiper=$KUIPER_SOURCE
 
-go build --buildmode=plugin -o $PLUGIN_TARGET/sinks/Mysql@v$VERSION.so sinks/mysql.go
+go build -trimpath --buildmode=plugin -o $PLUGIN_TARGET/sinks/Mysql@v$VERSION.so sinks/mysql.go
 
 ## zip the output
 mkdir $ZIP_TARGET/sinks

+ 1 - 1
docs/zh_CN/plugins/sinks/file.md

@@ -6,7 +6,7 @@
 
 ```shell
 # cd $kuiper_src
-# go build --buildmode=plugin -o plugins/sinks/File.so plugins/sinks/file/file.go
+# go build -trimpath --buildmode=plugin -o plugins/sinks/File.so plugins/sinks/file/file.go
 # cp plugins/sinks/File.so $kuiper_install/plugins/sinks
 ```
 

+ 1 - 1
docs/zh_CN/plugins/sinks/image.md

@@ -6,7 +6,7 @@
 
 ```shell
 # cd $kuiper_src
-# go build --buildmode=plugin -o plugins/sinks/Image.so plugins/sinks/image/image.go
+# go build -trimpath --buildmode=plugin -o plugins/sinks/Image.so plugins/sinks/image/image.go
 # cp plugins/sinks/Image.so $kuiper_install/plugins/sinks
 ```
 

+ 1 - 1
docs/zh_CN/plugins/sinks/influx.md

@@ -10,7 +10,7 @@
 
 ```shell
 # cd $kuiper_src
-# go build --buildmode=plugin -o plugins/sinks/InfluxDB.so plugins/sinks/influxdb/influxdb.go
+# go build -trimpath --buildmode=plugin -o plugins/sinks/InfluxDB.so plugins/sinks/influxdb/influxdb.go
 # zip influx.zip plugins/sinks/InfluxDB.so
 # cp influx.zip /root/tomcat_path/webapps/ROOT/
 # bin/kuiper create plugin sink influx -f /tmp/influxPlugin.txt

+ 1 - 1
docs/zh_CN/plugins/sinks/tdengine.md

@@ -17,7 +17,7 @@ require (
 
 ```shell
 go mod edit -replace github.com/emqx/kuiper=/$kuiper
-go build --buildmode=plugin -o /$kuiper/plugins/sinks/Tdengine@v1.0.0.so /$kuiper/plugins/sinks/tdengine/tdengine.go
+go build -trimpath --buildmode=plugin -o /$kuiper/plugins/sinks/Tdengine@v1.0.0.so /$kuiper/plugins/sinks/tdengine/tdengine.go
 ```
 ### 安装插件
 由于 tdengine 插件的运行依赖于 tdengine 客户端,为了便于用户使用,安装插件时将下载 tdengine 客户端。但是 tdengine 客户端版本与其服务器版本一一对应,互不兼容,所以用户必须告知所用 tdengine 服务器版本。

+ 1 - 1
docs/zh_CN/plugins/sinks/zmq.md

@@ -6,7 +6,7 @@
 
 ```shell
 # cd $kuiper_src
-# go build --buildmode=plugin -o plugins/sinks/Zmq.so plugins/sinks/zmq/zmq.go
+# go build -trimpath --buildmode=plugin -o plugins/sinks/Zmq.so plugins/sinks/zmq/zmq.go
 # cp plugins/sinks/Zmq.so $kuiper_install/plugins/sinks
 ```
 

+ 1 - 1
docs/zh_CN/plugins/sources/random.md

@@ -6,7 +6,7 @@
 
 ```shell
 # cd $kuiper_src
-# go build --buildmode=plugin -o plugins/sources/Random.so plugins/sources/random/random.go
+# go build -trimpath --buildmode=plugin -o plugins/sources/Random.so plugins/sources/random/random.go
 # cp plugins/sources/Random.so $kuiper_install/plugins/sources
 ```
 

+ 1 - 1
docs/zh_CN/plugins/sources/zmq.md

@@ -6,7 +6,7 @@
 
 ```shell
 # cd $kuiper_src
-# go build --buildmode=plugin -o plugins/sources/Zmq.so plugins/sources/zmq/zmq.go
+# go build -trimpath --buildmode=plugin -o plugins/sources/Zmq.so plugins/sources/zmq/zmq.go
 # cp plugins/sources/Zmq.so $kuiper_install/plugins/sources
 ```
 

+ 2 - 2
fvt_scripts/prepare_plugins.sh

@@ -16,7 +16,7 @@ if [ -f "$FILE" ]; then
     echo "$FILE exists, not requried to build plugin."
 else
     echo "$FILE does not exist, will build the plugin."
-    go build --buildmode=plugin -o ../plugins/sources/Zmq.so ../plugins/sources/zmq/zmq.go
+    go build -trimpath --buildmode=plugin -o ../plugins/sources/Zmq.so ../plugins/sources/zmq/zmq.go
 fi
 
 mv ../plugins/sources/Zmq.so .
@@ -31,7 +31,7 @@ if [ -f "$FILE" ]; then
     echo "$FILE exists, not requried to build plugin."
 else
     echo "$FILE does not exist, will build the plugin."
-    go build --buildmode=plugin -o ../plugins/functions/Image.so ../plugins/functions/image/*.go
+    go build -trimpath --buildmode=plugin -o ../plugins/functions/Image.so ../plugins/functions/image/*.go
 fi
 
 mv ../plugins/functions/Image.so .