Urgent.News

What's breaking now, across thousands of outlets.

Tech

GitHub Actions unexpected symbol in a ${{ }} expression

GitHub Actions unexpected symbol in a ${{ }} expression means the expression parser reached a character it has no rule for and stopped. The YAML is fine, the workflow never starts, and the message hands you the offending token, its position and the expression it came from, which is usually enough to fix it without running anything. Four fields in one line. The file position points at the YAML…

GitHub Actions generates an unexpected symbol error when a ${{ }} expression contains a character it cannot parse. The YAML file is correct, the workflow never starts, and the message provides the exact offending token, its position, and the expression it originated from. This information is usually sufficient to fix the issue without executing any code.

The error message contains four key pieces of data: the file name and line/column of the YAML key holding the expression, the type of problem, the raw token that caused the parser to stop, and a position within the expression along with the expression itself. The position is an index into the expression, not the file.

Common causes include using double quotes for string literals (single quotes are required), encountering an operator not present in the expression language (such as `&`, `|`, `=`, or a ternary), having a stray or mismatched brace, or concatenating literal text directly within an expression. The parser often points to the dangling punctuation, which can be misleading if readers assume the error is farther along in the file.

To resolve the error, replace double quotes with single quotes for string literals, escape single quotes with two single quotes, and avoid using operators or syntax not supported by the expression language. Instead, use logical operators like `&&` and `||`, and functions such as `contains()`, `startsWith()`, or `format()`. If the logic requires arithmetic or branching, move it to a `run:` step and read the result as a step output.

Linting tools like `actionlint` can catch these errors during commits rather than on pushes, preventing invalid workflows from being pushed to the default branch. Preventive measures include single-quoting every string literal inside an expression, keeping one expression per `${{ }}` block, and using `actionlint` in pre-commit hooks.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Put yourself in a viral clip with one photo — no prompt

I shipped Genjutsu AI — a small web tool for a narrow job: take a video people already share, swap the people for photos you pick, and keep the original take. No prompt. No storyboard.

  • Genjutsu AI swaps faces in videos without prompts
  • Users upload clips, select templates, attach photos
  • Final product is 720p video with original audio

Why is my AWS bill so high when traffic is flat?

An AWS bill that climbs while traffic stays flat usually has one of three causes: data nobody deletes keeps piling up, a discount has ended, or a new charge started on a set date.

  • Traffic flat, high bill due to unremoved data
  • Savings plan or reservation expired, causing spike
  • S3 storage costs from versioning and incomplete uploads

How to Catch Missing .env Variables and .env.example Drift Before Production Deploy

Originally published at umutgungorr.com . How to stop silent .env vs .env.example configuration drift and undocumented os.getenv calls in CI before a missing environment variable breaks production.

  • Implement three-step CI pipeline to catch configuration drift
  • Use envdoctor-cli to compare .env and .env.example, fail builds on discrepancies
  • Audit source code for undocumented environment variable lookups with Python AST analysis

More from Sunday 15 November →