Introduction à GitHub Actions
Table des matières
- Qu'est-ce que GitHub Actions ?
- Concepts clés
- Avantages de GitHub Actions
- Premier workflow
- Interface GitHub Actions
- Exercices pratiques
1 - Qu'est-ce que GitHub Actions ?
Définition
GitHub Actions est une plateforme d'automatisation CI/CD intégrée directement dans GitHub. Elle permet d'automatiser des tâches en réponse à des événements sur votre repository.
Cas d'utilisation
| Catégorie | Exemples |
|---|---|
| CI | Tests automatiques, linting, build |
| CD | Déploiement staging/production |
| Automation | Release notes, labels automatiques |
| Security | Scan de vulnérabilités, audit |
| DevOps | Infrastructure as Code, backups |
Comparaison avec d'autres outils
| Outil | Type | Avantages | Inconvénients |
|---|---|---|---|
| GitHub Actions | Intégré | Gratuit, natif GitHub | Limité à GitHub |
| Jenkins | Self-hosted | Très flexible | Maintenance |
| GitLab CI | Intégré | Complet | Écosystème GitLab |
| CircleCI | SaaS | Performance | Coût |
🔝 Retour à la table des matières
2 - Concepts clés
Vocabulaire essentiel
Définitions
| Terme | Description |
|---|---|
| Workflow | Fichier YAML définissant l'automatisation |
| Event | Déclencheur (push, PR, schedule...) |
| Job | Ensemble de steps exécutés sur un runner |
| Step | Tâche individuelle (action ou commande) |
| Action | Bloc réutilisable (du Marketplace ou custom) |
| Runner | Machine qui exécute les jobs |
| Artifact | Fichier produit par un workflow |
Structure de fichiers
.github/
└── workflows/
├── ci.yml # Tests et build
├── cd.yml # Déploiement
└── release.yml # Publication
Types de runners
| Runner | OS | Specs | Usage |
|---|---|---|---|
ubuntu-latest | Linux | 2 CPU, 7GB RAM | Par défaut |
windows-latest | Windows | 2 CPU, 7GB RAM | Apps Windows |
macos-latest | macOS | 3 CPU, 14GB RAM | Apps iOS/macOS |
| Self-hosted | Custom | Votre matériel | Besoins spécifiques |
🔝 Retour à la table des matières
3 - Avantages de GitHub Actions
Pourquoi choisir GitHub Actions ?
| Avantage | Description |
|---|---|
| Intégré | Pas de configuration externe |
| Gratuit | 2000 min/mois pour les repos publics |
| Marketplace | +15000 actions prêtes à l'emploi |
| YAML | Configuration as Code versionné |
| Multi-OS | Linux, Windows, macOS |
| Communauté | Documentation et support riches |
Tarification
| Plan | Minutes/mois | Stockage |
|---|---|---|
| Free | 2,000 | 500 MB |
| Team | 3,000 | 2 GB |
| Enterprise | 50,000 | 50 GB |
Astuce
Les repos publics ont des minutes illimitées et gratuites !
Écosystème
🔝 Retour à la table des matières
4 - Premier workflow
Hello World
# .github/workflows/hello.yml
name: Hello World
on:
push:
branches: [main]
workflow_dispatch: # Permet l'exécution manuelle
jobs:
greet:
runs-on: ubuntu-latest
steps:
- name: Say Hello
run: echo "Hello, GitHub Actions! 🚀"
- name: Show date
run: date
- name: Show system info
run: |
echo "OS: $(uname -a)"
echo "User: $(whoami)"
echo "Directory: $(pwd)"
Explication ligne par ligne
name: Hello World # Nom affiché dans l'interface
on: # Événements déclencheurs
push:
branches: [main] # Seulement sur la branche main
jobs: # Liste des jobs
greet: # Nom du job
runs-on: ubuntu-latest # Runner à utiliser
steps: # Liste des étapes
- name: Say Hello # Nom de l'étape
run: echo "..." # Commande shell
Créer le workflow
# Dans votre repo
mkdir -p .github/workflows
nano .github/workflows/hello.yml
# Collez le contenu ci-dessus
git add .github/workflows/hello.yml
git commit -m "Add first workflow"
git push
Workflow avec checkout
name: Build Project
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: List files
run: ls -la
- name: Show README
run: cat README.md || echo "No README"
🔝 Retour à la table des matières
5 - Interface GitHub Actions
Accéder aux workflows
- Aller sur votre repository GitHub
- Cliquer sur l'onglet Actions
- Voir les workflows disponibles
- Cliquer sur un run pour les détails
Éléments de l'interface
| Élément | Description |
|---|---|
| Workflows | Liste des workflows définis |
| Runs | Historique des exécutions |
| Jobs | Jobs d'un run spécifique |
| Logs | Sortie détaillée de chaque step |
| Artifacts | Fichiers produits |
| Summary | Résumé du run |
Statuts
| Statut | Icône | Signification |
|---|---|---|
| Success | ✅ | Tous les jobs réussis |
| Failure | ❌ | Au moins un job échoué |
| Cancelled | ⚪ | Annulé manuellement |
| Skipped | ⏭️ | Job sauté (condition) |
| In progress | 🟡 | En cours d'exécution |
| Queued | ⏳ | En attente d'un runner |
Badges de statut
<!-- Dans votre README.md -->

🔝 Retour à la table des matières
6 - Exercices pratiques
Exercice 1 : Premier workflow
Créez un workflow qui affiche "Hello from GitHub Actions!" à chaque push :
Solution
# .github/workflows/hello.yml
name: Hello
on: [push]
jobs:
hello:
runs-on: ubuntu-latest
steps:
- run: echo "Hello from GitHub Actions!"
Exercice 2 : Workflow avec informations système
Créez un workflow qui affiche les informations du runner :
Solution
name: System Info
on: [push]
jobs:
info:
runs-on: ubuntu-latest
steps:
- name: OS Info
run: |
echo "OS: $(uname -s)"
echo "Kernel: $(uname -r)"
echo "Architecture: $(uname -m)"
- name: Disk Space
run: df -h
- name: Memory
run: free -h
Quiz
Q1. Où sont stockés les fichiers de workflow ?
Réponse
Dans .github/workflows/ à la racine du repository.
Q2. Quel runner est recommandé par défaut ?
Réponse
ubuntu-latest - C'est le plus rapide et le moins cher.
Q3. Quelle action permet de récupérer le code du repo ?
Réponse
actions/checkout@v4
🔝 Retour à la table des matières
Points clés à retenir
- GitHub Actions = CI/CD intégré à GitHub
- Workflows définis en YAML dans
.github/workflows/ - Déclenchés par des events (push, PR, schedule...)
- Exécutés sur des runners (ubuntu, windows, macos)
- actions/checkout pour récupérer le code
- Gratuit pour les repos publics