183 lines
5.1 KiB
Markdown
183 lines
5.1 KiB
Markdown
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
|