92 lines
2.8 KiB
YAML
92 lines
2.8 KiB
YAML
name: Netlify deploy
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- staging
|
|
- "staging/**"
|
|
- "web-requests/**"
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
- staging
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
pull-requests: write
|
|
|
|
env:
|
|
NETLIFY_SITE_ID: e20cb60a-0bfa-48dc-9e8e-5925b0c86ccd
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Check out repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 22
|
|
cache: npm
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Build site
|
|
run: npm run build
|
|
|
|
- name: Deploy to Netlify
|
|
id: deploy
|
|
env:
|
|
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
if [ -z "${NETLIFY_AUTH_TOKEN:-}" ]; then
|
|
echo "NETLIFY_AUTH_TOKEN is not configured as a repository secret." >&2
|
|
exit 1
|
|
fi
|
|
|
|
branch="${GITHUB_HEAD_REF:-${GITHUB_REF_NAME}}"
|
|
alias="$(printf '%s' "$branch" \
|
|
| tr '[:upper:]' '[:lower:]' \
|
|
| sed -E 's/[^a-z0-9-]+/-/g; s/^-+//; s/-+$//' \
|
|
| cut -c 1-37)"
|
|
|
|
if [ -z "$alias" ]; then
|
|
alias="preview"
|
|
fi
|
|
|
|
if [ "${GITHUB_EVENT_NAME}" = "push" ] && [ "${GITHUB_REF_NAME}" = "main" ]; then
|
|
deploy_json="$(npx netlify-cli@latest deploy --site "$NETLIFY_SITE_ID" --prod --dir=dist --json --message "Production deploy from ${GITHUB_SHA}")"
|
|
else
|
|
deploy_json="$(npx netlify-cli@latest deploy --site "$NETLIFY_SITE_ID" --dir=dist --alias "$alias" --json --message "Preview deploy for ${branch} at ${GITHUB_SHA}")"
|
|
fi
|
|
|
|
printf '%s\n' "$deploy_json"
|
|
deploy_url="$(node -e 'const data = JSON.parse(process.argv[1]); console.log(data.deploy_url || data.deployUrl || data.deploy_ssl_url || data.ssl_url || data.url || "")' "$deploy_json")"
|
|
|
|
if [ -n "$deploy_url" ]; then
|
|
echo "deploy_url=$deploy_url" >> "$GITHUB_OUTPUT"
|
|
echo "### Netlify deploy" >> "$GITHUB_STEP_SUMMARY"
|
|
echo "" >> "$GITHUB_STEP_SUMMARY"
|
|
echo "$deploy_url" >> "$GITHUB_STEP_SUMMARY"
|
|
fi
|
|
|
|
- name: Comment preview URL on pull request
|
|
if: github.event_name == 'pull_request' && steps.deploy.outputs.deploy_url != ''
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const body = `Netlify preview deploy is ready:\n\n${{ steps.deploy.outputs.deploy_url }}`;
|
|
await github.rest.issues.createComment({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: context.issue.number,
|
|
body,
|
|
});
|