Deploy your Odoo PWA to GitHub Pages with GitHub Actions for continuous deployment. ## What this command does: - Sets up GitHub Actions workflow for automated deployment - Configures GitHub Pages in repository settings - Sets up repository secrets for environment variables - Deploys the application to GitHub Pages - Provides custom domain setup instructions ## Prerequisites: Before deploying, verify: 1. ✅ Project builds successfully locally (`npm run build`) 2. ✅ Git repository exists and is pushed to GitHub 3. ✅ User has admin access to the repository 4. ✅ GitHub Pages is enabled in repository settings 5. ✅ Base URL configuration is correct for GitHub Pages ## Important: GitHub Pages Limitations ⚠️ Note: GitHub Pages is static hosting only. Server-side API routes won't work. **Recommendation**: For full Odoo PWA functionality with server-side API proxy: - Use Vercel, Cloudflare Pages, or Netlify instead - Or deploy API routes separately (e.g., Vercel Serverless Functions) ## If Continuing with GitHub Pages: You'll need to modify the Odoo client to use CORS-enabled direct Odoo API calls or deploy API routes separately. ## Steps: ### 1. Configure GitHub Repository ```bash # Ensure you're on main branch git checkout main git pull origin main ``` ### 2. Set Up GitHub Actions Workflow Check if `.github/workflows/deploy.yml` exists: - If yes: Review and update if needed - If no: Create the workflow file ### 3. Configure Repository Secrets Go to: Repository → Settings → Secrets and variables → Actions Add these secrets: ``` ODOO_API_KEY=your_production_api_key ODOO_USERNAME=your.email@company.com VITE_ODOO_URL=https://yourcompany.odoo.com VITE_ODOO_DB=yourcompany-main VITE_MODEL_NAME=x_expense VITE_MODEL_DISPLAY_NAME=Expense ``` ### 4. Enable GitHub Pages Repository → Settings → Pages: - Source: Deploy from a branch - Branch: `gh-pages` (will be created by Actions) - Folder: `/ (root)` ### 5. Update Base Path For framework-specific configuration: **SvelteKit** (`svelte.config.js`): ```javascript paths: { base: process.env.NODE_ENV === 'production' ? '/your-repo-name' : '' } ``` **React/Vue** (`vite.config.js`): ```javascript base: process.env.NODE_ENV === 'production' ? '/your-repo-name/' : '/' ``` ### 6. Commit and Push ```bash git add . git commit -m "Configure GitHub Pages deployment" git push origin main ``` ### 7. Monitor Deployment - Go to Actions tab in GitHub - Watch the deployment workflow - Check for any errors ## GitHub Actions Workflow The workflow should: 1. Trigger on push to `main` branch 2. Install dependencies 3. Build the project with environment variables 4. Deploy to `gh-pages` branch 5. GitHub Pages automatically serves from `gh-pages` ## Example Workflow (.github/workflows/deploy.yml): ```yaml name: Deploy to GitHub Pages on: push: branches: [main] workflow_dispatch: permissions: contents: read pages: write id-token: write jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20' - run: npm install - run: npm run build env: VITE_ODOO_URL: ${{ secrets.VITE_ODOO_URL }} VITE_ODOO_DB: ${{ secrets.VITE_ODOO_DB }} VITE_MODEL_NAME: ${{ secrets.VITE_MODEL_NAME }} VITE_MODEL_DISPLAY_NAME: ${{ secrets.VITE_MODEL_DISPLAY_NAME }} - uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./build ``` ## Custom Domain Setup (Optional): 1. Add `CNAME` file to `static` folder with your domain 2. Configure DNS records: - A record: Points to GitHub Pages IPs - Or CNAME: Points to `username.github.io` 3. Enable HTTPS in repository settings (automatic) ## Post-Deployment Checks: After deployment, verify: 1. ✅ Application loads at `https://username.github.io/repo-name` 2. ✅ All assets load correctly (check browser console) 3. ✅ Base path is correct for all routes 4. ✅ Odoo connection works (may need CORS configuration) 5. ✅ PWA installs correctly ## Example prompts to use this command: - `/deploy-github` - Interactive GitHub Pages deployment - User: "Deploy to GitHub Pages" - User: "Set up GitHub Actions for my PWA" ## Troubleshooting: ### Build Fails in Actions - Check Actions logs for specific error - Verify all secrets are set correctly - Ensure Node version is compatible - Test build locally first ### 404 on GitHub Pages - Verify `gh-pages` branch exists - Check GitHub Pages settings - Ensure base path is configured - Wait a few minutes for DNS propagation ### Assets Not Loading - Check base path configuration - Verify all asset paths are relative - Look for CORS issues in console - Ensure service worker paths are correct ### API Routes Don't Work - GitHub Pages doesn't support server-side code - Deploy API routes to Vercel/Netlify separately - Or modify Odoo client for direct API calls with CORS ## After Deployment: Provide the user with: 1. GitHub Pages URL 2. Link to Actions tab for monitoring 3. Instructions for custom domain setup 4. Reminder about server-side limitations 5. Alternative hosting recommendations if needed