Как кэшировать пакеты пряжи в GitHub Actions - PullRequest
4 голосов
/ 03 апреля 2020

Я использую GitHub Actions для создания своего проекта TypeScript. Каждый раз, когда я запускаю действие, я жду 3 минуты для установки всех зависимостей.

Есть ли способ кэшировать зависимости пряжи, поэтому время сборки будет быстрее?

Я пробовал это:

     - name: Get yarn cache directory path
       id: yarn-cache-dir-path
       run: echo "::set-output name=dir::$(yarn cache dir)"

     - uses: actions/cache@v1
       id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
       with:
         path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
         key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
         restore-keys: |
           ${{ runner.os }}-yarn-

    - name: Install yarn
      run: npm install -g yarn

    - name: Install project dependencies
      run: yarn

но время сборки все равно.

1 Ответ

6 голосов
/ 04 апреля 2020

Как указано в комментарии рядом с полем id для этапа кэширования:

Используйте это для проверки cache-hit (steps.yarn-cache.outputs.cache-hit != 'true')

Вам не хватает условного if свойства, которое определяет, следует ли запускать шаг:

- name: Install yarn
  run: npm install -g yarn

- name: Install project dependencies
  if: steps.yarn-cache.outputs.cache-hit != 'true' # Over here!
  run: yarn

PS. Возможно, вам следует использовать Setup NodeJS Действие GitHub, которое дополнительно устанавливает вверх Пряжа для вас:

- uses: actions/setup-node@v1
  with:
    node-version: '10.x' # The version spec of the version to use.

Полный список допустимых входных данных см. в action.yml файле .


РЕДАКТИРОВАТЬ: Как выясняется, Yarn включен в список программного обеспечения, установленного на бегунке Ubuntu 18.04.4 LTS (ubuntu-latest / ubuntu-18.04), размещенном на GitHub , поэтому нет необходимости включать шаг для глобальной установки Yarn.

...