Repository navigation
76 lines (68 loc) · 2.7 KB
/
Copy pathmain.yml
File metadata and controls
76 lines (68 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
name: CI & CD
on:
push:
branches:
- "**"
jobs:
Build-and-Deploy:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v7
- uses: pnpm/action-setup@v6
with:
version: 10
- uses: actions/setup-node@v7
with:
node-version: 24
registry-url: https://registry.npmjs.org
cache: pnpm
- name: Install Dependencies
run: pnpm i --frozen-lockfile
- name: Deploy to CloudFlare
env:
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
GH_TOKEN: ${{ github.token }}
run: |
if [[ "$GITHUB_REF_NAME" == "$DEFAULT_BRANCH" ]]; then
echo "Deploying to production environment"
pnpm run deploy
else
BRANCH_SLUG=$(echo "$GITHUB_REF_NAME" | tr '[:upper:]' '[:lower:]' | sed -E 's/[^a-z0-9-]+/-/g; s/-+/-/g; s/^-+//; s/-+$//')
BRANCH_SLUG="${BRANCH_SLUG:0:40}"
PREVIEW_ALIAS="b-${BRANCH_SLUG}"
PREVIEW_SUMMARY_FILE="cloudflare-preview-summary.md"
echo "Building OpenNext bundle for preview URLs"
pnpm registry:build
npx opennextjs-cloudflare build
echo "Uploading Worker version with preview alias: $PREVIEW_ALIAS"
npx wrangler versions upload \
--config wrangler.jsonc \
--preview-alias "$PREVIEW_ALIAS" \
--message "Preview for $GITHUB_REF_NAME @ $GITHUB_SHA" | \
tee wrangler-preview-output.log
{
echo "## Cloudflare Preview Deployment"
echo ""
echo "- Branch: $GITHUB_REF_NAME"
echo "- Commit: $GITHUB_SHA"
echo "- Preview Alias: $PREVIEW_ALIAS"
echo ""
echo "### Wrangler Output"
echo ''
grep -E 'workers.dev|preview|Version|Uploaded|Deployed' wrangler-preview-output.log || cat wrangler-preview-output.log
echo ''
} > "$PREVIEW_SUMMARY_FILE"
cat "$PREVIEW_SUMMARY_FILE" >> "$GITHUB_STEP_SUMMARY"
PR_NUMBER=$(gh pr list --head "$GITHUB_REF_NAME" --state open --json number --jq '.[0].number')
if [[ -n "$PR_NUMBER" ]]; then
echo "Posting preview summary to PR #$PR_NUMBER"
gh pr comment "$PR_NUMBER" --body-file "$PREVIEW_SUMMARY_FILE"
else
echo "No open PR found for branch $GITHUB_REF_NAME, skip PR comment"
fi
fi