@@ -138,6 +138,54 @@ jobs:
138138 git --no-pager diff product.json
139139 fi
140140
141+ - name : Render test tags
142+ id : render-tags
143+ run : |
144+ UPDATED=$(jq -rn \
145+ --argjson old "$(git show HEAD:product.json)" \
146+ --argjson new "$(cat product.json)" \
147+ '($old.bootstrapExtensions | map({(.name): .version}) | add) as $ov |
148+ ($new.bootstrapExtensions | map({(.name): .version}) | add) as $nv |
149+ [$nv | to_entries[] | select(.value != $ov[.key]) | .key] | join(" ")')
150+ if [ -z "$UPDATED" ]; then
151+ echo "No bootstrap extension version changes detected."
152+ echo "updated=" >> "$GITHUB_OUTPUT"
153+ exit 0
154+ fi
155+ TAG_MAP=.github/workflows/extensions-tag-map.json
156+ TAG_BULLETS=$(echo "$UPDATED" | tr ' ' '\n' | jq -R -s -r --slurpfile map "$TAG_MAP" '
157+ (split("\n") | map(select(length > 0))) as $exts |
158+ $map[0] as $m |
159+ $exts | map(
160+ . as $e | $m[$e] as $entry |
161+ if $entry == null then
162+ "- " + $e + " -> (unmapped; add to extensions-tag-map.json)"
163+ elif ($entry.tags | length) > 0 then
164+ "- " + $e + " -> " + ($entry.tags | join(", "))
165+ else
166+ "- " + $e + " -> n/a"
167+ end
168+ ) | join("\n")
169+ ')
170+ COMBINED_TAGS=$(echo "$UPDATED" | tr ' ' '\n' | jq -R -s -r --slurpfile map "$TAG_MAP" '
171+ split("\n") | map(select(length > 0)) | map($map[0][.].tags // []) | flatten | unique | join(" ")
172+ ')
173+ UNMAPPED=$(echo "$UPDATED" | tr ' ' '\n' | jq -R -s -r --slurpfile map "$TAG_MAP" '
174+ split("\n") | map(select(length > 0)) | map(select($map[0][.] == null)) | join(", ")
175+ ')
176+ {
177+ echo "### Suggested test tags"
178+ echo ""
179+ echo "$TAG_BULLETS"
180+ if [ -n "$COMBINED_TAGS" ]; then
181+ echo ""
182+ echo "Combined: $COMBINED_TAGS"
183+ fi
184+ } >> "$GITHUB_STEP_SUMMARY"
185+ echo "updated=$UPDATED" >> "$GITHUB_OUTPUT"
186+ echo "combined_tags=$COMBINED_TAGS" >> "$GITHUB_OUTPUT"
187+ echo "unmapped=$UNMAPPED" >> "$GITHUB_OUTPUT"
188+
141189 - name : Commit and push
142190 id : push
143191 if : inputs.dryrun != true
@@ -172,13 +220,11 @@ jobs:
172220 GH_TOKEN : ${{ steps.bot-token.outputs.token }}
173221 BRANCH : ${{ steps.push.outputs.branch }}
174222 RUN_URL : ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
223+ MAP_URL : ${{ github.server_url }}/${{ github.repository }}/blob/main/.github/workflows/extensions-tag-map.json
224+ UPDATED : ${{ steps.render-tags.outputs.updated }}
225+ COMBINED_TAGS : ${{ steps.render-tags.outputs.combined_tags }}
226+ UNMAPPED : ${{ steps.render-tags.outputs.unmapped }}
175227 run : |
176- UPDATED=$(jq -rn \
177- --argjson old "$(git show HEAD~1:product.json)" \
178- --argjson new "$(cat product.json)" \
179- '($old.bootstrapExtensions | map({(.name): .version}) | add) as $ov |
180- ($new.bootstrapExtensions | map({(.name): .version}) | add) as $nv |
181- [$nv | to_entries[] | select(.value != $ov[.key]) | .key] | join(" ")')
182228 EXT_BULLETS=$(echo "$UPDATED" | tr ' ' '\n' | sed 's/^/- /')
183229 # Truncate title if more than 3 extensions to stay within GitHub's limit
184230 EXT_ARRAY=($UPDATED)
@@ -189,6 +235,16 @@ jobs:
189235 FIRST3="${EXT_ARRAY[0]},${EXT_ARRAY[1]},${EXT_ARRAY[2]}"
190236 TITLE="chore: update bootstrap extensions ($FIRST3 +$((COUNT - 3)) more)"
191237 fi
238+ TAGS_LINE=""
239+ if [ -n "$COMBINED_TAGS" ]; then
240+ TAGS_LINE="${COMBINED_TAGS}
241+ "
242+ fi
243+ UNMAPPED_LINE=""
244+ if [ -n "$UNMAPPED" ]; then
245+ UNMAPPED_LINE="[Unmapped](${MAP_URL}): ${UNMAPPED}
246+ "
247+ fi
192248 PR_URL=$(gh pr create \
193249 --base main \
194250 --head "$BRANCH" \
@@ -199,7 +255,7 @@ jobs:
199255 ${EXT_BULLETS}
200256
201257 ### QA Notes
202- Triggered by [nightly extensions check](${RUN_URL}).")
258+ ${TAGS_LINE}${UNMAPPED_LINE} Triggered by [nightly extensions check](${RUN_URL}).")
203259 echo "pr_url=$PR_URL" >> "$GITHUB_OUTPUT"
204260 echo "updated=$UPDATED" >> "$GITHUB_OUTPUT"
205261
0 commit comments