증거: R10 사실 감사를 최신 평가 번들에 연결한다 #702
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| branches: ["main"] | |
| push: | |
| branches: ["main"] | |
| workflow_dispatch: | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| jobs: | |
| backend: | |
| runs-on: ubuntu-latest | |
| env: | |
| UV_PYTHON: ${{ matrix.python-version }} | |
| strategy: | |
| matrix: | |
| python-version: ["3.12", "3.13"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| cache: "npm" | |
| cache-dependency-path: | | |
| editor/package-lock.json | |
| landing/package-lock.json | |
| - name: Install editor | |
| working-directory: editor | |
| run: npm ci | |
| - name: Install landing | |
| working-directory: landing | |
| run: npm ci | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| enable-cache: true | |
| - name: Set up Python ${{ matrix.python-version }} | |
| run: uv python install ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: uv sync --extra dev --python ${{ matrix.python-version }} | |
| - name: Verify Python ${{ matrix.python-version }} | |
| run: | | |
| uv run python -c "import sys; expected='${{ matrix.python-version }}'; actual=f'{sys.version_info.major}.{sys.version_info.minor}'; print(sys.version); assert actual == expected, (actual, expected)" | |
| - name: Run root clean gate | |
| run: uv run python -X utf8 tests/run.py gate root-clean | |
| - name: Run docs gate | |
| run: uv run python -X utf8 tests/run.py gate docs | |
| - name: Run architecture boundary gate | |
| run: uv run python -X utf8 tests/run.py gate architecture-boundary | |
| - name: Verify PRD evaluation contract | |
| if: matrix.python-version == '3.12' | |
| run: uv run python -X utf8 tests/run.py gate evaluation-contract | |
| - name: Observe plan quality bootstrap | |
| if: matrix.python-version == '3.12' | |
| continue-on-error: true | |
| run: uv run python -X utf8 tests/run.py gate plan-quality | |
| - name: Run backend gate | |
| run: uv run python -X utf8 tests/run.py gate backend | |
| - name: Run learning evidence contract | |
| if: matrix.python-version == '3.12' | |
| run: uv run python -X utf8 tests/run.py gate learning-evidence-contract | |
| - name: Verify removed learning concepts | |
| if: matrix.python-version == '3.12' | |
| run: uv run python -X utf8 tests/run.py gate removed-learning-concepts | |
| - name: Run learning efficacy report contract | |
| if: matrix.python-version == '3.12' | |
| run: uv run python -X utf8 tests/run.py gate learning-efficacy-report | |
| - name: Run curriculum quality matrix | |
| if: matrix.python-version == '3.12' | |
| timeout-minutes: 20 | |
| run: uv run python -X utf8 tests/run.py gate curriculum-quality-matrix | |
| - name: Verify repository simplification | |
| if: matrix.python-version == '3.12' | |
| timeout-minutes: 10 | |
| run: uv run python -X utf8 tests/run.py gate repository-simplification | |
| - name: Run widget-bridge gate | |
| run: uv run python -X utf8 tests/run.py gate widget-bridge | |
| - name: Run app-runtime gate | |
| run: uv run python -X utf8 tests/run.py gate app-runtime | |
| - name: Run mobile-layout gate | |
| run: uv run python -X utf8 tests/run.py gate mobile-layout | |
| editor: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| cache: "npm" | |
| cache-dependency-path: editor/package-lock.json | |
| - name: Install | |
| working-directory: editor | |
| run: npm ci | |
| - name: Build | |
| run: python -X utf8 tests/run.py gate editor-build | |
| landing: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| cache: "npm" | |
| cache-dependency-path: landing/package-lock.json | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| enable-cache: true | |
| - name: Install | |
| working-directory: landing | |
| run: npm ci | |
| - name: Build | |
| run: python -X utf8 tests/run.py gate landing-build | |
| experience: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 120 | |
| env: | |
| CODARO_FRONTEND_BUILD_REUSE: "1" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| enable-cache: true | |
| - name: Set up Python | |
| run: uv python install 3.12 | |
| - name: Install Python dependencies | |
| run: uv sync --extra dev --python 3.12 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| cache: "npm" | |
| cache-dependency-path: | | |
| editor/package-lock.json | |
| landing/package-lock.json | |
| - name: Install editor | |
| working-directory: editor | |
| run: npm ci | |
| - name: Install landing | |
| working-directory: landing | |
| run: npm ci | |
| - name: Install locked browser matrix | |
| timeout-minutes: 15 | |
| run: uv run python -m playwright install --with-deps chromium firefox webkit | |
| - name: Verify visual assets | |
| timeout-minutes: 15 | |
| run: uv run python -X utf8 tests/run.py gate visual-assets | |
| - name: Verify Astryx design system | |
| timeout-minutes: 15 | |
| run: uv run python -X utf8 tests/run.py gate design-system-contract | |
| - name: Verify theme runtime matrix | |
| timeout-minutes: 25 | |
| run: uv run python -X utf8 tests/run.py gate theme-runtime-browser | |
| - name: Verify visual accessibility matrix | |
| timeout-minutes: 25 | |
| run: uv run python -X utf8 tests/run.py gate visual-accessibility-browser | |
| - name: Verify direct learning method | |
| timeout-minutes: 15 | |
| run: uv run python -X utf8 tests/run.py gate learning-method | |
| - name: Verify Web learning | |
| timeout-minutes: 25 | |
| run: uv run python -X utf8 tests/run.py gate web-learning | |
| - name: Verify public landing | |
| timeout-minutes: 25 | |
| run: uv run python -X utf8 tests/run.py gate landing-public | |
| - name: Verify Local Studio | |
| timeout-minutes: 30 | |
| run: uv run python -X utf8 tests/run.py gate local-studio-browser | |
| - name: Verify Run and Local states | |
| timeout-minutes: 15 | |
| run: uv run python -X utf8 tests/run.py gate run-local-state-browser | |
| - name: Verify full product experience | |
| timeout-minutes: 30 | |
| run: uv run python -X utf8 tests/run.py gate product-experience-browser | |
| - name: Verify Astryx dual-theme journey | |
| timeout-minutes: 45 | |
| run: uv run python -X utf8 tests/run.py gate astryx-journey | |
| launcher: | |
| # 다운로드 엔진(타임아웃/재시도/resume mock 테스트)과 provision 경로를 실제 배포 타깃인 | |
| # Windows를 포함한 3개 OS에서 검증한다. "내 로컬은 되는데 다른 환경은 터진다"를 CI에서 막는다. | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Linux WebView dependencies | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev libxdo-dev | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Cache cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| launcher/target/ | |
| key: cargo-${{ runner.os }}-${{ hashFiles('launcher/Cargo.lock') }} | |
| - name: Check (no build) | |
| run: python -X utf8 tests/run.py gate launcher-check | |
| - name: Run tests | |
| run: python -X utf8 tests/run.py gate launcher-test | |
| webview2-evergreen: | |
| runs-on: windows-latest | |
| timeout-minutes: 35 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| enable-cache: true | |
| - name: Set up Python | |
| run: uv python install 3.12 | |
| - name: Install Python dependencies | |
| run: uv sync --extra dev --python 3.12 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| cache: "npm" | |
| cache-dependency-path: editor/package-lock.json | |
| - name: Install editor | |
| working-directory: editor | |
| run: npm ci | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache WebView2 smoke cargo build | |
| uses: actions/cache@v4 | |
| with: | |
| path: output/test-runner/product-browser-webview2-evergreen/cargo-target/ | |
| key: webview2-cargo-${{ runner.os }}-${{ hashFiles('launcher/Cargo.lock') }} | |
| - name: Verify native WebView2 product | |
| run: uv run python -X utf8 tests/run.py gate product-browser-webview2-evergreen |