Skip to content

ci: deploy docs as part of a dispatched release - #452

Merged
jahvon merged 1 commit into
mainfrom
fix/docs-deploy-on-release
Aug 27, 2026
Merged

ci: deploy docs as part of a dispatched release#452
jahvon merged 1 commit into
mainfrom
fix/docs-deploy-on-release

Conversation

@jahvon

@jahvon jahvon commented Aug 27, 2026

Copy link
Copy Markdown
Member

Summary

The published JSON schemas at flowexec.io have been stale since 2026-05-02. Editors validate flowfiles against that URL, so anyone authoring a container: block today gets an "unknown property" warning — for a feature that merged 2026-07-22 (#407), with two releases shipping since.

$ curl -s https://flowexec.io/schemas/flowfile_schema.json | grep -c '"container"'
0
$ git show origin/main:docs/public/schemas/flowfile_schema.json | grep -c '"container"'
1

Root cause

release-docs.yaml only listens on push: tags. Releases stopped arriving that way:

2026-08-03  release.yaml  workflow_dispatch  ref=main    ← v2.1.1
2026-07-26  release.yaml  workflow_dispatch  ref=main    ← v2.1.0
2026-05-01  release.yaml  push               ref=v2.0.0  ← last tag-push release

A dispatched release creates the tag inside the workflow:

- name: Create Tag
  run: |
    git tag ${{ inputs.tag }}
    git push origin ${{ inputs.tag }}
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

GitHub does not start workflow runs from events created with GITHUB_TOKEN — an anti-recursion rule. So the tag push is invisible to release-docs.yaml, and it simply never ran. Its last successful run was a manual dispatch on 2026-05-02, which is exactly where the published schema froze.

Nothing failed. There was no run at all, which is why this went unnoticed.

Fix

release-docs.yaml gains workflow_call, and release.yaml calls it after the binary publishes — so the site is updated by the same run that cuts the release.

  • Guarded to dispatched releases only (if: github.event_name == 'workflow_dispatch'). A tag pushed by a human still triggers release-docs.yaml directly, and calling it in both paths would deploy twice, concurrently.
  • environment now reads from inputs, which is populated for both a call and a dispatch, rather than github.event.inputs, which is only set for a dispatch. A tag push has neither, so the 'production' default still applies.

I chose this over pushing the tag with a PAT: that would make tag pushes trigger everything downstream, but costs a long-lived secret with write scope, and widens what any future workflow change can set off.

Publishing the current schema

This fixes it going forward. It does not publish the schema that is already stale — that needs one manual workflow_dispatch of the Docs workflow (or the next release, which will now carry it). Worth doing sooner: #439 adds an interpreter field that will otherwise land in the same invisible state.

🤖 Generated with Claude Code

https://claude.ai/code/session_01R328pa3FUUfga4gYah1iQi

The published JSON schemas have been stale since 2026-05-02, so editors have
been validating flowfiles against a schema that predates the container feature
(#407, merged 2026-07-22) despite two releases shipping since.

release-docs.yaml only listens on push:tags. Releases stopped arriving that way:
v2.1.0 and v2.1.1 were both cut by dispatching release.yaml, which creates and
pushes the tag itself using GITHUB_TOKEN. GitHub does not start workflows from
events that token creates, so the tag push was invisible and the docs never
deployed. The last successful run was a manual dispatch.

release-docs.yaml becomes callable and release.yaml calls it after the binary
publishes, so the site is updated by the same run that cuts the release. The
call is limited to dispatched releases; a tag pushed by a human still triggers
release-docs.yaml directly, and calling it in both paths would deploy twice.

The environment now reads from `inputs`, which is populated for both a call and
a dispatch, rather than from github.event.inputs, which is only set for a
dispatch.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R328pa3FUUfga4gYah1iQi
@codecov

codecov Bot commented Aug 27, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@jahvon
jahvon merged commit ae78e6b into main Aug 27, 2026
15 checks passed
@jahvon
jahvon deleted the fix/docs-deploy-on-release branch August 27, 2026 06:41
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