W02
GitHub Pages
Hébergement statique gratuit depuis un dépÎt GitHub avec déploiement automatique via Actions.
đ 1. PrĂ©sentation de GitHub Pages
GitHub Pages est un service d'hébergement gratuit intégré à GitHub. Il sert des fichiers statiques (HTML, CSS, JS) directement depuis un dépÎt Git.
- Gratuit pour les dépÎts publics et privés
- URL automatique :
username.github.io/repo - SSL/HTTPS automatique
- Support des domaines personnalisés
- Intégration native avec GitHub Actions
GitHub Pages est idéal pour : portfolios, documentation, sites de projets open source, blogs statiques (Jekyll, Hugo).
đ 2. Types de sites
| Type | URL | DépÎt |
|---|---|---|
| Site utilisateur | username.github.io | username/username.github.io |
| Site organisation | orgname.github.io | orgname/orgname.github.io |
| Site de projet | username.github.io/repo | n'importe quel dépÎt |
Pour les sites de projet, configurez
"homepage": "https://username.github.io/repo" dans package.json pour que les assets se chargent correctement.đż 3. DĂ©ploiement depuis une branche
GitHub Pages peut servir depuis :
- La branche
gh-pages(racine) - La branche
main, dossier/docs - La branche
main, racine (pour les sites statiques simples)
# Installer gh-pages localement
npm install -D gh-pages
# package.json
{
"homepage": "https://username.github.io/mon-app",
"scripts": {
"predeploy": "npm run build",
"deploy": "gh-pages -d dist"
}
}
# Déployer
npm run deploy
⥠4. GitHub Actions pour déploiement automatique
Créez .github/workflows/deploy.yml pour déployer automatiquement à chaque push.
name: Deploy to GitHub Pages
on:
push:
branches: [main]
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
cache: npm
- run: npm ci
- run: npm run build
- uses: actions/upload-pages-artifact@v3
with:
path: dist/
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/deploy-pages@v4
id: deployment
actions/setup-node@v4 avec cache: npm met automatiquement en cache ~/.npm entre les runs. Les builds suivants sont bien plus rapides.đ 5. Domaine personnalisĂ©
Pour utiliser monsite.fr au lieu de username.github.io/repo :
- Créez un fichier
CNAMEĂ la racine du site avec votre domaine - Configurez les enregistrements DNS chez votre registrar
- Activez HTTPS dans Settings â Pages
# Fichier CNAME (Ă la racine du dossier dist/)
monsite.fr
# DNS Ă configurer chez Hostinger/OVH/Namecheap
# Enregistrements A (4 IPs GitHub Pages)
A @ 185.199.108.153
A @ 185.199.109.153
A @ 185.199.110.153
A @ 185.199.111.153
# Enregistrement CNAME pour www
CNAME www username.github.io
â ïž 6. Limitations
- Sites statiques uniquement â pas de backend Node.js
- Taille du dépÎt : 1 GB max
- Bande passante : 100 GB/mois
- Builds : 10 builds/heure
- Pas de traitement cÎté serveur, pas de base de données
Pour une app avec backend, combinez GitHub Pages (frontend) + Railway/Render (API Node.js) ou utilisez Vercel/Netlify qui supportent les serverless functions.