общий доступ к действиям GitHub (конфигурация yml) - PullRequest
1 голос
/ 06 ноября 2019

Было бы здорово, если бы я мог запустить рабочий процесс, который выглядит следующим образом - возможно, я просто упускаю простую конфигурацию в действиях GitHub, но я не знаю, как разделить рабочее пространство между заданиями при использовании job.needsчтобы указать, какие задания могут выполняться, когда другие успешно завершены.

name: Node CI

on: [push]
env:
  CI: true

jobs:
  install:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [12.x]

    steps:
    - uses: actions/checkout@v1
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - name: install node_modules
      run: yarn install

  lint:
    runs-on: ubuntu-latest
    needs: [install]
    steps:
      - name: eslint
        run: yarn lint

  build:
    needs: [install]
    runs-on: ubuntu-latest
    steps:
      - name: yarn build
        run: yarn build

  test:
    needs: [install, build]
    runs-on: ubuntu-latest
    steps:
      - name: jest
        run: yarn test --coverage

Я прочитал Действия Github делят рабочее пространство / артефакты между заданиями? , но я бы предпочел не загружать node_modules и скачивайте за каждый шаг.

1 Ответ

1 голос
/ 07 ноября 2019

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

Загрузка / выгрузка артефактов между заданиями является одним из решений. Вы также можете попробовать новое действие actions/cache для кэширования каталога node_modules и восстановления его при последующих заданиях.

- uses: actions/cache@v1
  with:
    path: node_modules
    key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
    restore-keys: |
      ${{ runner.os }}-node-

Обратите внимание, что в настоящее время существуют довольно строгие ограничения, поэтомуможет не работать, если у вас очень большой каталог node_modules.

Размер отдельных кэшей ограничен 400 МБ, а хранилище может иметь до 2 ГБ кэшей. Как только будет достигнут лимит в 2 ГБ, старые кеши будут выселены в зависимости от того, когда последний раз был доступен кеш. Кэши, к которым нет доступа в течение последней недели, также будут выселены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...