update: progress bar in analysis record page. added macro-analyst to … #87
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |