docs/tools: Gitea token home & PR harness 검증 도구 개선
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 13s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Deploy to Production / Build & Deploy to Production (push) Failing after 2m27s

- docs/GITEA_TOKEN_HOME.md: 토큰 홈 설정 문서 업데이트
- docs/GITEA_TOKEN_HOME_RUNBOOK.md: 런북 보완
- docs/GITEA_VARIABLES_FAILURE_ANALYSIS.md: 실패 분석 문서 수정
- docs/GITEA_VARIABLES_RUNBOOK.md: 변수 런북 수정
- tools/validate_gitea_pr_harness_v1.py: PR 하네스 검증 스크립트 개선
- tools/validate_gitea_token_home_v1.py: 토큰 홈 검증 스크립트 개선
This commit is contained in:
2026-07-06 17:15:21 +09:00
parent 324313d8f3
commit a5493142f9
6 changed files with 18 additions and 13 deletions
+3 -3
View File
@@ -1,6 +1,6 @@
# GITEA_TOKEN_HOME
# GITEA_TOKEN_TAXBAIK
`GITEA_TOKEN_HOME` is the local API token used to validate and optionally dispatch Gitea Actions from this workspace.
`GITEA_TOKEN_TAXBAIK` is the local API token used to validate and optionally dispatch Gitea Actions from this workspace.
## Purpose
@@ -25,7 +25,7 @@ python tools/validate_gitea_token_home_v1.py --dispatch --workflow kis_data_coll
## Expected behavior
- Without `GITEA_TOKEN_HOME`, the harness exits with `GITEA_TOKEN_HOME missing or empty`.
- Without `GITEA_TOKEN_TAXBAIK`, the harness exits with `GITEA_TOKEN_TAXBAIK missing or empty`.
- With a valid token, the harness should return `gate: PASS`.
- With `--dispatch`, the harness posts a workflow dispatch and reports the latest run evidence.
+3 -3
View File
@@ -1,8 +1,8 @@
# GITEA_TOKEN_HOME Runbook
# GITEA_TOKEN_TAXBAIK Runbook
## 1. Confirm presence
Check that `GITEA_TOKEN_HOME` is set in the shell that runs the harness.
Check that `GITEA_TOKEN_TAXBAIK` is set in the shell that runs the harness.
## 2. Validate read-only access
@@ -30,7 +30,7 @@ Expected:
## 4. If it fails
- `GITEA_TOKEN_HOME missing or empty`: environment is not configured
- `GITEA_TOKEN_TAXBAIK missing or empty`: environment is not configured
- `401 Unauthorized`: token is wrong or lacks repo scope
- `404 Not Found`: repo or workflow path mismatch
- `latest_run_missing`: dispatch accepted, but run listing lagged behind
+1 -1
View File
@@ -15,7 +15,7 @@ Likely causes:
Empirical note:
- A direct API dispatch probe to the workflow endpoint returned `401 Unauthorized` in this workspace, which means API-triggered execution still needs a valid repository token.
- With `GITEA_TOKEN_HOME`, dispatch succeeds and creates a queued run, so the remaining bottleneck can be runner capacity rather than API auth.
- With `GITEA_TOKEN_TAXBAIK`, dispatch succeeds and creates a queued run, so the remaining bottleneck can be runner capacity rather than API auth.
Observed root cause for `run 161`:
+1 -1
View File
@@ -49,7 +49,7 @@ Short operator flow for KIS variable-backed workflows.
## API-trigger path
If you have `GITEA_TOKEN_HOME` available, you can use the token harness:
If you have `GITEA_TOKEN_TAXBAIK` available, you can use the token harness:
```bash
python tools/validate_gitea_token_home_v1.py --dispatch --workflow kis_data_collection.yml --ref main
+5 -2
View File
@@ -20,10 +20,13 @@ def _token() -> str:
# GITEA_TOKEN 환경 변수가 우선
token = os.environ.get("GITEA_TOKEN", "")
if not token.strip():
# 없으면 GITEA_TOKEN_HOME fallback
# 없으면 GITEA_TOKEN_TAXBAIK fallback
token = os.environ.get("GITEA_TOKEN_TAXBAIK", "")
if not token.strip():
# legacy fallback
token = os.environ.get("GITEA_TOKEN_HOME", "")
if not token.strip():
raise SystemExit("GITEA_TOKEN 또는 GITEA_TOKEN_HOME 환경 변수가 설정되어 있지 않습니다.")
raise SystemExit("GITEA_TOKEN 또는 GITEA_TOKEN_TAXBAIK 환경 변수가 설정되어 있지 않습니다.")
return token.strip()
+5 -3
View File
@@ -18,9 +18,11 @@ DEFAULT_REPO = "myfinance"
def _token() -> str:
token = os.environ.get("GITEA_TOKEN_HOME", "")
token = os.environ.get("GITEA_TOKEN_TAXBAIK", "")
if not token.strip():
raise SystemExit("GITEA_TOKEN_HOME missing or empty")
token = os.environ.get("GITEA_TOKEN_HOME", "")
if not token.strip():
raise SystemExit("GITEA_TOKEN_TAXBAIK missing or empty")
return token.strip()
@@ -69,7 +71,7 @@ def _latest_run(workflow_runs: Any, workflow_name: str) -> dict[str, Any] | None
def main() -> int:
ap = argparse.ArgumentParser(description="Validate and optionally dispatch Gitea Actions using GITEA_TOKEN_HOME.")
ap = argparse.ArgumentParser(description="Validate and optionally dispatch Gitea Actions using GITEA_TOKEN_TAXBAIK.")
ap.add_argument("--base-url", default=DEFAULT_BASE_URL)
ap.add_argument("--owner", default=DEFAULT_OWNER)
ap.add_argument("--repo", default=DEFAULT_REPO)