Workflow
Конфігурований автоматизований процес GitHub Actions, визначений YAML-файлом у .github/workflows і запущений подією, вручну або за розкладом.
1. Теорія CI/CD та як ви можете інтегрувати тести в пайплайн →Відеобібліотека
Пошук у нотатках курсу Python мануфактура та спільних матеріалах з переходом на потрібну секунду.
Конфігурований автоматизований процес GitHub Actions, визначений YAML-файлом у .github/workflows і запущений подією, вручну або за розкладом.
1. Теорія CI/CD та як ви можете інтегрувати тести в пайплайн →Логічна ціль deployment у GitHub Actions, яка може мати власні protection rules, variables і secrets та обмежувати доступ до них.
1. Теорія CI/CD та як ви можете інтегрувати тести в пайплайн →Protected value, яке workflow отримує через secret context або environment, а не з version-controlled source. Відсутній secret у GitHub Actions expression повертає порожній string.
Юзер менеджмент та костилі з якими ви стикнетесь в житті →Пояснює передачу secrets у workflow і обмеження secret expressions.
Юзер менеджмент та костилі з якими ви стикнетесь в житті → Першоджерело ↗Показує найкоротший workflow path від checkout до smoke tests без винесення setup у composite action.
Pull request або manual dispatch створює smoke job на ubuntu-latest і запускає pytest marker smoke.
2. Практика та написання пайплану CI/CD →Runner повинен отримати base URLs, users, passwords, tokens та інші параметри без commit у репозиторій. У GitHub Actions значення можна зберігати як repository secrets/variables або прив’язувати до environments на кшталт DEV, STG і PROD. Environment-level значення зручні, коли ті самі ключі мають різні значення та правила доступу для різних середовищ. На реальному проєкті права на створення або зміну secrets можуть належати не автоматизатору. Це окрема залежність від власників репозиторію чи DevOps-команди, яку треба з’ясувати заздалегідь. Для малого набору параметрів не потрібно будувати складну config-систему: достатньо найпростішого контрольованого scope, який не розкриває секрети.
Окрема publish job завантажує artifacts, створені smoke/regression jobs, готує Pages artifact і виконує deployment. Artifact є мостом між runners: файл, створений однією job, не з’являється автоматично на машині іншої job. У repository settings джерелом Pages обирається GitHub Actions, а environment `github-pages` отримує правила deployment, сумісні з task branches. Наприкінці workflow ще має test failures, тому урок завершується чесною межею: механізм pipeline і Pages показано, але конкретні нестабільні тести потребують подальшого розбору.
Спроба вивести URL через `run` у неправильному місці YAML ламає workflow schema, і GitHub відхиляє конфігурацію ще до тестів. Команду переносять усередину валідного step. IDE plugin і GitHub validation допомагають ловити такі структурні помилки до або одразу після push. Фінальний мінімальний ланцюжок: pytest створює `allure-results`, test jobs передають їх як artifacts, publish job генерує site, GitHub Pages розміщує report, а Playwright traces поки зберігаються окремо як надійний diagnostic artifact.
Для запуску Python-тестів у CI потрібно відтворити ті самі базові дії, що й локально: отримати код, встановити Python і залежності, окремо встановити браузери Playwright, запустити lint/format checks та потрібний набір тестів. `pipeline` описує весь процес, а `stage`, `job` і `step` — його менші етапи; точна вкладеність і назви залежать від GitHub Actions, GitLab CI, Jenkins, TeamCity, Bamboo чи іншої системи. Найпоширеніший декларативний формат — YAML. Він дає змогу зберігати pipeline поруч із кодом і однаково описувати послідовність команд, образ середовища, залежності між jobs та умови запуску без окремої мови програмування для кожного CI-продукту.
Після падіння smoke job у її artifacts знаходиться архів із traces. Його завантажують і переносять у локальний проєкт або тимчасову директорію для аналізу. Trace відкривається командою `playwright show-trace`, яку можна викликати через інструмент керування Python-середовищем проєкту.
Workflow починається з назви та triggers. Для перевірки змін використовується `pull_request`, для регулярного прогону — `schedule`, а `workflow_dispatch` дозволяє запустити вибраний набір вручну. Scheduled run є прийнятним компромісом, коли deployment events або сам delivery pipeline ще нестабільні, але команді вже потрібен регулярний feedback. Перша job виконує checkout репозиторію, налаштовує `uv` і Python, встановлює dependencies, запускає Ruff та format check. Checkout обов’язковий, бо runner стартує без коду проєкту.