From 66653c0e8ef4ae9418d81bc712d51e82775ab4a9 Mon Sep 17 00:00:00 2001 From: claude-ceo-assistant Date: Sun, 10 May 2026 18:48:28 -0700 Subject: [PATCH] =?UTF-8?q?fix(ci):=20remove=20workflow=5Fdispatch.inputs?= =?UTF-8?q?=20(true=20root=20cause=20of=20#351=20=E2=80=94=20Gitea=20parse?= =?UTF-8?q?r=20rejects,=20workflow=20ignored)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ROOT CAUSE found in Gitea server logs: actions/workflows.go:DetectWorkflows() [W] ignore invalid workflow "publish-runtime.yml": unknown on type: map["version":{"description":...,"required":true,"type":"string"}] Gitea 1.22.6's workflow parser flattens workflow_dispatch.inputs.* into top-level 'on:' event-keys and rejects the workflow when it doesn't recognize them. Once rejected, the workflow never registers — so NO event triggers it. publish-runtime.yml has 0 runs in action_run since the .gitea port for exactly this reason; the runtime-v1.0.0 tag from yesterday and hongming-pc's runtime-v0.1.130 from tonight both pushed successfully but went nowhere. This supersedes the paths-vs-tags hypothesis from #351 (PR #352). The split is still useful for clarity but was NOT the cause — even the original tags-only port had this same parse failure. Fix: drop the inputs block. workflow_dispatch in Gitea 1.22.6 supports no-input dispatch only. The bash logic for version derivation now uses just two cases: tag-push (strip prefix) or anything-else (PyPI auto-bump). Post-merge verification: - watch for first-ever publish-runtime.yml run in action_run - check Gitea log no longer emits 'ignore invalid workflow' for this file - push a runtime-v0.1.130 tag → workflow fires → PyPI 0.1.130 Refs: #351 (root cause), #348 Q3 (the blocker) --- .gitea/workflows/publish-runtime.yml | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/.gitea/workflows/publish-runtime.yml b/.gitea/workflows/publish-runtime.yml index 083b6840..93124b1e 100644 --- a/.gitea/workflows/publish-runtime.yml +++ b/.gitea/workflows/publish-runtime.yml @@ -43,11 +43,17 @@ on: tags: - "runtime-v*" workflow_dispatch: - inputs: - version: - description: "Version to publish (e.g. 0.1.6). Required for manual dispatch." - required: true - type: string + # 2026-05-11 (root cause of #351 / 0 runs ever): + # Gitea 1.22.6's workflow parser rejects `workflow_dispatch.inputs.version` + # with "unknown on type" — it mis-treats the inputs sub-keys as top-level + # `on:` event types. Log line: + # actions/workflows.go:DetectWorkflows() [W] ignore invalid workflow + # "publish-runtime.yml": unknown on type: map["version": {...}] + # That `[W] ignore invalid workflow` is silent UX — the workflow never + # registers, so it never fires for ANY event (push.tags included). + # Removing the inputs block restores parsing. Manual dispatch from the + # Gitea UI now triggers the PyPI auto-bump fallback in `Derive version` + # below (no `inputs.version` to read). permissions: contents: read @@ -72,19 +78,15 @@ jobs: python-version: "3.11" cache: pip - - name: Derive version (tag, manual input, or PyPI auto-bump) + - name: Derive version (tag or PyPI auto-bump) id: version run: | - if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then - VERSION="${{ inputs.version }}" - elif echo "$GITHUB_REF" | grep -q "^refs/tags/runtime-v"; then + if echo "$GITHUB_REF" | grep -q "^refs/tags/runtime-v"; then # Tag is `runtime-vX.Y.Z` — strip the prefix. VERSION="${GITHUB_REF#refs/tags/runtime-v}" else - # Fallback: derive from PyPI latest + patch bump. - # Used by the restored `push.branches: [main, staging]` + - # `paths: workspace/**` auto-bump trigger (issue #348). Also kept - # for workflow_dispatch invocations that omit the version input. + # workflow_dispatch path (no inputs supported on Gitea 1.22.6) or + # any other non-tag trigger: derive from PyPI latest + patch bump. LATEST=$(curl -fsS --retry 3 https://pypi.org/pypi/molecule-ai-workspace-runtime/json \ | python -c "import sys,json; print(json.load(sys.stdin)['info']['version'])") MAJOR=$(echo "$LATEST" | cut -d. -f1)