diff --git a/.forgejo/workflows/stale-claims.yml b/.forgejo/workflows/stale-claims.yml index 98d9ae48..171c9ebe 100644 --- a/.forgejo/workflows/stale-claims.yml +++ b/.forgejo/workflows/stale-claims.yml @@ -28,18 +28,6 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 - - name: Diagnostic — runner environment - run: | - echo "=== runner environment ===" - echo "shell: $SHELL" - echo "bash: $(bash --version | head -1)" - echo "python3: $(python3 --version 2>&1 || echo 'NOT INSTALLED')" - echo "curl: $(curl --version | head -1)" - echo "mktemp: $(mktemp --version | head -1 2>&1 || echo 'no --version')" - echo "pwd: $(pwd)" - echo "ls scripts/: $(ls scripts/ 2>&1)" - echo "script exists: $(test -f scripts/cleanup-stale-claims.sh && echo yes || echo no)" - - name: Run cleanup script env: FORGEJO_TOKEN: ${{ secrets.FORGEJO_BOT_QA_TOKEN }} @@ -47,14 +35,5 @@ jobs: FORGEJO_REPO: lekss361/gendesign STALE_HOURS: 4 run: | - echo "=== env check ===" - echo "FORGEJO_TOKEN length: ${#FORGEJO_TOKEN}" - echo "FORGEJO_URL: $FORGEJO_URL" - echo "FORGEJO_REPO: $FORGEJO_REPO" - echo "STALE_HOURS: $STALE_HOURS" - echo "=== check token works ===" - curl -sS -H "Authorization: token $FORGEJO_TOKEN" "$FORGEJO_URL/api/v1/user" | head -c 200 - echo "" - echo "=== run script with -x trace ===" chmod +x scripts/cleanup-stale-claims.sh - bash -x scripts/cleanup-stale-claims.sh + ./scripts/cleanup-stale-claims.sh diff --git a/scripts/cleanup-stale-claims.sh b/scripts/cleanup-stale-claims.sh index 3eebf60c..c33ed9d5 100644 --- a/scripts/cleanup-stale-claims.sh +++ b/scripts/cleanup-stale-claims.sh @@ -65,8 +65,10 @@ for PAGE in 1 2 3 4 5 6 7 8 9 10; do fi done -# Парсим JSON -cat "$ISSUES_TMP" | python3 <<'PYEOF' +# Парсим JSON — читаем файл прямо в Python через env var (не через pipe `cat | python3`). +# При pipe + sys.exit(0) после print, cat получает SIGPIPE → script exits 141 под +# set -o pipefail. Передача path через env var не использует pipe → no SIGPIPE. +ISSUES_FILE="$ISSUES_TMP" python3 <<'PYEOF' import json, os, subprocess, sys, datetime cutoff = int(os.environ.get("CUTOFF", "0")) @@ -75,7 +77,8 @@ if cutoff == 0: sys.exit(1) # Read pagination output — multiple JSON arrays separated by "---PAGE_END---" -raw = sys.stdin.read() +with open(os.environ["ISSUES_FILE"]) as f: + raw = f.read() pages = [p.strip() for p in raw.split("---PAGE_END---") if p.strip()] data = [] for p in pages: