|
1 |
| -# GitHub Actions HTML/CSS/JS |
| 1 | +# GitHub Actions pour HTML/CSS/JS |
| 2 | + |
| 3 | +Une démonstration complète et didactique de l'intégration des GitHub Actions pour automatiser les tests, le linting et la validation de code dans un projet web front-end. Ce projet sert d'exemple pratique pour mettre en place une pipeline CI/CD robuste. |
| 4 | + |
| 5 | +## 🔧 Statut des Actions GitHub |
2 | 6 |
|
3 |
| -### Statut des Actions GitHub |
4 | 7 | 
|
5 | 8 | 
|
6 | 9 | 
|
7 | 10 | 
|
8 | 11 |
|
9 |
| -## Description |
10 |
| -Ce projet est un exemple d'utilisation des GitHub Actions pour automatiser les tests, le linting et d'autres tâches pour un projet HTML/CSS/JS. Il est conçu pour être didactique et facile à utiliser. |
| 12 | +## 🚀 Technologies utilisées |
| 13 | + |
| 14 | +- **HTML5** - Structure sémantique des pages web |
| 15 | +- **CSS3** - Styles et mise en page responsive |
| 16 | +- **JavaScript ES6+** - Logique interactive côté client |
| 17 | +- **Jest** - Framework de tests unitaires |
| 18 | +- **Deno** - Runtime JavaScript moderne et sécurisé |
| 19 | +- **GitHub Actions** - Pipeline CI/CD automatisée |
| 20 | +- **Super-Linter** - Validation multi-langages |
| 21 | + |
| 22 | +## ✨ Fonctionnalités |
| 23 | + |
| 24 | +- **Tests automatisés** - Exécution de tests unitaires avec Jest et Deno |
| 25 | +- **Linting continu** - Vérification automatique du code avec Super-Linter |
| 26 | +- **Pipeline CI/CD** - Intégration et déploiement continus via GitHub Actions |
| 27 | +- **Multi-environnements** - Support des runtimes Node.js et Deno |
| 28 | +- **Badges de statut** - Visualisation en temps réel de l'état du projet |
| 29 | +- **Documentation complète** - Guide détaillé pour l'utilisation et la contribution |
| 30 | + |
| 31 | +## 📦 Prérequis |
11 | 32 |
|
12 |
| -## Installation |
| 33 | +- **Node.js** (version 16 ou supérieure) |
| 34 | +- **npm** ou **yarn** pour la gestion des dépendances |
| 35 | +- **Deno** (optionnel, pour les tests Deno) |
| 36 | +- **Git** pour le contrôle de version |
| 37 | +- Compte **GitHub** avec accès aux Actions |
13 | 38 |
|
14 |
| -1. Clonez le dépôt : |
| 39 | +## 🛠️ Installation |
| 40 | + |
| 41 | +1. **Cloner le dépôt** |
15 | 42 | ```bash
|
16 | 43 | git clone https://github.com/Y-Picot/github-actions-html-css-js.git
|
17 | 44 | ```
|
18 | 45 |
|
19 |
| -2. Accédez au dossier du projet : |
| 46 | +2. **Naviguer dans le dossier** |
20 | 47 | ```bash
|
21 | 48 | cd github-actions-html-css-js
|
22 | 49 | ```
|
23 | 50 |
|
24 |
| -3. Installez les dépendances : |
| 51 | +3. **Installer les dépendances** |
25 | 52 | ```bash
|
26 | 53 | npm install
|
27 | 54 | ```
|
28 | 55 |
|
29 |
| -## Utilisation |
30 |
| - |
31 |
| -### Lancer les tests |
32 |
| -- Pour exécuter les tests Jest : |
33 |
| - ```bash |
34 |
| - npm run test-jest |
35 |
| - ``` |
36 |
| -- Pour exécuter les tests Deno : |
37 |
| - ```bash |
38 |
| - deno test |
39 |
| - ``` |
40 |
| - |
41 |
| -### Lancer le linting |
42 |
| -- Pour vérifier le linting avec Super-Linter : |
43 |
| - Les erreurs de linting seront automatiquement détectées lors des pushs sur la branche `main`. |
44 |
| - |
45 |
| -## Scripts disponibles |
46 |
| - |
47 |
| -### Tests |
48 |
| -- **Jest** : |
49 |
| - ```bash |
50 |
| - npm run test-jest |
51 |
| - ``` |
52 |
| - Exécute les tests unitaires pour les fichiers JavaScript avec Jest. |
53 |
| - |
54 |
| -- **Deno** : |
55 |
| - ```bash |
56 |
| - npm run test-deno |
57 |
| - ``` |
58 |
| - Exécute les tests unitaires pour les fichiers JavaScript avec Deno. |
59 |
| - |
60 |
| -### Fichiers ignorés |
61 |
| -Un fichier `.gitignore` a été ajouté pour exclure les fichiers et dossiers suivants : |
62 |
| -- `node_modules/` |
63 |
| -- Fichiers de logs (`*.log`) |
64 |
| -- Dossiers spécifiques à Deno (`.deno_modules/`, `.deno_test_cache/`) |
65 |
| -- Fichiers système (`.DS_Store`, `Thumbs.db`) |
66 |
| -- Dossiers de couverture (`coverage/`) |
67 |
| -- Dossiers de build (`build/`, `dist/`) |
68 |
| - |
69 |
| -## Normes de nommage |
70 |
| - |
71 |
| -### HTML/CSS/JS |
72 |
| -- **HTML** : Utilisez des noms de classes et d'identifiants en kebab-case (ex. `main-container`). |
73 |
| -- **CSS** : Respectez la méthodologie BEM (Block Element Modifier). |
74 |
| -- **JavaScript** : Utilisez le camelCase pour les variables et fonctions, et PascalCase pour les classes. |
75 |
| - |
76 |
| -### Nom du dépôt |
77 |
| -- Utilisez des noms descriptifs en kebab-case (ex. `action-git-html-css-js`). |
78 |
| - |
79 |
| -## Contribuer |
80 |
| -Les contributions sont les bienvenues ! Veuillez suivre les étapes suivantes : |
81 |
| -1. Forkez le projet. |
82 |
| -2. Créez une branche pour votre fonctionnalité : `git checkout -b feature/ma-fonctionnalite`. |
83 |
| -3. Faites vos modifications et testez-les. |
84 |
| -4. Soumettez une pull request. |
| 56 | +4. **Vérifier l'installation** |
| 57 | + ```bash |
| 58 | + npm run test-jest |
| 59 | + ``` |
| 60 | + |
| 61 | +## 💡 Utilisation |
| 62 | + |
| 63 | +### Exécution des tests |
| 64 | + |
| 65 | +#### Tests Jest (Node.js) |
| 66 | +```bash |
| 67 | +npm run test-jest |
| 68 | +``` |
| 69 | +Exécute la suite complète de tests unitaires avec Jest et génère un rapport de couverture. |
| 70 | + |
| 71 | +#### Tests Deno |
| 72 | +```bash |
| 73 | +npm run test-deno |
| 74 | +``` |
| 75 | +ou directement avec Deno : |
| 76 | +```bash |
| 77 | +deno test |
| 78 | +``` |
| 79 | + |
| 80 | +### Validation du code |
| 81 | + |
| 82 | +#### Linting automatique |
| 83 | +Le linting s'exécute automatiquement lors des pushs sur la branche `main` via GitHub Actions. |
| 84 | + |
| 85 | +#### Linting local (si configuré) |
| 86 | +```bash |
| 87 | +npm run lint |
| 88 | +``` |
| 89 | + |
| 90 | +### Scripts disponibles |
| 91 | + |
| 92 | +| Commande | Description | |
| 93 | +|----------|-------------| |
| 94 | +| `npm run test-jest` | Tests unitaires avec Jest | |
| 95 | +| `npm run test-deno` | Tests unitaires avec Deno | |
| 96 | +| `npm run lint` | Vérification du code (si configuré) | |
| 97 | +| `npm start` | Démarre le serveur de développement (si configuré) | |
| 98 | + |
| 99 | +## 📁 Structure du projet |
| 100 | + |
| 101 | +``` |
| 102 | +github-actions-html-css-js/ |
| 103 | +├── .github/ |
| 104 | +│ └── workflows/ # Fichiers de configuration GitHub Actions |
| 105 | +│ ├── unit_tests.yml # Pipeline de tests Jest |
| 106 | +│ ├── super_linter_hcjs.yml # Pipeline de linting |
| 107 | +│ └── deno_lint.yml # Pipeline de tests Deno |
| 108 | +├── src/ # Code source |
| 109 | +│ ├── index.html # Page principale |
| 110 | +│ ├── style.css # Feuilles de style |
| 111 | +│ └── script.js # Scripts JavaScript |
| 112 | +├── tests/ # Tests unitaires |
| 113 | +│ ├── jest/ # Tests Jest |
| 114 | +│ └── deno/ # Tests Deno |
| 115 | +├── package.json # Configuration npm |
| 116 | +├── .gitignore # Fichiers à ignorer |
| 117 | +├── README.md # Documentation |
| 118 | +└── LICENSE # Licence du projet |
| 119 | +``` |
| 120 | + |
| 121 | +## ⚙️ Configuration des GitHub Actions |
| 122 | + |
| 123 | +### Workflows automatisés |
| 124 | + |
| 125 | +1. **Tests Unitaires** (`unit_tests.yml`) |
| 126 | + - Exécution des tests Jest |
| 127 | + - Génération de rapports de couverture |
| 128 | + - Compatible multi-OS (Ubuntu, Windows, macOS) |
| 129 | + |
| 130 | +2. **Super-Linter** (`super_linter_hcjs.yml`) |
| 131 | + - Validation HTML, CSS, JavaScript |
| 132 | + - Détection d'erreurs de syntaxe |
| 133 | + - Vérification des bonnes pratiques |
| 134 | + |
| 135 | +3. **Tests Deno** (`deno_lint.yml`) |
| 136 | + - Tests avec le runtime Deno |
| 137 | + - Validation TypeScript native |
| 138 | + - Sécurité renforcée |
| 139 | + |
| 140 | +## 🎨 Conventions de développement |
| 141 | + |
| 142 | +### HTML |
| 143 | +- **Nommage** : Classes et IDs en `kebab-case` |
| 144 | +- **Structure** : HTML5 sémantique |
| 145 | +- **Accessibilité** : Attributs ARIA appropriés |
| 146 | + |
| 147 | +### CSS |
| 148 | +- **Méthodologie** : BEM (Block Element Modifier) |
| 149 | +- **Nommage** : Classes en `kebab-case` |
| 150 | +- **Organisation** : Feuilles de style modulaires |
| 151 | + |
| 152 | +### JavaScript |
| 153 | +- **Variables/Fonctions** : `camelCase` |
| 154 | +- **Classes** : `PascalCase` |
| 155 | +- **Constantes** : `UPPER_SNAKE_CASE` |
| 156 | +- **Fichiers** : `kebab-case.js` |
| 157 | + |
| 158 | +### Dépôt |
| 159 | +- **Nom** : Format `kebab-case` |
| 160 | +- **Branches** : `feature/nom-fonctionnalite` |
| 161 | +- **Commits** : Messages descriptifs en français |
| 162 | + |
| 163 | +## 🚫 Fichiers ignorés |
| 164 | + |
| 165 | +Le projet exclut automatiquement : |
| 166 | +- `node_modules/` - Dépendances Node.js |
| 167 | +- `*.log` - Fichiers de logs |
| 168 | +- `.deno_modules/`, `.deno_test_cache/` - Cache Deno |
| 169 | +- `.DS_Store`, `Thumbs.db` - Fichiers système |
| 170 | +- `coverage/` - Rapports de couverture |
| 171 | +- `build/`, `dist/` - Dossiers de build |
| 172 | + |
| 173 | +## 🤝 Contribution |
| 174 | + |
| 175 | +Les contributions sont encouragées ! Pour contribuer : |
| 176 | + |
| 177 | +1. **Fork** le projet |
| 178 | +2. **Créez** votre branche (`git checkout -b feature/amelioration`) |
| 179 | +3. **Testez** vos modifications (`npm run test-jest`) |
| 180 | +4. **Committez** (`git commit -m 'Ajout d'une fonctionnalité'`) |
| 181 | +5. **Poussez** (`git push origin feature/amelioration`) |
| 182 | +6. **Ouvrez** une Pull Request |
| 183 | + |
| 184 | +### Checklist avant PR |
| 185 | +- [ ] Tests passent localement |
| 186 | +- [ ] Code respecte les conventions |
| 187 | +- [ ] Documentation mise à jour |
| 188 | +- [ ] Badges de statut fonctionnels |
| 189 | + |
| 190 | +### Suggestions d'améliorations |
| 191 | +- Ajout de tests end-to-end avec Playwright |
| 192 | +- Intégration de Lighthouse pour les performances |
| 193 | +- Pipeline de déploiement automatique |
| 194 | +- Analyse de sécurité avec CodeQL |
| 195 | +- Support de TypeScript |
| 196 | + |
| 197 | +## 🎯 Objectifs pédagogiques |
| 198 | + |
| 199 | +Ce projet démontre : |
| 200 | +- **Configuration CI/CD** avec GitHub Actions |
| 201 | +- **Tests multi-environnements** (Node.js vs Deno) |
| 202 | +- **Automatisation du linting** et validation |
| 203 | +- **Intégration continue** et bonnes pratiques |
| 204 | +- **Documentation technique** complète |
| 205 | + |
| 206 | +## 📄 Licence |
| 207 | + |
| 208 | +Ce projet est sous licence MIT. Voir le fichier [LICENSE](LICENSE) pour plus de détails. |
| 209 | + |
| 210 | +## 👤 Auteur |
| 211 | + |
| 212 | +**Y-Picot** - [GitHub](https://github.com/Y-Picot) |
| 213 | + |
| 214 | +--- |
| 215 | + |
| 216 | +⭐ N'hésitez pas à donner une étoile si ce projet vous aide à comprendre GitHub Actions ! |
0 commit comments