mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-06 05:51:15 +08:00
ci(release): harden beta validation gates
This commit is contained in:
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@@ -1952,7 +1952,7 @@ jobs:
|
||||
name: "macos-swift"
|
||||
needs: [preflight]
|
||||
if: needs.preflight.outputs.run_macos_swift == 'true'
|
||||
runs-on: ${{ github.event_name == 'workflow_dispatch' && 'macos-latest' || (github.repository == 'openclaw/openclaw' && 'blacksmith-12vcpu-macos-latest' || 'macos-latest') }}
|
||||
runs-on: ${{ github.event_name == 'workflow_dispatch' && 'macos-26' || (github.repository == 'openclaw/openclaw' && 'blacksmith-12vcpu-macos-latest' || 'macos-26') }}
|
||||
timeout-minutes: 20
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
||||
@@ -518,7 +518,7 @@ jobs:
|
||||
openai_model: openai/gpt-5.4
|
||||
ubuntu_runner: ubuntu-24.04
|
||||
windows_runner: windows-2025
|
||||
macos_runner: macos-latest
|
||||
macos_runner: macos-26
|
||||
secrets:
|
||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
|
||||
@@ -200,7 +200,7 @@ validate_changelog_entry_for_pr() {
|
||||
pr_pattern="(#$pr|openclaw#$pr)"
|
||||
|
||||
local with_pr
|
||||
with_pr=$(printf '%s\n' "$added_lines" | rg -in "$pr_pattern" || true)
|
||||
with_pr=$(printf '%s\n' "$added_lines" | grep -Ein "$pr_pattern" || true)
|
||||
if [ -z "$with_pr" ]; then
|
||||
echo "CHANGELOG.md update must reference PR #$pr (for example, (#$pr))."
|
||||
exit 1
|
||||
@@ -338,7 +338,7 @@ END {
|
||||
|
||||
if changelog_thanks_required_for_contributor "$contrib"; then
|
||||
local with_pr_and_thanks
|
||||
with_pr_and_thanks=$(printf '%s\n' "$added_lines" | rg -in "$pr_pattern" | rg -i "thanks @$contrib" || true)
|
||||
with_pr_and_thanks=$(printf '%s\n' "$added_lines" | grep -Ein "$pr_pattern" | grep -Fi "thanks @$contrib" || true)
|
||||
if [ -z "$with_pr_and_thanks" ]; then
|
||||
echo "CHANGELOG.md update must include both PR #$pr and thanks @$contrib on the changelog entry line."
|
||||
exit 1
|
||||
@@ -353,7 +353,7 @@ END {
|
||||
fi
|
||||
|
||||
local with_pr_and_any_thanks
|
||||
with_pr_and_any_thanks=$(printf '%s\n' "$added_lines" | rg -in "$pr_pattern" | rg -i '\bthanks[[:space:]]+@' || true)
|
||||
with_pr_and_any_thanks=$(printf '%s\n' "$added_lines" | grep -Ein "$pr_pattern" | grep -Ei '(^|[[:space:]])thanks[[:space:]]+@' || true)
|
||||
if [ -z "$with_pr_and_any_thanks" ]; then
|
||||
echo "CHANGELOG.md update for bot/app/non-creditable author $contrib must include an explicit human Thanks @handle on the PR #$pr entry line."
|
||||
echo "Choose the credited original contributor, or stop for maintainer input if authorship is unclear."
|
||||
@@ -377,7 +377,7 @@ validate_changelog_merge_hygiene() {
|
||||
fi
|
||||
|
||||
local removed_refs
|
||||
removed_refs=$(printf '%s\n' "$removed_lines" | rg -o '#[0-9]+' | sort -u || true)
|
||||
removed_refs=$(printf '%s\n' "$removed_lines" | grep -Eo '#[0-9]+' | sort -u || true)
|
||||
if [ -z "$removed_refs" ]; then
|
||||
return 0
|
||||
fi
|
||||
@@ -391,7 +391,7 @@ validate_changelog_merge_hygiene() {
|
||||
local ref
|
||||
while IFS= read -r ref; do
|
||||
[ -z "$ref" ] && continue
|
||||
if ! printf '%s\n' "$added_lines" | rg -q -F "$ref"; then
|
||||
if ! printf '%s\n' "$added_lines" | grep -Fq "$ref"; then
|
||||
echo "CHANGELOG.md drops existing entry reference $ref without re-adding it."
|
||||
echo "Likely merge conflict loss; restore the dropped entry (or keep the same PR ref in rewritten text)."
|
||||
exit 1
|
||||
|
||||
@@ -236,7 +236,8 @@ describe("scripts/lib/plugin-prerelease-test-plan.mjs", () => {
|
||||
permissions: {
|
||||
contents: "read",
|
||||
},
|
||||
"runs-on": "blacksmith-8vcpu-ubuntu-2404",
|
||||
"runs-on":
|
||||
"${{ github.event_name == 'workflow_dispatch' && 'ubuntu-24.04' || 'blacksmith-8vcpu-ubuntu-2404' }}",
|
||||
steps: [
|
||||
{
|
||||
name: "Checkout",
|
||||
|
||||
@@ -42,7 +42,7 @@ describe("happy path prompt snapshots", () => {
|
||||
|
||||
beforeAll(async () => {
|
||||
generatedSnapshots = await createFormattedPromptSnapshotFiles();
|
||||
});
|
||||
}, 300_000);
|
||||
|
||||
it("matches the committed Codex prompt snapshot artifacts", async () => {
|
||||
const expectedPaths = new Set(generatedSnapshots.map((file) => file.path));
|
||||
|
||||
Reference in New Issue
Block a user