Docker et GitHub Container Registry
Vue d’ensemble
Le projet est configuré pour publier automatiquement les images Docker vers GitHub Container Registry (GHCR) lors de chaque push vers les branches principales.
Configuration
Tags automatiques
Les images sont taguées automatiquement selon le contexte :
| Événement | Tag | Exemple |
|---|---|---|
Push sur branche |
|
|
Pull Request |
|
|
Tag semver |
|
|
Commit SHA |
|
|
Branche par défaut |
|
|
Utilisation des images
Pull d’une image
# Image latest (branche main)
docker pull ghcr.io/constructions-incongrues/musiqueapproximative:latest
# Image d'une branche spécifique
docker pull ghcr.io/constructions-incongrues/musiqueapproximative:develop
# Image d'une version spécifique
docker pull ghcr.io/constructions-incongrues/musiqueapproximative:1.2.3
# Image d'un commit spécifique
docker pull ghcr.io/constructions-incongrues/musiqueapproximative:main-abc1234
Visibilité des packages
Par défaut, les packages GHCR héritent de la visibilité du dépôt :
-
Dépôt public → Package public
-
Dépôt privé → Package privé
Pour changer la visibilité :
-
Aller sur https://github.com/orgs/constructions-incongrues/packages
-
Sélectionner le package
-
Package settings → Change visibility
Cache des builds
Le workflow utilise le cache GitHub Actions pour accélérer les builds :
-
cache-from: type=gha- Utilise le cache existant -
cache-to: type=gha,mode=max- Sauvegarde le cache maximum
Cela réduit significativement le temps de build pour les builds suivants.
Nettoyage des anciennes images
Pour éviter l’accumulation d’images, vous pouvez :
-
Manuellement : Supprimer les anciennes versions via l’interface GitHub
-
Automatiquement : Ajouter une GitHub Action pour nettoyer les anciennes images
name: Cleanup old images
on:
schedule:
- cron: '0 0 * * 0' # Chaque dimanche à minuit
jobs:
cleanup:
runs-on: ubuntu-latest
steps:
- uses: actions/delete-package-versions@v4
with:
package-name: 'musiqueapproximative'
package-type: 'container'
min-versions-to-keep: 10
delete-only-untagged-versions: 'true'
Vérification
Après un push, vérifiez que l’image a été publiée :
-
Aller sur https://github.com/constructions-incongrues/musiqueapproximative/pkgs/container/musiqueapproximative
-
Vérifier les tags disponibles
-
Vérifier la date de dernière publication
Troubleshooting
Erreur de permission
Si vous obtenez une erreur de permission :
-
Vérifier que
packages: writeest bien dans les permissions du workflow -
Vérifier que le token GitHub a les permissions nécessaires
Image non publiée sur PR
C’est normal ! Les images ne sont pas publiées pour les PRs pour économiser l’espace de stockage. Elles sont seulement buildées pour vérifier qu’il n’y a pas d’erreurs.
Cache non utilisé
Si le cache n’est pas utilisé :
-
Vérifier que les builds précédents ont réussi
-
Le cache est partagé entre les branches du même dépôt
-
Le cache expire après 7 jours d’inactivité
Registry : ghcr.io
Image : ghcr.io/constructions-incongrues/musiqueapproximative
Visibilité : Hérite du dépôt