fix: run post_merge_profiles.yml after bot merges PR. (#15797)

# Description

<!--
> Please provide a summary of the changes made in this PR. Include
details such as:
  > * What issue does this PR address or fix?
  > * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be
considered?
-->
When a PR is merged using the bot with `/bot merge`, it doesn't invoke
`post_merge_profiles.yml` because post_merge_profiles.yml only starts on
a push or manual dispatch.

# Screenshots/Recordings/Graphs

<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->

## Tests

<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->

<!--
> A guide for users on how to download the artifacts from this PR.
-->

[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
This commit is contained in:
Ian Chua
2026-09-21 18:33:35 +08:00
committed by GitHub
2 changed files with 22 additions and 9 deletions
@@ -75,8 +75,6 @@ jobs:
if [ -z "$base" ] || [ "$base" = "0000000000000000000000000000000000000000" ] || ! git cat-file -e "$base^{commit}" 2>/dev/null; then
base="$head^"
fi
echo "Diffing $base..$head"
mapfile -t candidates < <(
git diff --name-only "$base" "$head" -- resources/profiles \
| sed -nE 's#^resources/profiles/([^/]+)/.*#\1#p; s#^resources/profiles/([^/]+)\.json$#\1#p' \
@@ -95,7 +93,6 @@ jobs:
done
if [ "${#vendors[@]}" -eq 0 ]; then
echo "No changed vendor profiles in this push; nothing to publish."
echo "vendors=" >> "$GITHUB_OUTPUT"
exit 0
fi
@@ -138,13 +135,10 @@ jobs:
done
if [ "${#unauthorized[@]}" -ne 0 ]; then
echo "Changed vendor profiles are not covered by FOLDER_MERGERS: ${unauthorized[*]}"
echo "No profile caches will be published for this push."
echo "vendors=" >> "$GITHUB_OUTPUT"
exit 0
fi
printf 'Changed vendors: %s\n' "${vendors[*]}"
echo "vendors=${vendors[*]}" >> "$GITHUB_OUTPUT"
- name: Resolve Orca version
@@ -163,7 +157,6 @@ jobs:
# OrcaCloud keys R2 on; orca_ver (X.Y.Z) is the asset-name prefix.
echo "release_tag=$raw" >> "$GITHUB_OUTPUT"
echo "orca_ver=$orca_ver" >> "$GITHUB_OUTPUT"
echo "Orca version: release_tag=$raw asset_prefix=$orca_ver"
- name: Validate profile versions
id: pver
@@ -179,7 +172,6 @@ jobs:
exit 1
fi
printf '%s\t%s\n' "$v" "$pv" >> "$RUNNER_TEMP/pver.tsv"
echo "$v -> $pv"
done
- name: Download generate_system_cache
@@ -214,7 +206,6 @@ jobs:
pv="$(awk -F'\t' -v v="$v" '$1==v{print $2}' "$RUNNER_TEMP/pver.tsv")"
name="${orca_ver}_${v}_${pv}_${ts}.zip"
( cd resources/profiles && zip -q -j "$out/$name" "$v.opc" )
echo "packaged $name"
done
echo "dir=$out" >> "$GITHUB_OUTPUT"
+22
View File
@@ -520,6 +520,28 @@ jobs:
} catch (error) {
core.warning(`Merged successfully, but dispatching build_all.yml failed: ${error.message}`);
}
// ---- re-kick the profile publish ----
// Same reason as above: post_merge_profiles.yml is push-triggered, so a
// GITHUB_TOKEN merge never starts it. workflow_dispatch skips the paths:
// filter, so only dispatch when the PR actually touched profiles.
const touchesProfiles = files.some((file) =>
[file.filename, file.previous_filename]
.filter(Boolean)
.some((p) => p.startsWith('resources/profiles/'))
);
if (touchesProfiles) {
try {
await github.rest.actions.createWorkflowDispatch({
owner,
repo,
workflow_id: 'post_merge_profiles.yml',
ref: pr.base.ref
});
core.info(`Dispatched post_merge_profiles.yml on ${pr.base.ref}.`);
} catch (error) {
core.warning(`Merged successfully, but dispatching post_merge_profiles.yml failed: ${error.message}`);
}
}
label-profile:
# Independent of the merge rules: any PR that changes only files inside