Выбор ответа Middle CI/CD обновлено

Ключ кеша зависимостей

Вопрос

Каким лучше сделать ключ кеша npm в CI?

- uses: actions/cache@v4
  with:
    path: ~/.npm
    key: ???

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }}. Ключ должен меняться ровно тогда, когда меняются зависимости.

Варианты ответа

  1. npm-cache-${{ runner.os }}-v1
  2. ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }}правильный ответ
  3. ${{ runner.os }}-${{ github.sha }}
  4. npm-${{ github.run_id }}-${{ github.ref }}-${{ runner.os }}

Разбор

Ключ должен меняться ровно тогда, когда меняются зависимости. Хеш lock-файла плюс ОС раннера даёт это: зависимости те же, кеш переиспользуется; добавили пакет, создаётся новый.

  • Постоянный ключ никогда не обновится: кеш, сохранённый однажды, перезаписан не будет.
  • github.sha и run_id уникальны для каждого коммита или запуска, кеш не будет находиться почти никогда.

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

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

Термины по теме