Сохранение кэша при сбое задания в GitHub Actions - PullRequest
1 голос
/ 02 марта 2020

Я использую действие GitHub cache , но я заметил, что при сбое задания не будет создан кеш. Из документов :

Если задание успешно завершено , действие создает новый кэш с содержимым каталога пути.

Урезанная версия моего YAML-файла рабочего процесса:

name: Build

on: [push]

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v1

      - name: Setup Node.js
        uses: actions/setup-node@master
        with:
          node-version: '10.x'

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

      - name: Restore yarn cache
        uses: actions/cache@v1
        id: yarn-cache
        with:
          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-yarn-

      - name: Install yarn dependencies
        run: yarn install

      - name: Build
        run: yarn build

Я заметил, что если мой шаг Build завершится неудачно, последующий шаг cache будет пропущен без необходимости, что приведет к установке зависимостей не быть кэшированным. Это требует последующих запусков для повторной загрузки зависимостей, что замедляет работу.

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

1 Ответ

2 голосов
/ 04 марта 2020

В официальной версии действия нет возможности кэшировать зависимости, если сборка не удалась. См. эту строку в манифесте действия кэша:

runs:
  using: 'node12'
  main: 'dist/restore/index.js'
  post: 'dist/save/index.js'
  post-if: 'success()'

После выполнения задания он будет запускаться только после шага. Я не знаю оригинальной причины этого, но есть несколько вопросов, связанных с этой идеей. В этой проблеме пользователь подписал действие , чтобы изменить post-if на always(), что может быть тем, что вам нужно, при условии, что вы готовы выполнить неофициальное действие .

...