How to Use set -euo pipefail in GitHub Actions Scripts
set -euo pipefail turns silent bugs into loud failures: exit on error, error on unset vars, and fail a pipeline if any stage fails.
Start each multi-line bash step (or your script file) with set -euo pipefail. -e exits on error, -u errors on unset variables, and -o pipefail propagates failures through pipes.
Steps
- Put
set -euo pipefailas the first line of the script orrunblock. - Quote variable expansions so word-splitting does not defeat
-u. - Use
${VAR:-default}where an unset value is legitimately allowed.
Workflow
.github/workflows/ci.yml
steps:
- run: |
set -euo pipefail
curl -fsSL https://example.com/data.json | jq '.version' > version.txt
test -s version.txtGotchas
- GitHub bash already sets
-eandpipefail, but not-u; add it yourself to catch typos in variable names. - With
-e, a command whose non-zero exit is expected needs|| trueso it does not abort the step.
Frequently asked questions
How do I use set -euo pipefail in GitHub Actions Scripts?
Start each multi-line bash step (or your script file) with set -euo pipefail. -e exits on error, -u errors on unset variables, and -o pipefail propagates failures through pipes.
Related guides
How to Trigger a Workflow on Push to Specific Branches in GitHub ActionsRun a GitHub Actions workflow only when commits are pushed to named branches using on.push.branches, so featu…
How to Verify the Deployed Version Matches the Git SHA in GitHub ActionsConfirm the running release is the exact commit you deployed in GitHub Actions by comparing a /version endpoi…
How to Trigger a Workflow From an External Webhook in GitHub ActionsFire a GitHub Actions workflow from any external system by POSTing a repository_dispatch event to the GitHub…