Add steps expression support#15
Merged
sebastianrath merged 7 commits intomainfrom Feb 3, 2026
Merged
Conversation
dff56fa to
b4d5207
Compare
This is now needed since the switch from the Docker CLI to the Docker Go lib (some defaults were turned on by the CLI)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR introduces the steps context, allowing graphs to reference outputs and conclusions from previously executed nodes using the same
${{ steps.X.outputs.Y }}and${{ steps.X.conclusion }}syntax borrowed from GitHub Actions expressions.I added a data struct called
HierarchicalMapthat chains lookups through parent execution contexts. This means when a workflow spawns child execution states (eg in concurrent for loop), each child can see step results from its ancestors while only storing its own local data. The step cache only tracks primitive outputs under 64KB and records whether each step concluded with success or failure based on which execution port it flows through.Also, GitHub Actions that dynamically create outputs not defined in their schema, a new
ForceSetoption allows writing to output ports that don't have formal definitions.The syntax also works in non github graphs, so the system will probably have to remain compatible unless there is a good reason to break it.