Я не совсем уверен, почему вы хотите иметь разные определения планов для каждой задачи, но вот самый простой способ сделать то, что вы хотите сделать:
jobs:
- name: deploying-my-app
plan:
- get: source
trigger: true
passed: []
- get: npm-cache
passed: []
- task: run build
file: source/ci/build.yml
- task: list-files
file: source/ci/list-files.yml
build.yml
---
platform: linux
image_resource:
type: docker-image
source: { repository: alexsuch/angular-cli, tag: '7.3' }
inputs:
- name: source
- name: npm-cache
path: /cache
outputs:
- name: artifact
run:
path: source/ci/build.sh
list-files.yml
---
platform: linux
image_resource:
type: registry-image
source: { repository: busybox }
inputs:
- name: artifact
run:
path: ls
args: ['-la', 'artifact/']
сборка. sh
#!/bin/sh
mv cache/node_modules source
cd source
npm rebuild node-saas # temporary fix
npm run build_prod
cp -R dist ../artifact/
Как правило, вы будете передавать папки в качестве входных и выходных данных между заданиями вместо заданий (хотя есть некоторые альтернативы)
Конкурс - это безгражданство, и в этом его суть. Но если вы хотите передать что-то между заданиями, единственный способ сделать это - использовать ресурс для конкурса , и в зависимости от характера проекта это может быть что угодно, от git репо до корзины s3, docker изображение et c. Вы также можете создавать свои собственные пользовательские ресурсы.
Используя что-то вроде s3 concourse resource например
Таким образом, вы можете поместить sh свой артефакт во внешнее хранилище и затем используйте его снова для следующих заданий на шаге get в качестве ресурса. Но это может создать некоторую ненужную сложность, понимая, что то, что вы хотите сделать, довольно просто
По своему опыту я обнаружил, что иногда визуальный аспект плана работы в панели мониторинга зала создает впечатление, что план работы следует по заданию atomi c, что не всегда нужно
Надеюсь, что поможет.