-
Notifications
You must be signed in to change notification settings - Fork 18
135 lines (109 loc) · 3.95 KB
/
deploy.yml
File metadata and controls
135 lines (109 loc) · 3.95 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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
name: Deploy to GitHub Pages
on:
push:
branches: [ main ]
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build with Vite
env:
# Public environment variables (safe to expose)
VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }}
VITE_SUPABASE_ANON_KEY: ${{ secrets.VITE_SUPABASE_ANON_KEY }}
# Disable public registration for production
VITE_ENABLE_PUBLIC_REGISTRATION: 'false'
# Set base path for GitHub Pages (root for TradingGoose.github.io)
PUBLIC_URL: /
# Set to production to enable console stripping
NODE_ENV: production
run: npm run build
- name: Copy index.html to 404.html for SPA routing
run: cp ./dist/index.html ./dist/404.html
- name: Add .nojekyll file
run: touch ./dist/.nojekyll
- name: Fix GitHub Pages compatibility and create _headers
run: |
cd ./dist
# Create proper Netlify-style _headers file for GitHub Pages compatibility
cat > _headers << 'EOF'
/*
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
/*.js
Content-Type: text/javascript; charset=utf-8
Cache-Control: public, max-age=31536000, immutable
/*.mjs
Content-Type: text/javascript; charset=utf-8
Cache-Control: public, max-age=31536000, immutable
/assets/*.js
Content-Type: text/javascript; charset=utf-8
Cache-Control: public, max-age=31536000, immutable
/*.css
Content-Type: text/css; charset=utf-8
Cache-Control: public, max-age=31536000, immutable
/assets/*.css
Content-Type: text/css; charset=utf-8
Cache-Control: public, max-age=31536000, immutable
/favicon.ico
Content-Type: image/x-icon
Cache-Control: public, max-age=86400
EOF
# Verify files exist
echo "=== Checking build output ==="
ls -la ./
echo ""
echo "=== Assets directory ==="
ls -la assets/ || echo "No assets directory found"
echo ""
# Find all JavaScript files
find . -name "*.js" -type f | while read file; do
echo "✓ Found JS file: $file ($(file -b --mime-type "$file"))"
done
# Verify favicon
if [ ! -f "favicon.ico" ]; then
echo "ERROR: favicon.ico not found"
exit 1
else
echo "✓ favicon.ico found ($(file -b --mime-type favicon.ico))"
fi
# Check HTML references
echo ""
echo "=== Module script references in HTML ==="
grep 'type="module"' index.html || echo "No module scripts found"
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: './dist'
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4