mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
ci: update docs, verify on push
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
name: Quality
|
name: Quality
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
pull_request:
|
pull_request:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
|||||||
@@ -18,12 +18,11 @@
|
|||||||
(docs) + `pnpm --dir web exec prettier --check .` (код).
|
(docs) + `pnpm --dir web exec prettier --check .` (код).
|
||||||
- Полный быстрый gate: `pnpm verify`; подробная матрица команд и CI —
|
- Полный быстрый gate: `pnpm verify`; подробная матрица команд и CI —
|
||||||
`docs/quality-gates.md`.
|
`docs/quality-gates.md`.
|
||||||
- После пуша результат CI проверяется явно: смотреть и blocking `verify`, и
|
- После пуша результат CI проверяется явно: смотреть статусы отдельных job, а не
|
||||||
non-blocking `e2e` — если тот job вообще запускался. `Quality` workflow живёт
|
общий conclusion прогона. У `e2e` стоит `continue-on-error`, поэтому прогон с
|
||||||
на `pull_request` и `workflow_dispatch`, поэтому при прямом пуше в `main`
|
упавшим e2e помечается как `success`. `Quality` workflow запускается на каждом
|
||||||
выполняется только `Deploy to GitHub Pages` со своим `verify`, а browser
|
пуше в `main` и на `pull_request`, поэтому browser matrix проверяется сама;
|
||||||
matrix проверяется на PR или ручным запуском. Красный `e2e` не блокирует PR,
|
ручной запуск нужен только для старого коммита.
|
||||||
но остаётся падением — сообщать его фактический статус.
|
|
||||||
- Линтинг: `pnpm --dir web lint` (ESLint). Полный прогон дизайн-проверок:
|
- Линтинг: `pnpm --dir web lint` (ESLint). Полный прогон дизайн-проверок:
|
||||||
`pnpm --dir web lint:all` (ESLint + stylelint + токен-аудит). Каждый шаг
|
`pnpm --dir web lint:all` (ESLint + stylelint + токен-аудит). Каждый шаг
|
||||||
выполняется, даже если предыдущий упал. Новые изменения не должны добавлять
|
выполняется, даже если предыдущий упал. Новые изменения не должны добавлять
|
||||||
|
|||||||
@@ -123,8 +123,8 @@ E2E запускается отдельно от быстрых проверок
|
|||||||
|
|
||||||
Коммит и пуш делает разработчик. После пуша агент проверяет результат CI и
|
Коммит и пуш делает разработчик. После пуша агент проверяет результат CI и
|
||||||
сообщает его вместе с локальными проверками, включая случай, когда нужный job не
|
сообщает его вместе с локальными проверками, включая случай, когда нужный job не
|
||||||
запускался: `Quality` workflow с browser matrix живёт на `pull_request` и
|
запускался: статусы смотрятся по отдельным job, потому что общий conclusion
|
||||||
`workflow_dispatch`, поэтому прямой пуш в `main` проверяет только быстрый gate.
|
прогона с `continue-on-error` у `e2e` остаётся зелёным. Процедура описана в
|
||||||
Процедура описана в `docs/quality-gates.md`.
|
`docs/quality-gates.md`.
|
||||||
|
|
||||||
Следующий шаг начинается только после ревью текущего изменения.
|
Следующий шаг начинается только после ревью текущего изменения.
|
||||||
|
|||||||
@@ -112,7 +112,8 @@ pnpm --dir web test:e2e
|
|||||||
- Добавить отдельный workflow для pull request: typecheck, unit, rule-тесты,
|
- Добавить отдельный workflow для pull request: typecheck, unit, rule-тесты,
|
||||||
lint, format и build.
|
lint, format и build.
|
||||||
- E2E сначала запускать отдельным job; сделать его blocking после закрытия
|
- E2E сначала запускать отдельным job; сделать его blocking после закрытия
|
||||||
известных ошибок и стабилизации baseline.
|
известных ошибок и стабилизации baseline. Решение отложено: условия matrix
|
||||||
|
пересматриваются после Q6f.3, см. раздел 7 «Отложенное решение».
|
||||||
|
|
||||||
**Готово, когда:** одна команда воспроизводит все быстрые проверки, а deploy не
|
**Готово, когда:** одна команда воспроизводит все быстрые проверки, а deploy не
|
||||||
может пройти при type/unit/lint/build-ошибке.
|
может пройти при type/unit/lint/build-ошибке.
|
||||||
@@ -498,3 +499,20 @@ refactor, новые i18n-правила и исправление продук
|
|||||||
- Какие unused design tokens можно удалить, а какие должны остаться?
|
- Какие unused design tokens можно удалить, а какие должны остаться?
|
||||||
- Какие browser/e2e проверки должны быть обязательными для PR, а какие —
|
- Какие browser/e2e проверки должны быть обязательными для PR, а какие —
|
||||||
отдельным ночным прогоном?
|
отдельным ночным прогоном?
|
||||||
|
|
||||||
|
### Отложенное решение: условия matrix и blocking e2e
|
||||||
|
|
||||||
|
Окончательное решение про `e2e` в CI принимается **не сейчас**, а после
|
||||||
|
пересмотра условий тестов. К этому моменту нужно вернуться и решить одним шагом:
|
||||||
|
|
||||||
|
1. Пересмотреть условия matrix: какие спецификации обязаны идти в
|
||||||
|
`browserContractTests` и `mobileTests`, нужен ли `png-fixtures` вне Chromium
|
||||||
|
и что делать с engine-специфичными расхождениями декодеров.
|
||||||
|
2. Накопить стабильные прогоны `e2e` на раннере (сейчас ориентир — 276 тестов,
|
||||||
|
~3 мин на job) без падений по таймингу.
|
||||||
|
3. Только после этого решать, делать ли `e2e` blocking, и если да — снимать
|
||||||
|
`continue-on-error`, иначе общий conclusion прогона останется зелёным при
|
||||||
|
красном `e2e` (проверено на run `36225579363`).
|
||||||
|
|
||||||
|
До этого решения `e2e` остаётся non-blocking baseline, а его фактический статус
|
||||||
|
проверяется по отдельному job, а не по conclusion прогона.
|
||||||
|
|||||||
+19
-16
@@ -84,13 +84,16 @@ per-project лимит воркеров, а browser matrix упирается в
|
|||||||
### Что и когда запускается
|
### Что и когда запускается
|
||||||
|
|
||||||
| Workflow | Триггер | Jobs |
|
| Workflow | Триггер | Jobs |
|
||||||
| ------------------------ | ------------------------ | --------------------------- |
|
| ------------------------ | --------------------------------------- | --------------------------- |
|
||||||
| `Deploy to GitHub Pages` | push в `main`, dispatch | `verify`, `build`, `deploy` |
|
| `Deploy to GitHub Pages` | push в `main`, dispatch | `verify`, `build`, `deploy` |
|
||||||
| `Quality` | `pull_request`, dispatch | `verify`, `e2e` |
|
| `Quality` | push в `main`, `pull_request`, dispatch | `verify`, `e2e` |
|
||||||
|
|
||||||
Следствие: при прямом пуше в `main` выполняется только быстрый gate — `verify`
|
Пуш в `main` запускает оба workflow: deploy проверяет быстрый gate и собирает
|
||||||
внутри deploy-workflow. Browser matrix из четырёх проектов на этом прогоне не
|
сайт, `Quality` прогоняет тот же `verify` и browser matrix. Дублирование
|
||||||
запускается вообще, поэтому зелёный deploy-run нельзя читать как «e2e прошёл».
|
`verify` (~1 мин) сознательное: matrix на каждый пуш стоит ~3 мин, и условные
|
||||||
|
job-и ради минуты не окупаются. Browser matrix проверяется на каждом пуше, а
|
||||||
|
ручной `gh workflow run quality.yml` нужен только для перепрогона старого
|
||||||
|
коммита.
|
||||||
|
|
||||||
### Проверка результатов CI после пуша
|
### Проверка результатов CI после пуша
|
||||||
|
|
||||||
@@ -99,17 +102,17 @@ per-project лимит воркеров, а browser matrix упирается в
|
|||||||
память Linux-раннера отличаются. Поэтому после пуша разработчика:
|
память Linux-раннера отличаются. Поэтому после пуша разработчика:
|
||||||
|
|
||||||
1. дождаться завершения workflow и посмотреть, какие job вообще запустились;
|
1. дождаться завершения workflow и посмотреть, какие job вообще запустились;
|
||||||
2. отдельно открыть non-blocking `e2e`, если он был в прогоне: его красный
|
2. смотреть статусы **отдельных job**, а не общий conclusion прогона: у `e2e`
|
||||||
статус не блокирует PR, но остаётся падением, и его нельзя выдавать за
|
стоит `continue-on-error: true`, поэтому прогон с упавшим e2e целиком
|
||||||
«зелёный по умолчанию»;
|
помечается как `success` — проверено на run `36225579363` (`E2E: failure` при
|
||||||
3. если `e2e` не запускался (прямой пуш в `main`), сказать это прямо: matrix на
|
`conclusion: success`);
|
||||||
раннере ещё не проверена, и её можно прогнать через PR или
|
3. если `e2e` запускался и зелёный — сообщить фактические числа passed, failed,
|
||||||
`gh workflow run quality.yml`;
|
skipped;
|
||||||
4. сообщить фактический результат (passed, failed, skipped) в отчёте агента.
|
4. если `e2e` не запускался, сказать это прямо: matrix на раннере не проверена,
|
||||||
|
и её можно прогнать через `gh workflow run quality.yml`;
|
||||||
Красный `e2e` только из-за ресурсов раннера фиксируется как ограничение
|
5. красный `e2e` только из-за ресурсов раннера фиксируется как ограничение
|
||||||
окружения: сначала проверяется один проект и один spec, а не увеличиваются
|
окружения: сначала проверяется один проект и один spec, а не увеличиваются
|
||||||
таймауты под конкретную машину.
|
таймауты под конкретную машину.
|
||||||
|
|
||||||
### Измеренная стоимость прогона
|
### Измеренная стоимость прогона
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user