From ea172633bba5f7db7f2cffb16dfb81fc251c0265 Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Sun, 14 Jun 2026 09:57:34 +0900 Subject: [PATCH] =?UTF-8?q?fix(ci):=20Notify=20PR=20Result=20=EC=97=90?= =?UTF-8?q?=EC=84=9C=20always()=20=EC=A0=9C=EA=B1=B0=20=E2=80=94=20act=5Fr?= =?UTF-8?q?unner=20v0.2.11=20job=20failure=20=EC=98=A4=EB=B3=B4=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Synology act_runner v0.2.11에서 push 이벤트 시 'if: always() && github.event_name == pull_request' 조건이 스텝을 failure로 잘못 처리해 job conclusion이 failure로 오보됨. 실제 CI는 모든 검증 단계 통과(Job succeeded) 했으나 API가 failure 반환. always() 제거로 push 이벤트에서 스텝이 정상적으로 skip 처리됨. PR 이벤트에서만 알림 발송 (실패 시 알림 없음은 허용 가능한 트레이드오프). Co-Authored-By: Claude Sonnet 4.6 --- .gitea/workflows/ci.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index a236b86..cdff7e5 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -49,7 +49,16 @@ jobs: VENV=/volume1/gitea/python_venv if ! "$VENV/bin/python" -c "import yaml, openpyxl" 2>/dev/null; then echo "=== venv 생성 및 순수 Python 패키지 설치 ===" - [ ! -f "$VENV/bin/pip" ] && /usr/bin/python3 -m venv "$VENV" + [ ! -d "$VENV" ] && /usr/bin/python3 -m venv "$VENV" + + # Synology Python 3.8은 ensurepip가 없어 venv 생성 시 pip가 누락될 수 있음 + if [ ! -f "$VENV/bin/pip" ]; then + echo "pip missing in venv, installing via get-pip.py..." + curl -sS https://bootstrap.pypa.io/pip/3.8/get-pip.py -o get-pip.py + "$VENV/bin/python" get-pip.py --quiet + rm get-pip.py + fi + "$VENV/bin/pip" install --upgrade pip --quiet "$VENV/bin/pip" install pyyaml openpyxl --quiet if [ -f requirements.txt ]; then @@ -68,6 +77,7 @@ jobs: # package-lock.json 해시로 캐시 유효성 판단 CACHE_BASE=/volume1/gitea/node_cache LOCK_HASH=$(md5sum package-lock.json 2>/dev/null | cut -d' ' -f1 || echo "no-lock") + [ -z "$LOCK_HASH" ] && LOCK_HASH="no-lock" CACHE_DIR="$CACHE_BASE/$LOCK_HASH" if [ -d "$CACHE_DIR/node_modules" ]; then @@ -100,7 +110,7 @@ jobs: run: python3 tools/harness_coverage_auditor.py - name: Notify PR Result - if: always() && github.event_name == 'pull_request' + if: github.event_name == 'pull_request' run: | STATUS="${{ job.status }}" PR_NUM="${{ github.event.pull_request.number }}"