Действия / кеш Github не влияют на мой рабочий процесс - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь запустить следующий рабочий процесс Github для проекта php:

name: CI

on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    env:
      DB_NAME: ${{ secrets.DB_NAME }}
      DB_USER: ${{ secrets.DB_USER }}
      DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
      MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }}

    steps:
    - uses: actions/checkout@v2

    - name: Set up the CI environment
      run: |
        envsubst < src/.env.ci > src/.env
        docker pull composer
        alias composer="docker run --rm --interactive --tty --volume $(pwd):/app --volume ${COMPOSER_HOME:-$HOME/.composer}:/tmp --user $(id -u):$(id -g) composer"
        composer --version

    - name: Get Composer Cache Directory
      id: composer-cache
      run: |
        echo "::set-output name=dir::$(composer config cache-files-dir)"

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

    - name: Install composer dependencies
      if: steps.composer-cache.outputs.cache-hit != 'true'
      run: composer install

Сценарий следующий. У меня есть docker основанная среда разработки, организованная с docker -compose. Php composer и другие инструменты запускаются из docker изображений.

Кажется, что-то здесь не хватает, потому что cache-hit происходит, как я вижу в журналах:

2020-03-28T10:37:07.2837003Z Cache restored from key: Linux-composer-0dffe7e110c8249b30d4e46844fede7ea6b8e1433061bed12cbb9a2ae964e2bb

Но не вступает в силу, потому что шаг Install composer dependencies все еще выполняется и загружает артефактов. Я ожидаю, что либо не запускается, либо не запускается, но ничего не загружается, поскольку он берет все из восстановленного кэшированного.

Кто-нибудь имеет представление о том, что мне не хватает?

ОБНОВЛЕНИЕ

Я принял ответ @ edri c, потому что в этом контексте, где я задавал свой вопрос, его ответ обеспечил решение моего вопроса. Хотя я должен сказать, что это не было полностью решением.

Мне нужно было удалить условие: if: steps.composer-cache.outputs.cache-hit != 'true' с последнего шага, чтобы запустить остальную часть моего рабочего процесса. Я заметил, что кэш composer был восстановлен и composer install не был запущен, что позже вызвало проблемы из-за отсутствия зависимостей. Без условия if composer установка запускается всегда, но с использованием восстановленного кэша.

1 Ответ

0 голосов
/ 29 марта 2020

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

- name: Get Composer Cache Directory
  id: get-composer-cache-dir # Instead of composer-cache
  run: |
    echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache Composer
  uses: actions/cache@v1
  id: composer-cache
  with:
        path: ${{ steps.get-composer-cache-dir.outputs.dir }}
        key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
        restore-keys: |
          ${{ runner.os }}-composer-
- name: Install composer dependencies
  if: steps.composer-cache.outputs.cache-hit != 'true'
  run: composer install
...