You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by sp...@apache.org on 2022/06/30 01:57:52 UTC

[apisix] branch master updated: ci: don't start unused service

This is an automated email from the ASF dual-hosted git repository.

spacewander pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git


The following commit(s) were added to refs/heads/master by this push:
     new c781376ce ci: don't start unused service
c781376ce is described below

commit c781376ce1d7340ba090cbc1d0f956ad1da564d6
Author: spacewander <sp...@gmail.com>
AuthorDate: Tue Jun 28 09:32:31 2022 +0800

    ci: don't start unused service
    
    Signed-off-by: spacewander <sp...@gmail.com>
---
 .github/workflows/build.yml                        |  62 +++++--
 .github/workflows/centos7-ci.yml                   |  34 +++-
 Makefile                                           |   1 -
 ci/init-last-test-service.sh                       |  30 +++
 ...init-service.sh => init-plugin-test-service.sh} |   9 -
 ...docker-compose.yml => docker-compose.first.yml} | 195 --------------------
 ci/pod/docker-compose.last.yml                     |  97 ++++++++++
 ci/pod/docker-compose.plugin.yml                   | 201 +++++++++++++++++++++
 ci/pod/kafka/kafka-server/env/common.env           |   9 +-
 .../kafka-server/env/{common.env => last.env}      |   0
 10 files changed, 406 insertions(+), 232 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 6834d8651..21d185cbe 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -67,6 +67,21 @@ jobs:
           echo "##[set-output name=version;]$(echo ${GITHUB_REF##*/})"
           echo "##[set-output name=fullname;]$(echo apache-apisix-${GITHUB_REF##*/}-src.tgz)"
 
+      - name: Extract test type
+        shell: bash
+        id: test_env
+        run: |
+          test_dir="${{ matrix.test_dir }}"
+          if [[ $test_dir =~ 't/plugin' ]]; then
+            echo "##[set-output name=type;]$(echo 'plugin')"
+          fi
+          if [[ $test_dir =~ 't/admin ' ]]; then
+            echo "##[set-output name=type;]$(echo 'first')"
+          fi
+          if [[ $test_dir =~ ' t/xrpc' ]]; then
+            echo "##[set-output name=type;]$(echo 'last')"
+          fi
+
       - name: Linux launch common services
         run: |
           make ci-env-up project_compose_ci=ci/pod/docker-compose.common.yml
@@ -82,32 +97,28 @@ jobs:
           rm -rf $(ls -1 --ignore=*.tgz --ignore=ci --ignore=t --ignore=utils --ignore=.github)
           tar zxvf ${{ steps.branch_env.outputs.fullname }}
 
-      - name: Build wasm code
-        if: matrix.os_name == 'linux_openresty'
+      - name: Start CI env (FIRST_TEST)
+        if: steps.test_env.outputs.type == 'first'
         run: |
-          export TINYGO_VER=0.20.0
-          wget https://github.com/tinygo-org/tinygo/releases/download/v${TINYGO_VER}/tinygo_${TINYGO_VER}_amd64.deb 2>/dev/null
-          sudo dpkg -i tinygo_${TINYGO_VER}_amd64.deb
-          cd t/wasm && find . -type f -name "*.go" | xargs -Ip tinygo build -o p.wasm -scheduler=none -target=wasi p
+          # launch deps env
+          make ci-env-up project_compose_ci=ci/pod/docker-compose.${{ steps.test_env.outputs.type }}.yml
 
-      - name: Build xDS library
+      - name: Start CI env (PLUGIN_TEST)
+        if: steps.test_env.outputs.type == 'plugin'
         run: |
-          cd t/xds-library
-          go build -o libxds.so -buildmode=c-shared main.go export.go
+          make ci-env-up project_compose_ci=ci/pod/docker-compose.${{ steps.test_env.outputs.type }}.yml
+          sudo ./ci/init-${{ steps.test_env.outputs.type }}-test-service.sh
 
-      - name: Linux Before install
-        run: sudo ./ci/${{ matrix.os_name }}_runner.sh before_install
-
-      - name: Start CI env
+      - name: Start CI env (LAST_TEST)
+        if: steps.test_env.outputs.type == 'last'
         run: |
           # generating SSL certificates for Kafka
           sudo keytool -genkeypair -keyalg RSA -dname "CN=127.0.0.1" -alias 127.0.0.1 -keystore ./ci/pod/kafka/kafka-server/selfsigned.jks -validity 365 -keysize 2048 -storepass changeit
-          # launch deps env
-          make ci-env-up
-          sudo ./ci/linux-ci-init-service.sh
+          make ci-env-up project_compose_ci=ci/pod/docker-compose.${{ steps.test_env.outputs.type }}.yml
+          sudo ./ci/init-${{ steps.test_env.outputs.type }}-test-service.sh
 
       - name: Start Dubbo Backend
-        if: matrix.os_name == 'linux_openresty'
+        if: matrix.os_name == 'linux_openresty' && steps.test_env.outputs.type == 'plugin'
         run: |
           sudo apt install -y maven
           cd t/lib/dubbo-backend
@@ -115,6 +126,23 @@ jobs:
           cd dubbo-backend-provider/target
           java -Djava.net.preferIPv4Stack=true -jar dubbo-demo-provider.one-jar.jar > /tmp/java.log &
 
+      - name: Build xDS library
+        if: steps.test_env.outputs.type == 'last'
+        run: |
+          cd t/xds-library
+          go build -o libxds.so -buildmode=c-shared main.go export.go
+
+      - name: Build wasm code
+        if: matrix.os_name == 'linux_openresty' && steps.test_env.outputs.type == 'last'
+        run: |
+          export TINYGO_VER=0.20.0
+          wget https://github.com/tinygo-org/tinygo/releases/download/v${TINYGO_VER}/tinygo_${TINYGO_VER}_amd64.deb 2>/dev/null
+          sudo dpkg -i tinygo_${TINYGO_VER}_amd64.deb
+          cd t/wasm && find . -type f -name "*.go" | xargs -Ip tinygo build -o p.wasm -scheduler=none -target=wasi p
+
+      - name: Linux Before install
+        run: sudo ./ci/${{ matrix.os_name }}_runner.sh before_install
+
       - name: Linux Install
         run: |
           sudo --preserve-env=OPENRESTY_VERSION \
diff --git a/.github/workflows/centos7-ci.yml b/.github/workflows/centos7-ci.yml
index 589e5ed69..b308c79fb 100644
--- a/.github/workflows/centos7-ci.yml
+++ b/.github/workflows/centos7-ci.yml
@@ -45,6 +45,21 @@ jobs:
       run: |
         echo "##[set-output name=version;]$(echo ${GITHUB_REF##*/})"
 
+    - name: Extract test type
+      shell: bash
+      id: test_env
+      run: |
+        test_dir="${{ matrix.test_dir }}"
+        if [[ $test_dir =~ 't/plugin' ]]; then
+          echo "##[set-output name=type;]$(echo 'plugin')"
+        fi
+        if [[ $test_dir =~ 't/admin ' ]]; then
+          echo "##[set-output name=type;]$(echo 'first')"
+        fi
+        if [[ $test_dir =~ ' t/xds-library' ]]; then
+          echo "##[set-output name=type;]$(echo 'last')"
+        fi
+
     - name: Linux launch common services
       run: |
         make ci-env-up project_compose_ci=ci/pod/docker-compose.common.yml
@@ -66,6 +81,7 @@ jobs:
         rm -rf $(ls -1 --ignore=apisix-build-tools --ignore=t --ignore=utils --ignore=ci --ignore=Makefile --ignore=rockspec)
 
     - name: Build xDS library
+      if: steps.test_env.outputs.type == 'last'
       run: |
         cd t/xds-library
         go build -o libxds.so -buildmode=c-shared main.go export.go
@@ -77,12 +93,24 @@ jobs:
         docker run -itd -v /home/runner/work/apisix/apisix:/apisix --env TEST_FILE_SUB_DIR="$TEST_FILE_SUB_DIR" --name centos7Instance --net="host" --dns 8.8.8.8 --dns-search apache.org docker.io/centos:7 /bin/bash
         # docker exec centos7Instance bash -c "cp -r /tmp/apisix ./"
 
-    - name: Run other docker containers for test
+    - name: Start CI env (FIRST_TEST)
+      if: steps.test_env.outputs.type == 'first'
+      run: |
+        make ci-env-up project_compose_ci=ci/pod/docker-compose.${{ steps.test_env.outputs.type }}.yml
+
+    - name: Start CI env (PLUGIN_TEST)
+      if: steps.test_env.outputs.type == 'plugin'
+      run: |
+        make ci-env-up project_compose_ci=ci/pod/docker-compose.${{ steps.test_env.outputs.type }}.yml
+        ./ci/init-${{ steps.test_env.outputs.type }}-test-service.sh
+
+    - name: Start CI env (LAST_TEST)
+      if: steps.test_env.outputs.type == 'last'
       run: |
         # generating SSL certificates for Kafka
         keytool -genkeypair -keyalg RSA -dname "CN=127.0.0.1" -alias 127.0.0.1 -keystore ./ci/pod/kafka/kafka-server/selfsigned.jks -validity 365 -keysize 2048 -storepass changeit
-        make ci-env-up
-        ./ci/linux-ci-init-service.sh
+        make ci-env-up project_compose_ci=ci/pod/docker-compose.${{ steps.test_env.outputs.type }}.yml
+        ./ci/init-${{ steps.test_env.outputs.type }}-test-service.sh
 
     - name: Install dependencies
       run: |
diff --git a/Makefile b/Makefile
index 989fe3714..6c82a6a94 100644
--- a/Makefile
+++ b/Makefile
@@ -24,7 +24,6 @@ SHELL := /bin/bash -o pipefail
 # Project basic setting
 VERSION                ?= master
 project_name           ?= apache-apisix
-project_compose_ci     ?= ci/pod/docker-compose.yml
 project_release_name   ?= $(project_name)-$(VERSION)-src
 
 
diff --git a/ci/init-last-test-service.sh b/ci/init-last-test-service.sh
new file mode 100755
index 000000000..f49d4a747
--- /dev/null
+++ b/ci/init-last-test-service.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env 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.
+#
+
+docker exec -i apache-apisix_kafka-server1_1 /opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper zookeeper-server1:2181 --replication-factor 1 --partitions 1 --topic test2
+docker exec -i apache-apisix_kafka-server1_1 /opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper zookeeper-server1:2181 --replication-factor 1 --partitions 3 --topic test3
+docker exec -i apache-apisix_kafka-server2_1 /opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper zookeeper-server2:2181 --replication-factor 1 --partitions 1 --topic test4
+docker exec -i apache-apisix_kafka-server1_1 /opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper zookeeper-server1:2181 --replication-factor 1 --partitions 1 --topic test-consumer
+
+# create messages for test-consumer
+for i in `seq 30`
+do
+    docker exec -i apache-apisix_kafka-server1_1 bash -c "echo "testmsg$i" | /opt/bitnami/kafka/bin/kafka-console-producer.sh --bootstrap-server 127.0.0.1:9092 --topic test-consumer"
+    echo "Produces messages to the test-consumer topic, msg: testmsg$i"
+done
+echo "Kafka service initialization completed"
diff --git a/ci/linux-ci-init-service.sh b/ci/init-plugin-test-service.sh
similarity index 85%
rename from ci/linux-ci-init-service.sh
rename to ci/init-plugin-test-service.sh
index 73477a5fe..5f4685023 100755
--- a/ci/linux-ci-init-service.sh
+++ b/ci/init-plugin-test-service.sh
@@ -19,15 +19,6 @@
 docker exec -i apache-apisix_kafka-server1_1 /opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper zookeeper-server1:2181 --replication-factor 1 --partitions 1 --topic test2
 docker exec -i apache-apisix_kafka-server1_1 /opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper zookeeper-server1:2181 --replication-factor 1 --partitions 3 --topic test3
 docker exec -i apache-apisix_kafka-server2_1 /opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper zookeeper-server2:2181 --replication-factor 1 --partitions 1 --topic test4
-docker exec -i apache-apisix_kafka-server1_1 /opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper zookeeper-server1:2181 --replication-factor 1 --partitions 1 --topic test-consumer
-
-# create messages for test-consumer
-for i in `seq 30`
-do
-    docker exec -i apache-apisix_kafka-server1_1 bash -c "echo "testmsg$i" | /opt/bitnami/kafka/bin/kafka-console-producer.sh --bootstrap-server 127.0.0.1:9092 --topic test-consumer"
-    echo "Produces messages to the test-consumer topic, msg: testmsg$i"
-done
-echo "Kafka service initialization completed"
 
 # prepare openwhisk env
 docker pull openwhisk/action-nodejs-v14:nightly
diff --git a/ci/pod/docker-compose.yml b/ci/pod/docker-compose.first.yml
similarity index 55%
rename from ci/pod/docker-compose.yml
rename to ci/pod/docker-compose.first.yml
index 68dab85c5..a13ad3cf1 100644
--- a/ci/pod/docker-compose.yml
+++ b/ci/pod/docker-compose.first.yml
@@ -18,95 +18,6 @@
 version: "3.8"
 
 services:
-  ## Redis
-  apisix_redis:
-    # The latest image is the latest stable version
-    image: redis:latest
-    restart: unless-stopped
-    ports:
-      - "6379:6379"
-    networks:
-      apisix_net:
-
-
-  ## keycloak
-  apisix_keycloak:
-    image: sshniro/keycloak-apisix:1.0.0
-    environment:
-      KEYCLOAK_USER: admin
-      KEYCLOAK_PASSWORD: 123456
-    restart: unless-stopped
-    ports:
-      - "8090:8080"
-      - "8443:8443"
-    networks:
-      apisix_net:
-
-
-  ## kafka-cluster
-  zookeeper-server1:
-    image: bitnami/zookeeper:3.6.0
-    env_file:
-      - ci/pod/kafka/zookeeper-server/env/common.env
-    restart: unless-stopped
-    ports:
-      - "2181:2181"
-    networks:
-      kafka_net:
-
-  zookeeper-server2:
-    image: bitnami/zookeeper:3.6.0
-    env_file:
-      - ci/pod/kafka/zookeeper-server/env/common.env
-    restart: unless-stopped
-    ports:
-      - "12181:12181"
-    networks:
-      kafka_net:
-
-  kafka-server1:
-    image: bitnami/kafka:2.8.1
-    env_file:
-      - ci/pod/kafka/kafka-server/env/common.env
-    environment:
-      KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper-server1:2181
-    restart: unless-stopped
-    ports:
-      - "9092:9092"
-      - "9093:9093"
-      - "9094:9094"
-    depends_on:
-      - zookeeper-server1
-      - zookeeper-server2
-    networks:
-      kafka_net:
-    volumes:
-      - ./ci/pod/kafka/kafka-server/kafka_jaas.conf:/opt/bitnami/kafka/config/kafka_jaas.conf:ro
-      - ./ci/pod/kafka/kafka-server/selfsigned.jks:/opt/bitnami/kafka/config/certs/kafka.keystore.jks:ro
-      - ./ci/pod/kafka/kafka-server/selfsigned.jks:/opt/bitnami/kafka/config/certs/kafka.truststore.jks:ro
-
-  kafka-server2:
-    image: bitnami/kafka:2.8.1
-    env_file:
-      - ci/pod/kafka/kafka-server/env/common.env
-    environment:
-      KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper-server2:2181
-    restart: unless-stopped
-    ports:
-      - "19092:9092"
-      - "19093:9093"
-      - "19094:9094"
-    depends_on:
-      - zookeeper-server1
-      - zookeeper-server2
-    networks:
-      kafka_net:
-    volumes:
-      - ./ci/pod/kafka/kafka-server/kafka_jaas.conf:/opt/bitnami/kafka/config/kafka_jaas.conf:ro
-      - ./ci/pod/kafka/kafka-server/selfsigned.jks:/opt/bitnami/kafka/config/certs/kafka.keystore.jks:ro
-      - ./ci/pod/kafka/kafka-server/selfsigned.jks:/opt/bitnami/kafka/config/certs/kafka.truststore.jks:ro
-
-
   ## Eureka
   eureka:
     image: bitinit/eureka
@@ -116,19 +27,6 @@ services:
     ports:
       - "8761:8761"
 
-
-  ## SkyWalking
-  skywalking:
-    image: apache/skywalking-oap-server:8.7.0-es6
-    restart: unless-stopped
-    ports:
-      - "1234:1234"
-      - "11800:11800"
-      - "12800:12800"
-    networks:
-      skywalk_net:
-
-
   ## Consul
   consul_1:
     image: consul:1.7
@@ -148,37 +46,6 @@ services:
     networks:
       consul_net:
 
-
-  ## HashiCorp Vault
-  vault:
-    image: vault:1.9.0
-    container_name: vault
-    restart: unless-stopped
-    ports:
-      - "8200:8200"
-    cap_add:
-      - IPC_LOCK
-    environment:
-      VAULT_DEV_ROOT_TOKEN_ID: root
-      VAULT_DEV_LISTEN_ADDRESS: 0.0.0.0:8200
-    command: [ "vault", "server", "-dev" ]
-    networks:
-      vault_net:
-
-
-  ## OpenLDAP
-  openldap:
-    image: bitnami/openldap:2.5.8
-    environment:
-      LDAP_ADMIN_USERNAME: amdin
-      LDAP_ADMIN_PASSWORD: adminpassword
-      LDAP_USERS: user01,user02
-      LDAP_PASSWORDS: password1,password2
-    ports:
-      - "1389:1389"
-      - "1636:1636"
-
-
   ## Nacos cluster
   nacos_auth:
     hostname: nacos1
@@ -368,69 +235,7 @@ services:
     networks:
       nacos_net:
 
-  rocketmq_namesrv:
-    image: apacherocketmq/rocketmq:4.6.0
-    container_name: rmqnamesrv
-    restart: unless-stopped
-    ports:
-      - "9876:9876"
-    command: sh mqnamesrv
-    networks:
-      rocketmq_net:
-
-  rocketmq_broker:
-    image: apacherocketmq/rocketmq:4.6.0
-    container_name: rmqbroker
-    restart: unless-stopped
-    ports:
-      - "10909:10909"
-      - "10911:10911"
-      - "10912:10912"
-    depends_on:
-      - rocketmq_namesrv
-    command: sh mqbroker -n rocketmq_namesrv:9876 -c ../conf/broker.conf
-    networks:
-      rocketmq_net:
-
-  # Open Policy Agent
-  opa:
-    image: openpolicyagent/opa:0.35.0
-    restart: unless-stopped
-    ports:
-      - 8181:8181
-    command: run -s /example.rego /echo.rego /data.json
-    volumes:
-      - type: bind
-        source: ./ci/pod/opa/example.rego
-        target: /example.rego
-      - type: bind
-        source: ./ci/pod/opa/echo.rego
-        target: /echo.rego
-      - type: bind
-        source: ./ci/pod/opa/data.json
-        target: /data.json
-    networks:
-      opa_net:
-
-  # Splunk HEC Logging Service
-  splunk:
-    image: splunk/splunk:8.2.3
-    restart: unless-stopped
-    ports:
-      - "18088:8088"
-    environment:
-      SPLUNK_PASSWORD: "ApacheAPISIX@666"
-      SPLUNK_START_ARGS: "--accept-license"
-      SPLUNK_HEC_TOKEN: "BD274822-96AA-4DA6-90EC-18940FB2414C"
-      SPLUNK_HEC_SSL: "False"
-
 
 networks:
-  apisix_net:
   consul_net:
-  kafka_net:
   nacos_net:
-  skywalk_net:
-  rocketmq_net:
-  vault_net:
-  opa_net:
diff --git a/ci/pod/docker-compose.last.yml b/ci/pod/docker-compose.last.yml
new file mode 100644
index 000000000..dbc835fde
--- /dev/null
+++ b/ci/pod/docker-compose.last.yml
@@ -0,0 +1,97 @@
+#
+# 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.
+#
+
+version: "3.8"
+
+services:
+  ## Redis
+  apisix_redis:
+    # The latest image is the latest stable version
+    image: redis:latest
+    restart: unless-stopped
+    ports:
+      - "6379:6379"
+    networks:
+      apisix_net:
+
+  ## kafka-cluster
+  zookeeper-server1:
+    image: bitnami/zookeeper:3.6.0
+    env_file:
+      - ci/pod/kafka/zookeeper-server/env/common.env
+    restart: unless-stopped
+    ports:
+      - "2181:2181"
+    networks:
+      kafka_net:
+
+  zookeeper-server2:
+    image: bitnami/zookeeper:3.6.0
+    env_file:
+      - ci/pod/kafka/zookeeper-server/env/common.env
+    restart: unless-stopped
+    ports:
+      - "12181:12181"
+    networks:
+      kafka_net:
+
+  kafka-server1:
+    image: bitnami/kafka:2.8.1
+    env_file:
+      - ci/pod/kafka/kafka-server/env/last.env
+    environment:
+      KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper-server1:2181
+    restart: unless-stopped
+    ports:
+      - "9092:9092"
+      - "9093:9093"
+      - "9094:9094"
+    depends_on:
+      - zookeeper-server1
+      - zookeeper-server2
+    networks:
+      kafka_net:
+    volumes:
+      - ./ci/pod/kafka/kafka-server/kafka_jaas.conf:/opt/bitnami/kafka/config/kafka_jaas.conf:ro
+      - ./ci/pod/kafka/kafka-server/selfsigned.jks:/opt/bitnami/kafka/config/certs/kafka.keystore.jks:ro
+      - ./ci/pod/kafka/kafka-server/selfsigned.jks:/opt/bitnami/kafka/config/certs/kafka.truststore.jks:ro
+
+  kafka-server2:
+    image: bitnami/kafka:2.8.1
+    env_file:
+      - ci/pod/kafka/kafka-server/env/last.env
+    environment:
+      KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper-server2:2181
+    restart: unless-stopped
+    ports:
+      - "19092:9092"
+      - "19093:9093"
+      - "19094:9094"
+    depends_on:
+      - zookeeper-server1
+      - zookeeper-server2
+    networks:
+      kafka_net:
+    volumes:
+      - ./ci/pod/kafka/kafka-server/kafka_jaas.conf:/opt/bitnami/kafka/config/kafka_jaas.conf:ro
+      - ./ci/pod/kafka/kafka-server/selfsigned.jks:/opt/bitnami/kafka/config/certs/kafka.keystore.jks:ro
+      - ./ci/pod/kafka/kafka-server/selfsigned.jks:/opt/bitnami/kafka/config/certs/kafka.truststore.jks:ro
+
+
+networks:
+  apisix_net:
+  kafka_net:
diff --git a/ci/pod/docker-compose.plugin.yml b/ci/pod/docker-compose.plugin.yml
new file mode 100644
index 000000000..d03508600
--- /dev/null
+++ b/ci/pod/docker-compose.plugin.yml
@@ -0,0 +1,201 @@
+#
+# 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.
+#
+
+version: "3.8"
+
+services:
+  ## Redis
+  apisix_redis:
+    # The latest image is the latest stable version
+    image: redis:latest
+    restart: unless-stopped
+    ports:
+      - "6379:6379"
+    networks:
+      apisix_net:
+
+
+  ## keycloak
+  apisix_keycloak:
+    image: sshniro/keycloak-apisix:1.0.0
+    environment:
+      KEYCLOAK_USER: admin
+      KEYCLOAK_PASSWORD: 123456
+    restart: unless-stopped
+    ports:
+      - "8090:8080"
+      - "8443:8443"
+    networks:
+      apisix_net:
+
+
+  ## kafka-cluster
+  zookeeper-server1:
+    image: bitnami/zookeeper:3.6.0
+    env_file:
+      - ci/pod/kafka/zookeeper-server/env/common.env
+    restart: unless-stopped
+    ports:
+      - "2181:2181"
+    networks:
+      kafka_net:
+
+  zookeeper-server2:
+    image: bitnami/zookeeper:3.6.0
+    env_file:
+      - ci/pod/kafka/zookeeper-server/env/common.env
+    restart: unless-stopped
+    ports:
+      - "12181:12181"
+    networks:
+      kafka_net:
+
+  kafka-server1:
+    image: bitnami/kafka:2.8.1
+    env_file:
+      - ci/pod/kafka/kafka-server/env/common.env
+    environment:
+      KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper-server1:2181
+    restart: unless-stopped
+    ports:
+      - "9092:9092"
+    depends_on:
+      - zookeeper-server1
+      - zookeeper-server2
+    networks:
+      kafka_net:
+
+  kafka-server2:
+    image: bitnami/kafka:2.8.1
+    env_file:
+      - ci/pod/kafka/kafka-server/env/common.env
+    environment:
+      KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper-server2:2181
+    restart: unless-stopped
+    ports:
+      - "19092:9092"
+    depends_on:
+      - zookeeper-server1
+      - zookeeper-server2
+    networks:
+      kafka_net:
+
+  ## SkyWalking
+  skywalking:
+    image: apache/skywalking-oap-server:8.7.0-es6
+    restart: unless-stopped
+    ports:
+      - "1234:1234"
+      - "11800:11800"
+      - "12800:12800"
+    networks:
+      skywalk_net:
+
+  ## HashiCorp Vault
+  vault:
+    image: vault:1.9.0
+    container_name: vault
+    restart: unless-stopped
+    ports:
+      - "8200:8200"
+    cap_add:
+      - IPC_LOCK
+    environment:
+      VAULT_DEV_ROOT_TOKEN_ID: root
+      VAULT_DEV_LISTEN_ADDRESS: 0.0.0.0:8200
+    command: [ "vault", "server", "-dev" ]
+    networks:
+      vault_net:
+
+
+  ## OpenLDAP
+  openldap:
+    image: bitnami/openldap:2.5.8
+    environment:
+      LDAP_ADMIN_USERNAME: amdin
+      LDAP_ADMIN_PASSWORD: adminpassword
+      LDAP_USERS: user01,user02
+      LDAP_PASSWORDS: password1,password2
+    ports:
+      - "1389:1389"
+      - "1636:1636"
+
+
+  rocketmq_namesrv:
+    image: apacherocketmq/rocketmq:4.6.0
+    container_name: rmqnamesrv
+    restart: unless-stopped
+    ports:
+      - "9876:9876"
+    command: sh mqnamesrv
+    networks:
+      rocketmq_net:
+
+  rocketmq_broker:
+    image: apacherocketmq/rocketmq:4.6.0
+    container_name: rmqbroker
+    restart: unless-stopped
+    ports:
+      - "10909:10909"
+      - "10911:10911"
+      - "10912:10912"
+    depends_on:
+      - rocketmq_namesrv
+    command: sh mqbroker -n rocketmq_namesrv:9876 -c ../conf/broker.conf
+    networks:
+      rocketmq_net:
+
+  # Open Policy Agent
+  opa:
+    image: openpolicyagent/opa:0.35.0
+    restart: unless-stopped
+    ports:
+      - 8181:8181
+    command: run -s /example.rego /echo.rego /data.json
+    volumes:
+      - type: bind
+        source: ./ci/pod/opa/example.rego
+        target: /example.rego
+      - type: bind
+        source: ./ci/pod/opa/echo.rego
+        target: /echo.rego
+      - type: bind
+        source: ./ci/pod/opa/data.json
+        target: /data.json
+    networks:
+      opa_net:
+
+  # Splunk HEC Logging Service
+  splunk:
+    image: splunk/splunk:8.2.3
+    restart: unless-stopped
+    ports:
+      - "18088:8088"
+    environment:
+      SPLUNK_PASSWORD: "ApacheAPISIX@666"
+      SPLUNK_START_ARGS: "--accept-license"
+      SPLUNK_HEC_TOKEN: "BD274822-96AA-4DA6-90EC-18940FB2414C"
+      SPLUNK_HEC_SSL: "False"
+
+
+networks:
+  apisix_net:
+  kafka_net:
+  skywalk_net:
+  rocketmq_net:
+  vault_net:
+  opa_net:
diff --git a/ci/pod/kafka/kafka-server/env/common.env b/ci/pod/kafka/kafka-server/env/common.env
index adc9d7cad..06200b9b0 100644
--- a/ci/pod/kafka/kafka-server/env/common.env
+++ b/ci/pod/kafka/kafka-server/env/common.env
@@ -1,8 +1,3 @@
 ALLOW_PLAINTEXT_LISTENER=yes
-KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
-KAFKA_CFG_LISTENERS=PLAINTEXT://0.0.0.0:9092,SSL://0.0.0.0:9093,SASL_PLAINTEXT://0.0.0.0:9094
-KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092,SSL://127.0.0.1:9093,SASL_PLAINTEXT://127.0.0.1:9094
-KAFKA_CFG_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM=
-KAFKA_CFG_SSL_KEYSTORE_LOCATION=/opt/bitnami/kafka/config/certs/kafka.keystore.jks
-KAFKA_CFG_SSL_KEYSTORE_PASSWORD=changeit
-KAFKA_CFG_SSL_KEY_PASSWORD=changeit
+KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
+KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
diff --git a/ci/pod/kafka/kafka-server/env/common.env b/ci/pod/kafka/kafka-server/env/last.env
similarity index 100%
copy from ci/pod/kafka/kafka-server/env/common.env
copy to ci/pod/kafka/kafka-server/env/last.env