Extend the action workflow syntax to support multiple job workflows.
Design principles:
- the naive user will assume that execution is sequential
- they will assume there is only one checked out copy of the repo
- they will want different permissions and tools for each agentic part
- they will assume the built/package content from a previous stage is available in subsequent stages
- they might assume the full conversation history from a previous stage is available in subsequent stage
Note: these principles are not all possible. The user can't have them all given current Actions capabilities.
Design
- each frontmatter section determines a new job
- a job can be named with the "id" field in the frontmatter (if there is no
id: then infer one from the first header in the section of markdown, e.g. "## Do this" becomes "id: do-this", these inferred ids must be checked to be unique)
- jobs are implicitly sequenced using the "depends" keyword in the compiled workflow
- the jobs are sequenced by using
needs:
- the cli will validate for invalid ids in the generated graph
- each job will have its own permissions section, services etc.
- only the first step is allowed to have a "on" section
(In future, the output of a step automatically passed to another step though artifacts but we can skip this on this PR)
Example
---
on: ...
---
Step 1...
---
permissions: ...
---
Step 2 after step 1
Extend the action workflow syntax to support multiple job workflows.
Design principles:
Note: these principles are not all possible. The user can't have them all given current Actions capabilities.
Design
id:then infer one from the first header in the section of markdown, e.g. "## Do this" becomes "id: do-this", these inferred ids must be checked to be unique)needs:(In future, the output of a step automatically passed to another step though artifacts but we can skip this on this PR)
Example