7171 fi
7272 done
7373 if [[ $has_bsp == true ]]; then
74- changed_files=$(echo "${changed_files}"| cut -d'/' -f2 | sort -u)
75- echo "CHANGED_FILES=${changed_files}" >> $GITHUB_OUTPUT
74+ changed_files=$(echo "${changed_files}"| cut -d'/' -f2 | sort -u| tr '\n' ',' | sed 's/,$//' )
75+ echo "CHANGED_FILES=[ ${changed_files}] " >> $GITHUB_OUTPUT
7676 fi
7777 #获取修改文件的路径,如果有bsp以外的文件夹则编译全部bsp,否则获取对应文件夹名
7878
@@ -82,21 +82,26 @@ jobs:
8282 run : |
8383 raw_matrix=$(echo "${{ steps.read-config.outputs.raw_matrix }}" | base64 --decode)
8484
85- CHANGED_FILES="${{ steps.changed_files.outputs.CHANGED_FILES }}"
85+ CHANGED_FILES=${{ steps.changed_files.outputs.CHANGED_FILES }}
86+ CHANGED_FILES=$(echo "$CHANGED_FILES" | sed 's/\[\|\]//g')
8687 # 将修改的文件路径与ALL_BSP_COMPILE.json文件的SUB_RTT_BSP进行判断,判断是否包含
87- filtered_matrix="${filtered_matrix}"
88- if [[ "$CHANGED_FILES" == "" ]]; then
88+ filtered_matrix=[]
89+ echo "${CHANGED_FILES}"
90+ if [[ -z "$CHANGED_FILES" ]]; then
8991 FILTER_CONDITION='.legs[]'
9092 filtered_matrix=$(jq -c "{legs: [$FILTER_CONDITION]}" <<< "$raw_matrix")
9193 else
92- CONDITIONS=$(echo "$CHANGED_FILES" | awk '{for (i=1; i<=NF; i++) printf "contains(\"%s\") or ", $i }')
94+ CONDITIONS=$(echo "$CHANGED_FILES" | awk 'BEGIN { RS="," } { printf "contains(\"%s\") or ", $1 }')
9395 CONDITIONS=${CONDITIONS% or }
96+
9497 FILTER_CONDITION=".legs[] | select(any(.SUB_RTT_BSP[]; $CONDITIONS))"
98+
9599 filtered_matrix=$(jq -c "{legs: [$FILTER_CONDITION]}" <<< "$raw_matrix")
96100 fi
101+
97102 echo "filtered_matrix=${filtered_matrix}" >> $GITHUB_OUTPUT
98103
99- echo " ${filtered_matrix}"
104+ echo ${filtered_matrix}
100105 build :
101106 runs-on : ubuntu-22.04
102107 needs : generate-matrix
0 commit comments