From ad9d68e525c6db8d1a7e2f6c9293d3b2a340b6ac Mon Sep 17 00:00:00 2001 From: openhands Date: Tue, 17 Mar 2026 09:48:13 +0000 Subject: [PATCH] fix: dev-agent merge gate requires CI even for projects without CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Same pattern as review-poll — projects with WOODPECKER_REPO_ID=0 treat empty/unknown CI as pass for the merge gate. --- dev/dev-agent.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dev/dev-agent.sh b/dev/dev-agent.sh index a40186d..5d74406 100755 --- a/dev/dev-agent.sh +++ b/dev/dev-agent.sh @@ -492,7 +492,13 @@ ${CHANGE_SUMMARY} jq -r '[.[] | select(.stale == false and .state == "APPROVED")] | length') CI_NOW=$(curl -sf -H "Authorization: token ${CODEBERG_TOKEN}" \ "${API}/commits/$(git -C "$REPO_ROOT" rev-parse "origin/${BRANCH}" 2>/dev/null || echo HEAD)/status" | jq -r '.state // "unknown"') - if [ "${EXISTING_APPROVAL:-0}" -gt 0 ] && [ "$CI_NOW" = "success" ]; then + CI_PASS=false + if [ "$CI_NOW" = "success" ]; then + CI_PASS=true + elif [ "${WOODPECKER_REPO_ID:-2}" = "0" ] && { [ -z "$CI_NOW" ] || [ "$CI_NOW" = "pending" ] || [ "$CI_NOW" = "unknown" ]; }; then + CI_PASS=true # no CI configured for this project + fi + if [ "${EXISTING_APPROVAL:-0}" -gt 0 ] && [ "$CI_PASS" = true ]; then log "PR already approved + CI green — attempting merge" MERGE_HTTP=$(curl -s -o /dev/null -w "%{http_code}" -X POST \ -H "Authorization: token ${CODEBERG_TOKEN}" \