В каких пределах работают действия / кеш Github?

Я не совсем понимаю, насколько работают действия / кеш Github , что я имею в виду:

Кеширование работает нормально, если я делаю пул-реквест, а затем в том же пул-реквесте добавляю еще одну фиксацию, но если я создаю новый пул-реквест в той же ветке - кеширование сбрасывается и начинается снова, но почему?

Есть ли способ распространить кеширование файлов на все yml файлы и чтобы каждый запрос на перенос использовал существующее кеширование?

Потому что для ускорения работы оказывается - разработчикам всегда нужно слить работу в одну ветку, и это как-то похоже на какую-то чушь.

Информация

Мой ключ кеширования сформирован следующим образом

      - uses: actions/cache@v2
  id: composer-cache
  with:
     path: .github/docker/development/php-cli/composer/cache
     key: ${{ runner.os }}-develop-composer-${{ hashFiles('src/composer.lock') }}
     restore-keys: |
        ${{ runner.os }}-develop-composer-

1 ответ

Решение

Да, действие кеширования GitHub имеет неинтуитивное поведение в разных ветках. Рабочие процессы запросов на вытягивание не используются совместно, а рабочие процессы тегов никогда не попадают в кеш.

В документации (полезный бит выделен жирным шрифтом):

Рабочий процесс может получить доступ и восстановить кэш, созданный в текущей ветке, базовой ветке (включая базовые ветки разветвленных репозиториев) или ветке по умолчанию (обычно). Например, кеш, созданный в ветке по умолчанию, будет доступен из любого запроса на вытягивание. Кроме того, если ветка имеет базовую ветвь, рабочий процесс, запущенный на, будет иметь доступ к кешам, созданным в ветке по умолчанию (), feature-a, и feature-b.

Таким образом, решение состоит в том, чтобы создать отдельный рабочий процесс, запускаемый нажатием на main - плюс любые базовые ветки, которые вам нравятся - просто для того, чтобы свежий кеш был доступен для запросов на вытягивание и тегов.

Другие вопросы по тегам