Код-ревью Middle CI и параллельный запуск обновлено
Ревью: джоба автотестов в GitHub Actions
Вопрос
Найдите проблемы в конфигурации джобы.
e2e:
runs-on: ubuntu-latest
strategy:
matrix:
shard: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v4
- run: npm install
- run: npx playwright install --with-deps
- run: npx playwright test --shard=${{ matrix.shard }}/3
env:
ADMIN_PASSWORD: Qwerty123!
- uses: actions/upload-artifact@v4
with:
name: report
path: playwright-report/
Коротко
Исправление: fail-fast: false, npm ci с кешем, --shard=${{ matrix.shard }}/4 или ${{ strategy.job-total }}, секрет через ${{ secrets.ADMINPASSWORD }}, if: ${{ !cancelled() }}, имя артефакта с номером шарда и затем слияние отчётов.
Что должен найти ревьюер
- Ошибкастрока 3fail-fast по умолчанию true: падение одного шарда отменит остальные
- Производительностьстрока 8npm install вместо npm ci и без кеша: невоспроизводимые версии и медленная установка
- Ошибкастрока 10Знаменатель 3 при четырёх шардах: часть тестов запустится дважды, четвёртый шард невалиден
- Безопасностьстрока 12Пароль прямо в конфигурации: должен быть в secrets
- Ошибкастрока 13Выгрузка без if: always() или !cancelled(): при падении тестов отчёта не будет
- Ошибкастрока 15Одинаковое имя артефакта у всех шардов: в upload-artifact v4 это конфликт
Разбор
Исправление: fail-fast: false, npm ci с кешем, --shard=${{ matrix.shard }}/4 или ${{ strategy.job-total }}, секрет через ${{ secrets.ADMIN_PASSWORD }}, if: ${{ !cancelled() }}, имя артефакта с номером шарда и затем слияние отчётов.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.