У меня есть следующий упрощенный .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
В основном порядок рабочего процесса:
install-dependencies
build-staging
&build-production
запускается одновременно после установки зависимостей.Я предполагаю, что attach_workspace
получает данные от работы install-dependencies
.Я прав? deploy-staging
запускается после build-staging
.deploy-production
запускается после build-production
.Я не уверен, какое рабочее пространство подключено при запуске attach_workspace
.
Как видите, несколько заданий могут выполняться одновременно.Однако моя проблема в том, что я не понимаю, как работают persist_to_workspace
и attach_workspace
, когда неясно, в каком порядке завершается определенная задача.В отличие от кэширования, кажется, что невозможно назвать, какие данные мне нужны.
Например, предположим, что задания заканчиваются в следующем порядке:
install-dependencies
build-staging
build-production
deploy-staging
deploy-production
Какое рабочее пространство я получаю на шаге3 и шаг 4. Всегда ли он предшествует ему (в данном случае это будет шаг 2 и 3) или он основан на родительской задаче (то есть шаг 1)?