Skip to content

feat: add flow-binary input for testing unreleased builds - #2

Merged
jahvon merged 1 commit into
mainfrom
feat/flow-binary-input
Aug 27, 2026
Merged

feat: add flow-binary input for testing unreleased builds#2
jahvon merged 1 commit into
mainfrom
feat/flow-binary-input

Conversation

@jahvon

@jahvon jahvon commented Aug 27, 2026

Copy link
Copy Markdown
Member

Blocks flowexec/flow#446, which needs this to run its CI tasks with the flow binary under review.

Summary

Adds a flow-binary input so a caller can run its executables with a flow binary it just built, instead of one installed from a release or built from main.

- run: go build -o ./bin/flow .
- uses: flowexec/action@v1
  with:
    executable: 'test unit'
    flow-binary: ./bin/flow

Why

Without it, a repository whose CI runs flow tasks is always testing a flow that predates the code under review. That is a silent gap in general, and a hard block when a task depends on a flow feature that has not shipped yet.

It surfaced concretely in flowexec/flow#439, which adds Python execution. A .execs target running a .py script failed CI on every platform:

Executing: flow test python-script
unable to parse file - 14:1: `foo(` must be followed by `)`

flow-version: main clones flow from GitHub and builds main, so the branch adding .py support was discarded and the released flow parsed the Python file as shell. No change to that PR could have made the job pass — the capability has to be on main before CI can use it, which is circular.

Notable Changes

  • flow-binary takes precedence over flow-version.
  • The download cache step is skipped when it is set — there is nothing to restore.
  • A missing path fails loudly rather than falling back to a download, so a typo cannot silently reintroduce the gap this exists to close.
  • Handles the Windows install path ($HOME/bin/flow.exe) alongside the Unix one, matching the existing main-build branch.
  • No behavior change when the input is unset.

Testing

The action has no CI workflows to add a case to. Verified:

  • action.yaml parses as valid YAML; bash -n scripts/install-flow.sh is clean.
  • The new branch is the first condition, so the cached / latest / main / pinned-version paths are untouched when flow-binary is empty.
  • End-to-end verification is flowexec/flow#446, which consumes this input across its CI matrix (ubuntu, macos, windows). Worth landing this and moving the v1 tag before that PR goes green.

🤖 Generated with Claude Code

https://claude.ai/code/session_01R328pa3FUUfga4gYah1iQi

Lets a caller run its executables with a flow binary it just built, instead of
one installed from a release or from main.

Without this, a repository whose CI runs flow tasks is always testing a flow
that predates the code under review. That is a silent gap in general, and a hard
block when a task depends on a flow feature that has not shipped: flow's own CI
cannot exercise a new capability from a .execs target, because the action clones
and builds main and discards the branch entirely.

flow-binary takes precedence over flow-version, and skips the download cache
since there is nothing to restore. A missing path fails loudly rather than
falling back to a download, so a typo cannot silently reintroduce the gap it
exists to close.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R328pa3FUUfga4gYah1iQi
@jahvon
jahvon merged commit e0ab9f7 into main Aug 27, 2026
@jahvon
jahvon deleted the feat/flow-binary-input branch August 27, 2026 05:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant