-
-
Notifications
You must be signed in to change notification settings - Fork 15
117 lines (111 loc) · 3.87 KB
/
ci-nightly.yml
File metadata and controls
117 lines (111 loc) · 3.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
name: CI Nightly
# Tier 3 — 1x/day 확장 회귀 (목표 ≤ 45분).
# UTC 15:00 = KST 00:00. Data Sync (18:00 UTC) 전 여유 시간대.
#
# 책임: realdata-suite 전수 (path-filter 우회, 20 shard 모두) + 외부 venv smoke +
# freshInstall + cross-os-realdata. PR/master ci-fast/full 이 비즈니스 로직 회귀
# 를 담당하면, 본 파일은 **환경/데이터/분포 edge** 를 잡는다.
on:
schedule:
- cron: "0 15 * * *" # UTC 15:00 = KST 00:00 daily
workflow_dispatch:
inputs:
skip_realdata:
description: "realdata-suite-full 건너뜀 (외부 venv / freshInstall 만)"
default: "false"
type: choice
options: ["true", "false"]
concurrency:
group: ci-nightly
cancel-in-progress: false # nightly 는 cron 자연 간격 → 중첩 거의 없음
jobs:
# realData 20 shard 전수 — planRealdata 우회 (infra 변경 여부 무관).
realdata-suite-full:
if: ${{ github.event.inputs.skip_realdata != 'true' }}
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
test_file:
- test_ai.py
- test_analysis.py
- test_analysisAxes.py
- test_companyExhaustive.py
- test_companyFacade.py
- test_companyTopics.py
- test_credit.py
- test_creditAxes.py
- test_freshInstall.py
- test_gather.py
- test_gatherAxes.py
- test_industry.py
- test_macro.py
- test_macroAxes.py
- test_quant.py
- test_story.py
- test_scan.py
- test_scanAxes.py
- test_search.py
- test_topLevelApi.py
steps:
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"
cache: "pip"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest pytest-asyncio pytest-rerunfailures hypothesis
pip install -e .[all]
- name: Run ${{ matrix.test_file }}
env:
DARTLAB_DATA_DIR: ${{ github.workspace }}/tests/fixtures
PYTEST_MEMORY_LIMIT_MB: "6000"
DARTLAB_TEST_LOCKED: "1"
run: |
bash scripts/dev/test-realdata.sh tests/realData/${{ matrix.test_file }} -v --tb=short
# 최신 PyPI wheel 을 빈 venv 에 설치 후 8 엔진 smoke.
# 본 세션에서 수동 실행하던 것 자동화 — 사용자 실제 경험 재현.
external-venv-smoke:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install latest PyPI wheel in fresh venv
run: |
python -m venv /tmp/smoke-venv
/tmp/smoke-venv/bin/python -m pip install --upgrade pip
/tmp/smoke-venv/bin/python -m pip install dartlab
- name: Run 8-engine smoke
run: |
/tmp/smoke-venv/bin/python -X utf8 scripts/audit/externalVenvSmoke.py
env:
PYTHONUNBUFFERED: "1"
# freshInstall — 빈 캐시에서 HF 자동 다운로드 경로 검증.
freshInstall:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest pytest-asyncio pytest-rerunfailures hypothesis
pip install -e .[all]
- name: Run freshInstall tests (완전 빈 캐시)
env:
PYTEST_MEMORY_LIMIT_MB: "6000"
DARTLAB_TEST_LOCKED: "1"
run: |
bash scripts/dev/test-realdata.sh tests/realData/test_freshInstall.py -v --tb=short