brendan.greenlee.website/.github/workflows/pages.yml
2026-08-12 15:58:10 +00:00

48 lines
1.5 KiB
YAML

name: Deploy to Pages
on:
push:
branches: ["main"]
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/configure-pages@v5
- uses: actions/upload-pages-artifact@v3
with:
path: '.'
- id: deployment
uses: actions/deploy-pages@v4
- name: Verify public deployment
env:
PAGE_URL: ${{ steps.deployment.outputs.page_url }}
run: |
set -euo pipefail
expected='Chicago-based project manager'
stale='Chicago-based project manager & organizer'
verified=0
for attempt in $(seq 1 18); do
echo "Deployment verification attempt ${attempt}/18: ${PAGE_URL}"
body=$(curl --fail --silent --show-error --location --max-time 20 \
--header 'Cache-Control: no-cache' \
"${PAGE_URL}?deploy_check=${GITHUB_SHA}-${attempt}" || true)
if grep -Fq "$expected" <<<"$body" && ! grep -Fq "$stale" <<<"$body"; then
echo "Deployment verified successfully."
verified=1
break
fi
if [ "$attempt" -lt 18 ]; then
sleep 10
fi
done
if [ "$verified" -ne 1 ]; then
echo 'Deployment verification failed: the expected content was not served after 18 attempts.' >&2
exit 1
fi