CI/CD — Red→Green 사이클 + 자동 push 프로세스 #6

Closed
opened 2026-05-08 15:27:36 +09:00 by HYUNJUNGLEE · 2 comments
Owner

사용자 피드백 #6: 관리 원칙 정립 필요, Red→Green 완료되면 Git에 자동 업로드 프로세스 구축 (ruff, pytest 등을 적극 활용).

적용 결과

  • .gitea/workflows/ci.yml (commit e9cc6bf, 86줄) — push/PR마다 ruff + py_compile + pytest.
  • .pre-commit-config.yaml — local commit 게이트 (ruff fix + 위생).
  • CONTRIBUTING.md — Red→Green→Push 사이클 명시.

잔여 — 자동 push

현재는 사람 손 git push. 다음 라운드 후보:

  • (A) pre-push hook에서 ruff+pytest pass 시 자동 push (한 번 더 사람 확인)
  • (B) 로컬 watch 데몬 — Green 도달 직후 자동 push
  • (C) 권장: feature 브랜치만 자동 push, main은 항상 PR

옵션 C 권장 — main 보호는 Gitea Repo Settings → Branch Protection.

**사용자 피드백 #6**: 관리 원칙 정립 필요, Red→Green 완료되면 Git에 자동 업로드 프로세스 구축 (ruff, pytest 등을 적극 활용). ## 적용 결과 - ✅ `.gitea/workflows/ci.yml` (commit `e9cc6bf`, 86줄) — push/PR마다 ruff + py_compile + pytest. - ✅ `.pre-commit-config.yaml` — local commit 게이트 (ruff fix + 위생). - ✅ `CONTRIBUTING.md` — Red→Green→Push 사이클 명시. ## 잔여 — 자동 push 현재는 사람 손 `git push`. 다음 라운드 후보: - (A) `pre-push` hook에서 ruff+pytest pass 시 자동 push (한 번 더 사람 확인) - (B) 로컬 watch 데몬 — Green 도달 직후 자동 push - (C) **권장**: feature 브랜치만 자동 push, main은 항상 PR 옵션 C 권장 — main 보호는 Gitea Repo Settings → Branch Protection.
Author
Owner

Closed — 기본 CI 게이트 완성 (commit e9cc6bf).

  • .gitea/workflows/ci.yml 86줄 — push/PR마다 ruff + py_compile + pytest 매트릭스.
  • .pre-commit-config.yaml 55줄 — local commit 게이트.
  • CONTRIBUTING.md — Red→Green→Push 사이클 명시.

자동 push 정책은 별도 결정 사항 (옵션 C 권장: feature 브랜치 자동 + main은 PR). 사용자가 정책 확정 후 별도 이슈로 추적하는 게 깔끔. 본 이슈는 "기본 게이트" 범위로 close.

**Closed — 기본 CI 게이트 완성 (commit `e9cc6bf`).** - `.gitea/workflows/ci.yml` 86줄 — push/PR마다 ruff + py_compile + pytest 매트릭스. - `.pre-commit-config.yaml` 55줄 — local commit 게이트. - `CONTRIBUTING.md` — Red→Green→Push 사이클 명시. **자동 push 정책은 별도 결정 사항** (옵션 C 권장: feature 브랜치 자동 + main은 PR). 사용자가 정책 확정 후 별도 이슈로 추적하는 게 깔끔. 본 이슈는 "기본 게이트" 범위로 close.
Author
Owner

CI uv setup 실패 — 진단 + fix (commit fc96300)

이전 #6 close 직후부터 8개 push 동안 7개 CI run 이 모두 failure 였음. 사용자 보고로 발견.

원인

astral-sh/setup-uv@v3enable-cache: true 옵션이 cache key 산출용 **/uv.lock 검색 → 미발견 시 hard fail. 우리 repo 에 uv.lock 부재.

::error::No file in /workspace/HYUNJUNGLEE/s-canvas matched to [**/uv.lock]
❌ Failure - Main Setup uv (fast Python pkg manager)

추가 발견 (uv lock 시도 시 노출)

  1. [tool.uv] no-progress = false — uv 0.11+ deprecated, parse error.
  2. dependencies hard pin 충돌: scipy==1.13.1 vs [py313] scipy>=1.14, pyproj==3.6.1 vs pyproj>=3.7,<4.
  3. pyproj>=3.7 가 Py3.11+ wheel 만 — requires-python = ">=3.9" 와 충돌.

적용

  • uv.lock 생성 (438 KB, 89 packages 해결).
  • pyproject.toml: hard pin → range pin (>=), requires-python >=3.11, deprecated 옵션 제거.
  • .gitea/workflows/ci.yml: cache-dependency-glob: "uv.lock", install step 단순화, shell: bash 명시.

결과

Run #8 (fc96300) → success. 이전 7 runs 모두 failure → fix 후 첫 Green.

본 이슈는 close 유지. 기본 CI 게이트는 이제 정상. 자동 push 정책 (옵션 A/B/C) 은 여전히 별도 결정.

## CI uv setup 실패 — 진단 + fix (commit `fc96300`) 이전 #6 close 직후부터 8개 push 동안 7개 CI run 이 모두 `failure` 였음. 사용자 보고로 발견. ### 원인 `astral-sh/setup-uv@v3` 의 `enable-cache: true` 옵션이 cache key 산출용 `**/uv.lock` 검색 → 미발견 시 hard fail. 우리 repo 에 `uv.lock` 부재. ``` ::error::No file in /workspace/HYUNJUNGLEE/s-canvas matched to [**/uv.lock] ❌ Failure - Main Setup uv (fast Python pkg manager) ``` ### 추가 발견 (uv lock 시도 시 노출) 1. `[tool.uv] no-progress = false` — uv 0.11+ deprecated, parse error. 2. `dependencies` hard pin 충돌: `scipy==1.13.1` vs `[py313]` `scipy>=1.14`, `pyproj==3.6.1` vs `pyproj>=3.7,<4`. 3. `pyproj>=3.7` 가 Py3.11+ wheel 만 — `requires-python = ">=3.9"` 와 충돌. ### 적용 - `uv.lock` 생성 (438 KB, 89 packages 해결). - `pyproject.toml`: hard pin → range pin (`>=`), `requires-python` `>=3.11`, deprecated 옵션 제거. - `.gitea/workflows/ci.yml`: `cache-dependency-glob: "uv.lock"`, install step 단순화, `shell: bash` 명시. ### 결과 Run #8 (`fc96300`) → ✅ **success**. 이전 7 runs 모두 failure → fix 후 첫 Green. 본 이슈는 close 유지. 기본 CI 게이트는 이제 정상. 자동 push 정책 (옵션 A/B/C) 은 여전히 별도 결정.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: HYUNJUNGLEE/s-canvas#6