diff --git a/.gitea/workflows/changelog_and_release.yml b/.gitea/workflows/changelog_and_release.yml index 4666c86..1599b78 100644 --- a/.gitea/workflows/changelog_and_release.yml +++ b/.gitea/workflows/changelog_and_release.yml @@ -182,17 +182,23 @@ jobs: PRERELEASE_DETECTED="${{ env.RELEASE_PRERELEASE_MODE }} (manually configured)" fi - # 处理忽略模式(转换为数组) + # 处理忽略模式(去除空格,保持管道分隔格式) + echo "🔧 处理忽略模式..." + PROCESSED_PATTERNS="" IFS='|' read -ra PATTERNS_ARRAY <<< "${{ env.IGNORE_PATTERNS }}" - IGNORE_JSON="[" + for pattern in "${PATTERNS_ARRAY[@]}"; do - # 去除首尾空格 - pattern=$(echo "$pattern" | xargs) + # 使用 sed 去除首尾空格,保留转义字符 + pattern=$(echo "$pattern" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') if [ -n "$pattern" ]; then - IGNORE_JSON="${IGNORE_JSON}\"${pattern}\"," + if [ -z "$PROCESSED_PATTERNS" ]; then + PROCESSED_PATTERNS="$pattern" + else + PROCESSED_PATTERNS="$PROCESSED_PATTERNS|$pattern" + fi fi done - IGNORE_JSON="${IGNORE_JSON%,}]" + echo "✅ 已处理 $(echo "$PROCESSED_PATTERNS" | grep -o '|' | wc -l | awk '{print $1+1}') 个忽略模式" # 导出处理后的配置到 GitHub 环境变量 echo "CHANGELOG_VERSION=$CHANGELOG_VERSION" >> $GITHUB_ENV @@ -203,7 +209,7 @@ jobs: echo "PRERELEASE_STRIP_REGEX=$STRIP_REGEX" >> $GITHUB_ENV echo "PRERELEASE_MATCH_REGEX=$MATCH_REGEX" >> $GITHUB_ENV - echo "IGNORE_PATTERNS_JSON=$IGNORE_JSON" >> $GITHUB_ENV + echo "IGNORE_PATTERNS_PROCESSED=$PROCESSED_PATTERNS" >> $GITHUB_ENV # 显示配置摘要 echo "" @@ -449,13 +455,7 @@ jobs: declare -a COMMITS_BODY # 从环境变量加载忽略模式 (转换为 bash 数组) - IFS='|' read -ra IGNORE_PATTERNS <<< "${{ env.IGNORE_PATTERNS }}" - - # 去除每个模式的首尾空格 - for i in "${!IGNORE_PATTERNS[@]}"; do - IGNORE_PATTERNS[$i]=$(echo "${IGNORE_PATTERNS[$i]}" | xargs) - done - + IFS='|' read -ra IGNORE_PATTERNS <<< "${{ env.IGNORE_PATTERNS_PROCESSED }}" echo "📋 已加载 ${#IGNORE_PATTERNS[@]} 个忽略模式" COMMIT_INDEX=0