Код-ревью 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() }}, имя артефакта с номером шарда и затем слияние отчётов.

Что должен найти ревьюер

  1. Ошибкастрока 3
    fail-fast по умолчанию true: падение одного шарда отменит остальные
  2. Производительностьстрока 8
    npm install вместо npm ci и без кеша: невоспроизводимые версии и медленная установка
  3. Ошибкастрока 10
    Знаменатель 3 при четырёх шардах: часть тестов запустится дважды, четвёртый шард невалиден
  4. Безопасностьстрока 12
    Пароль прямо в конфигурации: должен быть в secrets
  5. Ошибкастрока 13
    Выгрузка без if: always() или !cancelled(): при падении тестов отчёта не будет
  6. Ошибкастрока 15
    Одинаковое имя артефакта у всех шардов: в upload-artifact v4 это конфликт

Разбор

Исправление: fail-fast: false, npm ci с кешем, --shard=${{ matrix.shard }}/4 или ${{ strategy.job-total }}, секрет через ${{ secrets.ADMIN_PASSWORD }}, if: ${{ !cancelled() }}, имя артефакта с номером шарда и затем слияние отчётов.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.