From 2760dee6a70caa5453610333977872790cca410f Mon Sep 17 00:00:00 2001 From: cneicy Date: Sat, 5 Sep 2026 06:44:57 +0800 Subject: [PATCH] fix: run catalog checks outside Unity containers --- .gitea/workflows/package-hosts-verify.yml | 21 ++++++++- .gitea/workflows/workspace-validate.yml | 21 ++++++++- .../Validate-PublishedUpmConsumers.sh | 47 ++++++++++++++----- 3 files changed, 74 insertions(+), 15 deletions(-) diff --git a/.gitea/workflows/package-hosts-verify.yml b/.gitea/workflows/package-hosts-verify.yml index cf77e6a..c2286dc 100644 --- a/.gitea/workflows/package-hosts-verify.yml +++ b/.gitea/workflows/package-hosts-verify.yml @@ -4,7 +4,27 @@ on: workflow_dispatch: jobs: + catalog: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Validate submodules and version catalog + shell: bash + run: | + set -euo pipefail + ref="${{ gitea.sha }}" + git init . + git remote add origin "https://git.crash.work/ShrinkSDK/Workspace.git" + git fetch --depth=1 origin "$ref" + git checkout --detach FETCH_HEAD + git submodule sync --recursive + git submodule update --init --recursive + bash Tools/CI/Validate-Submodules.sh "$PWD" + node Tools/Release/update-shrinksdk-versions.mjs --check + editmode: + needs: catalog runs-on: unity-2022.3.62f3 container: image: docker.1panel.live/unityci/editor:ubuntu-2022.3.62f3-windows-mono-3 @@ -28,7 +48,6 @@ jobs: git submodule sync --recursive git submodule update --init --recursive bash Tools/CI/Validate-Submodules.sh "$PWD" - node Tools/Release/update-shrinksdk-versions.mjs --check - name: Run every standalone package EditMode host shell: bash diff --git a/.gitea/workflows/workspace-validate.yml b/.gitea/workflows/workspace-validate.yml index 5b330bf..bdb6361 100644 --- a/.gitea/workflows/workspace-validate.yml +++ b/.gitea/workflows/workspace-validate.yml @@ -7,7 +7,27 @@ on: workflow_dispatch: jobs: + catalog: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Validate submodules and version catalog + shell: bash + run: | + set -euo pipefail + ref="${{ gitea.sha }}" + git init . + git remote add origin "https://git.crash.work/ShrinkSDK/Workspace.git" + git fetch --depth=1 origin "$ref" + git checkout --detach FETCH_HEAD + git submodule sync --recursive + git submodule update --init --recursive + bash Tools/CI/Validate-Submodules.sh "$PWD" + node Tools/Release/update-shrinksdk-versions.mjs --check + unity: + needs: catalog runs-on: unity-2022.3.62f3 container: image: docker.1panel.live/unityci/editor:ubuntu-2022.3.62f3-windows-mono-3 @@ -31,7 +51,6 @@ jobs: git submodule sync --recursive git submodule update --init --recursive bash Tools/CI/Validate-Submodules.sh "$PWD" - node Tools/Release/update-shrinksdk-versions.mjs --check - name: Compile Workspace and validate package graph shell: bash diff --git a/Tools/UpmConsumerValidation/Validate-PublishedUpmConsumers.sh b/Tools/UpmConsumerValidation/Validate-PublishedUpmConsumers.sh index 64427ef..2aac7cc 100644 --- a/Tools/UpmConsumerValidation/Validate-PublishedUpmConsumers.sh +++ b/Tools/UpmConsumerValidation/Validate-PublishedUpmConsumers.sh @@ -25,20 +25,41 @@ fi published_value() { local package_name="$1" local property_name="$2" - node --input-type=module - "$published_catalog" "$package_name" "$property_name" <<'NODE' -import { readFileSync } from 'node:fs'; + local value + value="$(awk -v package_name="$package_name" -v property_name="$property_name" ' + index($0, "\"" package_name "\"") { + in_package = 1 + next + } + in_package && index($0, "\"" property_name "\"") { + value = $0 + sub(/^[^:]*:[[:space:]]*"/, "", value) + sub(/".*$/, "", value) + print value + found = 1 + exit + } + in_package && /^[[:space:]]*}/ { + exit + } + END { + if (!found) exit 1 + } + ' "$published_catalog")" || { + echo "Published catalog value is missing: ${package_name}.${property_name}" >&2 + return 1 + } -const [, , catalogPath, packageName, propertyName] = process.argv; -const catalog = JSON.parse(readFileSync(catalogPath, 'utf8')); -const value = catalog.packages?.[packageName]?.[propertyName]; -if (typeof value !== 'string' || value.length === 0) { - throw new Error(`Published catalog value is missing: ${packageName}.${propertyName}`); -} -if (propertyName === 'version' && !/^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$/.test(value)) { - throw new Error(`Published catalog version is invalid: ${packageName}=${value}`); -} -process.stdout.write(value); -NODE + if [[ -z "$value" ]]; then + echo "Published catalog value is empty: ${package_name}.${property_name}" >&2 + return 1 + fi + if [[ "$property_name" == "version" && ! "$value" =~ ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$ ]]; then + echo "Published catalog version is invalid: ${package_name}=${value}" >&2 + return 1 + fi + + printf '%s' "$value" } export SHRINKSDK_PUBLISHED_STARTER_VERSION="$(published_value com.cneicy.shrink-app-starter-basic version)"