# PR #18: CI workflows (ubuntu-latest) + dependabot ## Что сделано - Перенесены .github/workflows/ (ci.yml, permissions-check.yml, adr-check.yml) + dependabot.yml - runs-on: [self-hosted, linux] → ubuntu-latest (security risk для public repo) - config/scripts/ → .opencode/scripts/ (пути в run steps + trigger paths) - ci.yml: branches [master] → [main] (новый репо использует main) - ci.yml: matrix 3.14 добавлен (ubuntu-latest поддерживает, self-hosted комментарий убран) - ci.yml: добавлен bootstrap job (checkout + file check + always passes) + output-based skip conditions на lint/test/typecheck/complexity (skip без src/*.py) - permissions-check.yml, adr-check.yml: step-level file checks (skip script execution без .opencode/scripts/) ## Почему Bootstrapping: CI нужен до #7 (.opencode/ scripts) и #5 (src/tests). bootstrap job гарантирует CI run на каждом PR. Output-based conditions skip jobs которые не могут работать без src/ или scripts/. ## Отклонение от spec - hashFiles() не распознан GitHub Actions в job-level `if` — заменён на output-based conditions (bootstrap job checks files, sets `has_src` output, jobs use `if: needs.bootstrap.outputs.has_src == 'true'`) - permissions-check/adr-check: job-level `if` заменён на step-level file checks (checkout → check → conditional run) - Дополнительно: branches [master] → [main], trigger paths config/ → .opencode/ (spec не упоминал) ## Pending - После #7: permissions-check/adr-check jobs активируются (scripts доступны) - После #5 (merge PR#17): lint/test/typecheck/complexity jobs активируются (src/ доступен) - Matrix 3.14 — проверить совместимость с ubuntu-latest ## Watch out - ci.yml НЕ перенесён "как есть" — добавлен bootstrap job + output-based conditions (адаптация для bootstrapping) - hashFiles() не работает в GitHub Actions job-level `if` — это известное ограничение, см. ADR-001 - branches: [master] → [main] — старый репо использовал master, новый main - trigger paths в permissions-check.yml/adr-check.yml: config/ → .opencode/ (config/ не существует в новом репо) - permissions-check.yml, adr-check.yml — skip до #7 (нет .opencode/scripts/) - dependabot.yml — без изменений (directory: "/config" для npm безвреден — директория не существует, dependabot просто пропустит)