This is an automated email from the ASF dual-hosted git repository.
yuluo-yx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new e2e201ca3a ci: limit GHCR publishing to runtime changes (#7354)
e2e201ca3a is described below
commit e2e201ca3a5c754f16dd8c36358e5113868c3e20
Author: aias00 <[email protected]>
AuthorDate: Mon Sep 28 19:17:04 2026 -0700
ci: limit GHCR publishing to runtime changes (#7354)
* ci: limit GHCR publishing to runtime changes
* ci: consolidate test routing checks
---
.github/scripts/resolve-ghcr-publish-test.sh | 68 +++++++++++
.github/scripts/resolve-k8s-ingress-matrix-test.sh | 66 -----------
.github/scripts/resolve-test-case-matrix-test.sh | 127 ++++++++++++++++++---
.github/scripts/resolve-test-case-matrix.sh | 2 +-
.../scripts/resolve-test-domain-routing-test.sh | 104 -----------------
.github/workflows/ci.yml | 4 +-
.github/workflows/docker-publish.yml | 7 +-
.github/workflows/integrated-test-k8s-ingress.yml | 4 +-
8 files changed, 186 insertions(+), 196 deletions(-)
diff --git a/.github/scripts/resolve-ghcr-publish-test.sh
b/.github/scripts/resolve-ghcr-publish-test.sh
new file mode 100644
index 0000000000..65f2f6ad7b
--- /dev/null
+++ b/.github/scripts/resolve-ghcr-publish-test.sh
@@ -0,0 +1,68 @@
+#!/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.
+
+set -euo pipefail
+
+WORKFLOW_FILE="${1:-.github/workflows/docker-publish.yml}"
+readonly WORKFLOW_FILE
+
+ruby - "${WORKFLOW_FILE}" <<'RUBY'
+require "yaml"
+
+workflow = YAML.safe_load(File.read(ARGV.fetch(0)), aliases: true)
+events = workflow["on"] || workflow[true]
+push = events.fetch("push")
+patterns = push.fetch("paths-ignore")
+flags = File::FNM_PATHNAME | File::FNM_DOTMATCH | File::FNM_EXTGLOB
+
+def ignored?(patterns, path, flags)
+ patterns.any? do |pattern|
+ if pattern.end_with?("/**")
+ path.start_with?(pattern.delete_suffix("**"))
+ else
+ File.fnmatch?(pattern, path, flags)
+ end
+ end
+end
+
+ignored_paths = [
+ ".github/workflows/ci.yml",
+ "actions/setup-java-with-retry/action.yml",
+ "shenyu-e2e/shenyu-e2e-case/pom.xml",
+ "shenyu-integrated-test/shenyu-integrated-test-grpc/pom.xml",
+ "shenyu-examples/shenyu-examples-http/pom.xml"
+]
+runtime_paths = [
+ "pom.xml",
+ "db/init/mysql/schema.sql",
+ "shenyu-admin/src/main/java/Admin.java",
+ "shenyu-plugin/shenyu-plugin-api/src/main/java/ShenyuPlugin.java",
+ "shenyu-dist/shenyu-admin-dist/docker/Dockerfile"
+]
+
+ignored_paths.each do |path|
+ raise "Expected #{path} to skip GHCR publishing" unless ignored?(patterns,
path, flags)
+end
+
+runtime_paths.each do |path|
+ raise "Expected #{path} to trigger GHCR publishing" if ignored?(patterns,
path, flags)
+end
+
+raise "Release tag publishing must remain enabled" unless
push.fetch("tags").include?("v*.*.*")
+
+puts "GHCR publish path tests passed"
+RUBY
diff --git a/.github/scripts/resolve-k8s-ingress-matrix-test.sh
b/.github/scripts/resolve-k8s-ingress-matrix-test.sh
deleted file mode 100644
index 250a8ab592..0000000000
--- a/.github/scripts/resolve-k8s-ingress-matrix-test.sh
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/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.
-
-set -euo pipefail
-
-SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-readonly SCRIPT_DIR
-readonly RESOLVER="${SCRIPT_DIR}/resolve-test-case-matrix.sh"
-
-resolve_matrix() {
- local changed_files_json="$1"
- local output_file
-
- output_file="$(mktemp)"
- CI_CASE_MODE="k8s-ingress" \
- CHANGED_FILES_JSON="${changed_files_json}" \
- GITHUB_OUTPUT="${output_file}" \
- bash "${RESOLVER}" >/dev/null
- awk -F= '$1 == "k8s_ingress_matrix" { sub(/^[^=]*=/, ""); print }'
"${output_file}"
- rm -f "${output_file}"
-}
-
-assert_matrix() {
- local changed_files_json="$1"
- local expected="$2"
- local actual
-
- actual="$(resolve_matrix "${changed_files_json}")"
- if [[ "${actual}" != "${expected}" ]]; then
- echo "Expected ${expected} for ${changed_files_json}, got
${actual:-<empty>}" >&2
- return 1
- fi
-}
-
-assert_matrix
'["shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-grpc/pom.xml"]'
\
- '{"include":[{"case":"shenyu-integrated-test-k8s-ingress-grpc"}]}'
-assert_matrix
'["shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-websocket/pom.xml"]' \
- '{"include":[{"case":"shenyu-integrated-test-k8s-ingress-websocket"}]}'
-assert_matrix
'["shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-divide/pom.xml"]' \
- '{"include":[{"case":"shenyu-integrated-test-k8s-ingress-http"}]}'
-assert_matrix
'["shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-dubbo/shenyu-plugin-apache-dubbo/pom.xml"]'
\
- '{"include":[{"case":"shenyu-integrated-test-k8s-ingress-apache-dubbo"}]}'
-assert_matrix
'["shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-grpc/pom.xml","shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-websocket/pom.xml","shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-grpc/src/main/java/GrpcPlugin.java"]'
\
-
'{"include":[{"case":"shenyu-integrated-test-k8s-ingress-grpc"},{"case":"shenyu-integrated-test-k8s-ingress-websocket"}]}'
-assert_matrix '["shenyu-common/pom.xml"]' \
-
'{"include":[{"case":"shenyu-integrated-test-k8s-ingress-http"},{"case":"shenyu-integrated-test-k8s-ingress-apache-dubbo"},{"case":"shenyu-integrated-test-k8s-ingress-websocket"},{"case":"shenyu-integrated-test-k8s-ingress-grpc"}]}'
-assert_matrix
'["shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-common/pom.xml"]' \
- '{"include":[]}'
-assert_matrix '[".github/workflows/integrated-test-k8s-ingress.yml"]' \
-
'{"include":[{"case":"shenyu-integrated-test-k8s-ingress-http"},{"case":"shenyu-integrated-test-k8s-ingress-apache-dubbo"},{"case":"shenyu-integrated-test-k8s-ingress-websocket"},{"case":"shenyu-integrated-test-k8s-ingress-grpc"}]}'
-
-echo "IT-K8s matrix resolver tests passed"
diff --git a/.github/scripts/resolve-test-case-matrix-test.sh
b/.github/scripts/resolve-test-case-matrix-test.sh
index d29de388d5..36ff621822 100644
--- a/.github/scripts/resolve-test-case-matrix-test.sh
+++ b/.github/scripts/resolve-test-case-matrix-test.sh
@@ -21,9 +21,16 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly SCRIPT_DIR
readonly RESOLVER="${SCRIPT_DIR}/resolve-test-case-matrix.sh"
-assert_k8s_output() {
+read_output() {
+ local output_file="$1"
+ local output_name="$2"
+
+ awk -F= -v name="${output_name}" '$1 == name { sub(/^[^=]*=/, ""); print }'
"${output_file}"
+}
+
+assert_output() {
local mode="$1"
- local changed_file="$2"
+ local changed_files_json="$2"
local output_name="$3"
local expected="$4"
local output_file
@@ -31,47 +38,131 @@ assert_k8s_output() {
output_file="$(mktemp)"
CI_CASE_MODE="${mode}" \
- CHANGED_FILES_JSON="$(jq -cn --arg file "${changed_file}" '[ $file ]')" \
+ CHANGED_FILES_JSON="${changed_files_json}" \
GITHUB_OUTPUT="${output_file}" \
bash "${RESOLVER}" >/dev/null
- actual="$(awk -F= -v name="${output_name}" '$1 == name { print $2 }'
"${output_file}")"
+ actual="$(read_output "${output_file}" "${output_name}")"
rm -f "${output_file}"
if [[ "${actual}" != "${expected}" ]]; then
- echo "Expected ${output_name}=${expected} for ${changed_file}, got
${actual}" >&2
+ echo "Expected ${output_name}=${expected} for
${mode}:${changed_files_json}, got ${actual}" >&2
+ return 1
+ fi
+}
+
+assert_file_output() {
+ local mode="$1"
+ local changed_file="$2"
+ local output_name="$3"
+ local expected="$4"
+ local changed_files_json
+
+ changed_files_json="$(jq -cn --arg file "${changed_file}" '[ $file ]')"
+ assert_output "${mode}" "${changed_files_json}" "${output_name}"
"${expected}"
+}
+
+assert_ci_ignored() {
+ local changed_file="$1"
+ local output_file
+ local actual
+
+ output_file="$(mktemp)"
+ CHANGED_FILES_JSON="$(jq -cn --arg file "${changed_file}" '[ $file ]')" \
+ GITHUB_OUTPUT="${output_file}" \
+ bash "${SCRIPT_DIR}/resolve-ci-modules.sh" >/dev/null
+ actual="$(read_output "${output_file}" "has_code_changes")"
+ rm -f "${output_file}"
+
+ if [[ "${actual}" != "false" ]]; then
+ echo "Expected main CI to ignore ${changed_file}, got
has_code_changes=${actual}" >&2
return 1
fi
}
-assert_k8s_output "k8s-ingress" \
+assert_file_output "k8s-ingress" \
"shenyu-client/shenyu-client-mcp/shenyu-client-mcp-common/pom.xml" \
"run_k8s_ingress" "false"
-assert_k8s_output "k8s-ingress" \
+assert_file_output "k8s-ingress" \
"shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-common/pom.xml" \
"run_k8s_ingress" "false"
-assert_k8s_output "k8s-ingress" \
+assert_file_output "k8s-ingress" \
"shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-grpc/pom.xml" \
"run_k8s_ingress" "true"
-assert_k8s_output "k8s-ingress" \
+assert_file_output "k8s-ingress" \
"shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-grpc/pom.xml"
\
"run_k8s_ingress" "true"
-assert_k8s_output "k8s-ingress" "shenyu-common/pom.xml" "run_k8s_ingress"
"true"
-assert_k8s_output "k8s-ingress" "pom.xml" "run_k8s_ingress" "true"
+assert_file_output "k8s-ingress" "shenyu-common/pom.xml" "run_k8s_ingress"
"true"
+assert_file_output "k8s-ingress" "pom.xml" "run_k8s_ingress" "true"
-assert_k8s_output "k8s-examples-http" \
+assert_file_output "k8s-examples-http" \
"shenyu-client/shenyu-client-mcp/shenyu-client-mcp-common/pom.xml" \
"run_k8s_examples" "false"
-assert_k8s_output "k8s-examples-http" \
+assert_file_output "k8s-examples-http" \
"shenyu-examples/shenyu-examples-grpc/pom.xml" \
"run_k8s_examples" "false"
-assert_k8s_output "k8s-examples-http" \
+assert_file_output "k8s-examples-http" \
"shenyu-examples/shenyu-examples-http/pom.xml" \
"run_k8s_examples" "true"
-assert_k8s_output "k8s-examples-http" \
+assert_file_output "k8s-examples-http" \
"shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-divide/pom.xml" \
"run_k8s_examples" "true"
-assert_k8s_output "k8s-examples-http" "shenyu-bootstrap/pom.xml"
"run_k8s_examples" "true"
-assert_k8s_output "k8s-examples-http" "pom.xml" "run_k8s_examples" "true"
+assert_file_output "k8s-examples-http" "shenyu-bootstrap/pom.xml"
"run_k8s_examples" "true"
+assert_file_output "k8s-examples-http" "pom.xml" "run_k8s_examples" "true"
+
+readonly
E2E_GRPC="shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/compose/script/e2e-grpc-sync-compose.sh"
+readonly
IT_GRPC="shenyu-integrated-test/shenyu-integrated-test-grpc/src/test/java/GrpcPluginTest.java"
+readonly
IT_K8S_GRPC="shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-grpc/script/healthcheck.sh"
+readonly
PROD_GRPC="shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-grpc/pom.xml"
+readonly
ALL_K8S_INGRESS_MATRIX='{"include":[{"case":"shenyu-integrated-test-k8s-ingress-http"},{"case":"shenyu-integrated-test-k8s-ingress-apache-dubbo"},{"case":"shenyu-integrated-test-k8s-ingress-websocket"},{"case":"shenyu-integrated-test-k8s-ingress-grpc"}]}'
+
+assert_ci_ignored "${E2E_GRPC}"
+assert_file_output "e2e" "${E2E_GRPC}" "e2e_matrix" \
+
'{"include":[{"script":"e2e-grpc-sync-compose","case":"shenyu-e2e-case-grpc","example_projects":":shenyu-examples-grpc"}]}'
+assert_file_output "integration" "${E2E_GRPC}" "run_integration" "false"
+assert_file_output "k8s-ingress" "${E2E_GRPC}" "run_k8s_ingress" "false"
+
+assert_ci_ignored "${IT_GRPC}"
+assert_file_output "integration" "${IT_GRPC}" "integration_matrix" \
+ '{"include":[{"case":"shenyu-integrated-test-grpc"}]}'
+assert_file_output "e2e" "${IT_GRPC}" "run_e2e" "false"
+assert_file_output "k8s-ingress" "${IT_GRPC}" "run_k8s_ingress" "false"
+
+assert_ci_ignored "${IT_K8S_GRPC}"
+assert_file_output "k8s-ingress" "${IT_K8S_GRPC}" "run_k8s_ingress" "true"
+assert_file_output "integration" "${IT_K8S_GRPC}" "run_integration" "false"
+assert_file_output "e2e" "${IT_K8S_GRPC}" "run_e2e" "false"
+
+assert_file_output "integration" "${PROD_GRPC}" "run_integration" "true"
+assert_file_output "e2e" "${PROD_GRPC}" "run_e2e" "true"
+assert_file_output "k8s-ingress" "${PROD_GRPC}" "run_k8s_ingress" "true"
+
+assert_file_output "k8s-ingress" "${PROD_GRPC}" "k8s_ingress_matrix" \
+ '{"include":[{"case":"shenyu-integrated-test-k8s-ingress-grpc"}]}'
+assert_file_output "k8s-ingress" \
+ "shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-websocket/pom.xml" \
+ "k8s_ingress_matrix" \
+ '{"include":[{"case":"shenyu-integrated-test-k8s-ingress-websocket"}]}'
+assert_file_output "k8s-ingress" \
+ "shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-divide/pom.xml" \
+ "k8s_ingress_matrix" \
+ '{"include":[{"case":"shenyu-integrated-test-k8s-ingress-http"}]}'
+assert_file_output "k8s-ingress" \
+
"shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-dubbo/shenyu-plugin-apache-dubbo/pom.xml"
\
+ "k8s_ingress_matrix" \
+ '{"include":[{"case":"shenyu-integrated-test-k8s-ingress-apache-dubbo"}]}'
+assert_output "k8s-ingress" \
+
'["shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-grpc/pom.xml","shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-websocket/pom.xml","shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-grpc/src/main/java/GrpcPlugin.java"]'
\
+ "k8s_ingress_matrix" \
+
'{"include":[{"case":"shenyu-integrated-test-k8s-ingress-grpc"},{"case":"shenyu-integrated-test-k8s-ingress-websocket"}]}'
+assert_file_output "k8s-ingress" "shenyu-common/pom.xml" "k8s_ingress_matrix" \
+ "${ALL_K8S_INGRESS_MATRIX}"
+assert_file_output "k8s-ingress" \
+ "shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-common/pom.xml" \
+ "k8s_ingress_matrix" '{"include":[]}'
+assert_file_output "k8s-ingress"
".github/workflows/integrated-test-k8s-ingress.yml" \
+ "k8s_ingress_matrix" "${ALL_K8S_INGRESS_MATRIX}"
+assert_file_output "k8s-ingress"
".github/scripts/resolve-test-case-matrix-test.sh" \
+ "k8s_ingress_matrix" "${ALL_K8S_INGRESS_MATRIX}"
-echo "resolve-test-case-matrix k8s tests passed"
+echo "CI test routing tests passed"
diff --git a/.github/scripts/resolve-test-case-matrix.sh
b/.github/scripts/resolve-test-case-matrix.sh
index 23cfcd18aa..0cac323c92 100644
--- a/.github/scripts/resolve-test-case-matrix.sh
+++ b/.github/scripts/resolve-test-case-matrix.sh
@@ -354,7 +354,7 @@ while IFS= read -r file; do
case "${file}" in
.github/workflows/integrated-test-k8s-ingress.yml|\
.github/scripts/resolve-test-case-matrix.sh|\
- .github/scripts/resolve-k8s-ingress-matrix-test.sh)
+ .github/scripts/resolve-test-case-matrix-test.sh)
add_k8s_ingress_all
continue
;;
diff --git a/.github/scripts/resolve-test-domain-routing-test.sh
b/.github/scripts/resolve-test-domain-routing-test.sh
deleted file mode 100644
index 609df0213b..0000000000
--- a/.github/scripts/resolve-test-domain-routing-test.sh
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/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.
-
-set -euo pipefail
-
-SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-readonly SCRIPT_DIR
-
-read_output() {
- local output_file="$1"
- local name="$2"
-
- awk -F= -v name="${name}" '$1 == name { sub(/^[^=]*=/, ""); print }'
"${output_file}"
-}
-
-resolve_cases() {
- local mode="$1"
- local changed_file="$2"
- local output_file="$3"
-
- CI_CASE_MODE="${mode}" \
- CHANGED_FILES_JSON="$(jq -cn --arg file "${changed_file}" '[ $file ]')" \
- GITHUB_OUTPUT="${output_file}" \
- bash "${SCRIPT_DIR}/resolve-test-case-matrix.sh" >/dev/null
-}
-
-assert_output() {
- local mode="$1"
- local changed_file="$2"
- local output_name="$3"
- local expected="$4"
- local output_file
- local actual
-
- output_file="$(mktemp)"
- resolve_cases "${mode}" "${changed_file}" "${output_file}"
- actual="$(read_output "${output_file}" "${output_name}")"
- rm -f "${output_file}"
-
- if [[ "${actual}" != "${expected}" ]]; then
- echo "Expected ${output_name}=${expected} for ${mode}:${changed_file}, got
${actual}" >&2
- return 1
- fi
-}
-
-assert_ci_ignored() {
- local changed_file="$1"
- local output_file
- local actual
-
- output_file="$(mktemp)"
- CHANGED_FILES_JSON="$(jq -cn --arg file "${changed_file}" '[ $file ]')" \
- GITHUB_OUTPUT="${output_file}" \
- bash "${SCRIPT_DIR}/resolve-ci-modules.sh" >/dev/null
- actual="$(read_output "${output_file}" "has_code_changes")"
- rm -f "${output_file}"
-
- if [[ "${actual}" != "false" ]]; then
- echo "Expected main CI to ignore ${changed_file}, got
has_code_changes=${actual}" >&2
- return 1
- fi
-}
-
-readonly
E2E_GRPC="shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/compose/script/e2e-grpc-sync-compose.sh"
-readonly
IT_GRPC="shenyu-integrated-test/shenyu-integrated-test-grpc/src/test/java/GrpcPluginTest.java"
-readonly
IT_K8S_GRPC="shenyu-integrated-test/shenyu-integrated-test-k8s-ingress-grpc/script/healthcheck.sh"
-readonly
PROD_GRPC="shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-grpc/pom.xml"
-
-assert_ci_ignored "${E2E_GRPC}"
-assert_output "e2e" "${E2E_GRPC}" "e2e_matrix" \
-
'{"include":[{"script":"e2e-grpc-sync-compose","case":"shenyu-e2e-case-grpc","example_projects":":shenyu-examples-grpc"}]}'
-assert_output "integration" "${E2E_GRPC}" "run_integration" "false"
-assert_output "k8s-ingress" "${E2E_GRPC}" "run_k8s_ingress" "false"
-
-assert_ci_ignored "${IT_GRPC}"
-assert_output "integration" "${IT_GRPC}" "integration_matrix" \
- '{"include":[{"case":"shenyu-integrated-test-grpc"}]}'
-assert_output "e2e" "${IT_GRPC}" "run_e2e" "false"
-assert_output "k8s-ingress" "${IT_GRPC}" "run_k8s_ingress" "false"
-
-assert_ci_ignored "${IT_K8S_GRPC}"
-assert_output "k8s-ingress" "${IT_K8S_GRPC}" "run_k8s_ingress" "true"
-assert_output "integration" "${IT_K8S_GRPC}" "run_integration" "false"
-assert_output "e2e" "${IT_K8S_GRPC}" "run_e2e" "false"
-
-assert_output "integration" "${PROD_GRPC}" "run_integration" "true"
-assert_output "e2e" "${PROD_GRPC}" "run_e2e" "true"
-assert_output "k8s-ingress" "${PROD_GRPC}" "run_k8s_ingress" "true"
-
-echo "test workflow domain routing tests passed"
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 9212860eef..ca6b523323 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -80,8 +80,6 @@ jobs:
- uses: actions/checkout@v3
- name: Test CI case resolver
run: bash .github/scripts/resolve-test-case-matrix-test.sh
- - name: Test CI domain routing
- run: bash .github/scripts/resolve-test-domain-routing-test.sh
- uses: ./actions/paths-filter
id: filter
with:
@@ -118,6 +116,8 @@ jobs:
env:
CHANGED_FILES_JSON: ${{ steps.filter.outputs.code_files }}
run: bash .github/scripts/resolve-ci-modules.sh
+ - name: Test GHCR publish routing
+ run: bash .github/scripts/resolve-ghcr-publish-test.sh
pr_build:
needs: changes
diff --git a/.github/workflows/docker-publish.yml
b/.github/workflows/docker-publish.yml
index f6b61483b0..fa1d3aeddf 100644
--- a/.github/workflows/docker-publish.yml
+++ b/.github/workflows/docker-publish.yml
@@ -37,8 +37,11 @@ on:
- '.asf.yaml'
- '.gitignore'
- '.licenserc.yaml'
- - '.github/ISSUE_TEMPLATE/**'
- - '.github/PULL_REQUEST_TEMPLATE'
+ - '.github/**'
+ - 'actions/**'
+ - 'shenyu-e2e/**'
+ - 'shenyu-integrated-test/**'
+ - 'shenyu-examples/**'
- '**/resources/static/**'
env:
diff --git a/.github/workflows/integrated-test-k8s-ingress.yml
b/.github/workflows/integrated-test-k8s-ingress.yml
index 80b609a779..a079b62125 100644
--- a/.github/workflows/integrated-test-k8s-ingress.yml
+++ b/.github/workflows/integrated-test-k8s-ingress.yml
@@ -76,8 +76,6 @@ jobs:
k8s_ingress_matrix: ${{ steps.cases.outputs.k8s_ingress_matrix }}
steps:
- uses: actions/checkout@v3
- - name: Test IT-K8s matrix resolver
- run: bash .github/scripts/resolve-k8s-ingress-matrix-test.sh
- uses: ./actions/paths-filter
id: filter
with:
@@ -102,7 +100,7 @@ jobs:
- '!.github/PULL_REQUEST_TEMPLATE'
- '.github/workflows/integrated-test-k8s-ingress.yml'
- '.github/scripts/resolve-test-case-matrix.sh'
- - '.github/scripts/resolve-k8s-ingress-matrix-test.sh'
+ - '.github/scripts/resolve-test-case-matrix-test.sh'
- name: Resolve k8s ingress cases
id: cases
if: steps.filter.outputs['k8s-ingress'] == 'true'