CircleCI: Какое рабочее пространство используется, когда задания выполняются одновременно? - PullRequest
0 голосов
/ 21 марта 2019

У меня есть следующий упрощенный .circle/config.yml файл:

version: 2
jobs:
  install-dependencies:
    docker:
      - image: circleci/node:10.15.3
    steps:
      - checkout
      - run:
          name: Install Dependencies
          command: yarn install --frozen-lockfile
      - persist_to_workspace:
          root: ./
          paths:
            - ./
  # Build jobs
  build-staging:
    docker:
      - image: circleci/node:10.15.3
    steps:
      - attach_workspace:
          at: ./
      - run: yarn run build:staging
      - persist_to_workspace:
          root: ./
          paths:
            - dist
  build-production:
    docker:
      - image: circleci/node:10.15.3
    steps:
      - attach_workspace:
          at: ./
      - run: yarn run build:prod
      - persist_to_workspace:
          root: ./
          paths:
            - dist
  # deploy jobs
  deploy-staging:
    docker:
      - image: circleci/python:3.7.2
    steps:
      - attach_workspace:
          at: ./
      - run: some-deploy-command
  deploy-production:
    docker:
      - image: circleci/python:3.7.2
    steps:
      - attach_workspace:
          at: ./
      - run: some-deploy-command
workflows:
  version: 2
  build:
    jobs:
      - install-dependencies
      # build
      - build-staging:
          requires:
            - install-dependencies
      - build-production:
          requires:
            - install-dependencies
      # deploy
      - deploy-staging:
          requires:
            - build-staging
      - deploy-production:
          requires:
            - build-production

В основном порядок рабочего процесса:

  1. install-dependencies
  2. build-staging &build-production запускается одновременно после установки зависимостей.Я предполагаю, что attach_workspace получает данные от работы install-dependencies.Я прав?
  3. deploy-staging запускается после build-staging.deploy-production запускается после build-production.Я не уверен, какое рабочее пространство подключено при запуске attach_workspace.

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

Например, предположим, что задания заканчиваются в следующем порядке:

  1. install-dependencies
  2. build-staging
  3. build-production
  4. deploy-staging
  5. deploy-production

Какое рабочее пространство я получаю на шаге3 и шаг 4. Всегда ли он предшествует ему (в данном случае это будет шаг 2 и 3) или он основан на родительской задаче (то есть шаг 1)?

...