-
Notifications
You must be signed in to change notification settings - Fork 1
183 lines (159 loc) · 5.73 KB
/
deploy.yml
File metadata and controls
183 lines (159 loc) · 5.73 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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
name: Build and Deploy
# Run on push to main/master branch only
on:
push:
branches:
- main
- master
workflow_dispatch: # Allow manual triggering
# Grant necessary permissions
permissions:
contents: write
pages: write
id-token: write
issues: write
pull-requests: write
jobs:
# Job 1: Build with Vite
build:
name: Build with Vite
needs: []
runs-on: ubuntu-latest
outputs:
build_status: ${{ steps.build_check.outputs.status }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.ref_name }}
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: |
echo "📦 Installing dependencies..."
npm ci
- name: Build with Vite
id: build_check
run: |
echo "🏗️ Building with Vite..."
npm run build
# Check if build succeeded
if [ ! -d "dist" ]; then
echo "❌ Build failed - dist directory not created!"
echo "status=failed" >> $GITHUB_OUTPUT
exit 1
fi
# Verify critical files exist
if [ ! -f "dist/index.html" ]; then
echo "❌ Build failed - index.html not found in dist!"
echo "status=failed" >> $GITHUB_OUTPUT
exit 1
fi
echo "✅ Vite build completed successfully"
echo "📦 Build output:"
ls -lh dist/
echo ""
echo "📦 Assets:"
ls -lh dist/assets/ | head -20
echo "status=success" >> $GITHUB_OUTPUT
- name: Copy additional files to dist
run: |
echo "📋 Copying additional files..."
# Copy files that Vite doesn't process but are needed
cp -r vendor dist/ 2>/dev/null || echo "No vendor directory to copy"
cp -r fonts dist/ 2>/dev/null || echo "No fonts directory to copy"
cp -r PolliLibJS dist/ 2>/dev/null || echo "No PolliLibJS directory to copy"
cp robots.txt dist/ 2>/dev/null || echo "No robots.txt to copy"
cp sitemap.xml dist/ 2>/dev/null || echo "No sitemap.xml to copy"
cp BingSiteAuth.xml dist/ 2>/dev/null || echo "No BingSiteAuth.xml to copy"
cp visitor-tracking.js dist/ 2>/dev/null || echo "No visitor-tracking.js to copy"
# Copy page-specific JS files
cp about/about.js dist/about/ 2>/dev/null || echo "No about.js to copy"
cp ai/demo/age-verification.js dist/ai/demo/ 2>/dev/null || echo "No age-verification.js to copy"
cp ai/demo/js/main.js dist/ai/demo/js/ 2>/dev/null || mkdir -p dist/ai/demo/js && cp ai/demo/js/main.js dist/ai/demo/js/ || echo "No main.js to copy"
echo "✅ Additional files copied"
- name: Upload artifact for deployment
uses: actions/upload-pages-artifact@v3
with:
path: 'dist'
# Job 4a: Report Build Status
report-status:
name: Report Build Status
needs: build
runs-on: ubuntu-latest
if: always()
steps:
- name: Report success
if: needs.build.outputs.build_status == 'success'
run: |
echo "✅ BUILD SUCCESSFUL"
echo "================================"
echo "Built with: Vite"
echo "Status: SUCCESS"
echo "Ready for deployment"
echo "================================"
- name: Report failure
if: needs.build.outputs.build_status == 'failed'
run: |
echo "❌ BUILD FAILED"
echo "================================"
echo "Built with: Vite"
echo "Status: FAILED"
echo "Check build logs for details"
echo "================================"
exit 1
- name: Create status comment (if PR)
if: github.event_name == 'pull_request'
uses: actions/github-script@v7
with:
script: |
const status = '${{ needs.build.outputs.build_status }}';
const icon = status === 'success' ? '✅' : '❌';
const message = status === 'success' ? 'Build successful!' : 'Build failed!';
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `${icon} **${message}**\n\n**Built with:** Vite\n**Status:** ${status.toUpperCase()}`
});
# Job 4b: Deploy to GitHub Pages
deploy:
name: Deploy to GitHub Pages
needs: build
runs-on: ubuntu-latest
if: needs.build.outputs.build_status == 'success'
steps:
- name: Download build artifact
uses: actions/download-artifact@v4
with:
name: github-pages
path: artifact
- name: Extract artifact
run: |
cd artifact
tar -xf artifact.tar
mkdir -p ../dist
mv * ../dist/ 2>/dev/null || true
cd ..
rm -rf artifact
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist
keep_files: false
user_name: 'github-actions[bot]'
user_email: 'github-actions[bot]@users.noreply.github.com'
commit_message: 'Deploy from main branch'
- name: Report deployment success
run: |
echo "🚀 DEPLOYMENT SUCCESSFUL"
echo "================================"
echo "Branch: ${{ github.ref_name }}"
echo "URL: https://www.unityailab.com/"
echo "Built with: Vite (optimized)"
echo "================================"