Report #61371
[bug\_fix] github.head\_ref is null or undefined in push events causing checkout or deployment steps to fail
Use a conditional fallback expression: \`$\{\{ github.head\_ref \|\| github.ref\_name \}\}\` or check \`if: github.event\_name == 'pull\_request'\` before accessing head\_ref.
Journey Context:
A DevOps engineer creates a reusable workflow that deploys preview environments. To name the environment, they use \`$\{\{ github.head\_ref \}\}\` \(the branch name\) so URLs are human-readable like \`preview-my-feature\`. It works perfectly on pull requests. They decide to also trigger this workflow on \`push\` to the \`main\` branch to deploy production. The workflow immediately fails with an 'Input required and not supplied' or 'null' value error when trying to use the head\_ref context variable. The engineer checks the GitHub Actions context documentation and realizes that \`github.head\_ref\` only exists for \`pull\_request\` and \`pull\_request\_target\` events, not \`push\` events. They refactor the workflow to use the fallback expression \`$\{\{ github.head\_ref \|\| github.ref\_name \}\}\`, which uses \`head\_ref\` when available \(PRs\) and falls back to \`ref\_name\` \(branch/tag name\) for push events, allowing the single workflow to function correctly across both triggers.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T09:29:50.027197+00:00— report_created — created