CI / CD (act)
SnakeFlow інтегрується з act — інструментом, що запускає GitHub Actions workflows локально в Docker-контейнерах. Ви отримуєте те саме виконання workflow, що й на GitHub CI, але на своїй машині, без push.
Вимоги
- act CLI — встановити з nektosact.com
- Windows:
winget install nektos.act - macOS:
brew install act - Linux: дивіться сторінку релізів act
- Windows:
- Docker Desktop (або будь-який сумісний Docker runtime) — act використовує Docker для виконання кроків workflow
Запуск workflow
Відкрийте Command Palette (Ctrl+Shift+P) і виконайте SnakeFlow: GitHub Actions (act) (або знайдіть у Quality Hub, якщо там є).
З’являється двокроковий вибір:
- Вибір workflow — усі
.yml/.yamlфайли з.github/workflows/перелічені з тригерами і кількістю jobs - Вибір job — оберіть конкретний job або запустіть усі
Якщо вибраний workflow посилається на ${{ secrets.* }}, крок налаштування секретів відкривається автоматично (див. Секрети нижче).
Секрети
Workflows, яким потрібні API-токени, credentials або environment-specific значення, оголошують їх як ${{ secrets.NAME }}. SnakeFlow автоматично знаходить усі посилання на секрети у файлі workflow — ручне налаштування не потрібне.
Введення секретів
Виконайте SnakeFlow: Manage CI Secrets з Command Palette. Відкривається список усіх секретів, знайдених у всіх workflow-файлах проєкту:
$(check) NAME— значення збережено; відображається як●●●●●●●● (stored)$(circle-slash) NAME— ще не задано; клікніть, щоб ввести значення
Введіть значення в захищеному InputBox. Значення зберігаються у VS Code SecretStorage — зашифроване сховище на основі ключниці ОС (Windows Credential Manager / macOS Keychain / libsecret). Вони ніколи не потрапляють на диск або в git.
Секрети прив’язані до проєкту та машини — кожен розробник зберігає свої credentials локально. Це навмисно: credentials не виходять за межі машини.
Секрети та Quality Hub
Коли перевірка act (CI local) запускається в Quality Hub (Ctrl+Alt+F), вона автоматично читає ті самі збережені секрети і передає їх як --secret NAME флаги та env-змінні. Жодних ручних кроків — налаштуйте секрети один раз через Manage CI Secrets, і їх використовуватимуть як інтерактивний запуск, так і Quality Hub.
Які секрети потрібні
Це залежить виключно від ваших workflows. SnakeFlow не знає і не прив’язаний до конкретних провайдерів — він сканує патерни ${{ secrets.* }} і показує кожне знайдене ім’я. Типові приклади:
| Призначення workflow | Типові імена секретів |
|---|---|
| Деплой у будь-який хмарний провайдер | API-токен провайдера (залежить від платформи) |
| Міграції бази даних | DATABASE_URL, DIRECT_URL |
| Container registry | REGISTRY_TOKEN, DOCKER_PASSWORD |
| Сканери безпеки | SEMGREP_APP_TOKEN, SNYK_TOKEN |
| Сервіси сповіщень | SLACK_WEBHOOK, DISCORD_TOKEN |
GITHUB_TOKEN надається act автоматично — встановлювати його не потрібно, якщо ви не хочете перевизначити значення.
Quality Hub — перевірка act
Провайдер builtin-act у Quality Hub запускає всі (або відфільтровані) workflows у фоні в рамках повного сканування якості і показує pass/fail по кожному workflow.
Очікувана поведінка за відсутності секретів локально:
- Workflows, що потребують credentials хмарного провайдера (deploy pipelines, remote scanners), завершаться з помилкою або пропустяться — це очікувано і не є проблемою коду
- Lint, type-check, build та unit-test jobs зазвичай не потребують секретів і проходять нормально
Налаштування
"devManager.ci.workflowsPath": ".github/workflows","devManager.ci.actExtraArgs": "","devManager.quality.builtin.act.enabled": true,"devManager.quality.builtin.act.workflow": "","devManager.quality.builtin.act.trigger": "push"| Налаштування | За замовчуванням | Опис |
|---|---|---|
devManager.ci.workflowsPath | .github/workflows | Відносний шлях до workflow-файлів |
devManager.ci.actExtraArgs | "" | Додаткові флаги для кожного виклику act (наприклад, --platform ubuntu-latest=...) |
devManager.quality.builtin.act.enabled | true | Увімкнути/вимкнути в Quality Hub |
devManager.quality.builtin.act.workflow | "" | Фільтр за назвою файлу — запускати тільки workflows, чия назва містить цей рядок |
devManager.quality.builtin.act.trigger | push | Тригер події для симуляції (push, pull_request, workflow_dispatch) |
Команди
| Команда | Опис |
|---|---|
| SnakeFlow: GitHub Actions (act) | Інтерактивний вибір workflow + job, потім запуск |
| SnakeFlow: Manage CI Secrets | Встановити / оновити / очистити збережені секрети для поточного проєкту |
Міграції в GitHub Actions
Локальний Quality Hub ловить багато помилок у міграціях, але CI має запускати ті самі класи команд, щоб merge не залежав лише від машини розробника (і щоб git commit --no-verify не обходив політику команди).
Вбудована перевірка Migrations CI Gate (devManager.quality.builtin.migrationsCiGate.enabled, за замовчуванням увімкнена) сканує .github/workflows/*.{yml,yaml} на кроки з інструментами безпеки міграцій — наприклад prisma migrate diff, drizzle-kit check, atlas migrate validate, SnakeFlow / cruise:err тощо. Якщо репозиторій визначено як Prisma/Drizzle/Atlas, але такого кроку немає, перевірка дає fail у Quality Hub зі зразком workflow.
Деталі: Вбудовані перевірки — база даних і міграції та Усі налаштування — realtime / precommit.
Примітки для Windows
- act потребує запущеного Docker Desktop до виконання workflows
- Деякі функції workflow (наприклад, блоки
services:для PostgreSQL) не підтримуються act на Windows — кроки, що залежать від Docker services, будуть пропущені або завершаться з помилкою - Для повного CI-паритету (включаючи database services) зробіть push на feature-гілку і дозвольте GitHub Actions виконати workflow віддалено
Пов’язані функції
- Quality Hub → — act запускається як одна з вбудованих CI-перевірок
- База даних і міграції → — Migrations CI Gate, No Manual Migrations, Prisma/Drizzle/Atlas
- Git-гілки → — керуйте гілками перед запуском CI