Skip to main content
Settings
Color Mode
Theme Skin
Background

Appearance preferences are saved in this browser only.

Environment
Current Environment Production

Built with JEKYLL_ENV=production. Changes require deployment.

Quick Links
Theme & Build
Jekyll v3.10.0
Last Build Aug 05, 04:35
Page Location
Page Info
Layout default
Collection none
Path fr/docs/development/docker-publishing.md
URL /fr/docs/development/docker-publishing/
This page was translated automatically from the English original. View the original

Pipeline de publication Docker en local

Publiez la gem jekyll-theme-zer0 depuis un conteneur Docker propre, en reproduisant le chemin de release CI pour des builds reproductibles sans toucher au Ruby de l'hôte.

Pipeline de publication Docker en local

Vous pouvez compiler et publier la gem jekyll-theme-zer0 entièrement à l’intérieur d’un conteneur Docker. Cela reproduit exactement le chemin de release CI, évitant les problèmes de décalage de version causés par des environnements Ruby différents sur l’hôte.

Pourquoi exécuter les releases dans Docker ?

Problème Solution Docker
Incompatibilité de version Ruby sur l’hôte Le conteneur utilise le même Ruby que la CI
Environnement de gems pollué Conteneur propre supprimé après exécution
« Ça marche sur ma machine » Environnement CI exact reproduit en local
Fuites de données sensibles Identifiants injectés via des variables d’environnement, jamais stockés

Fichiers Compose

Fichier Objet
docker-compose.publish.yml Compile et pousse l’image Docker vers un registre
docker-compose.prod.yml Déploiement en production avec des tags d’image figés

Publier la gem en local

L’approche recommandée est le script de release unifié, qui gère tout :

./scripts/bin/release patch    # or minor / major

Ce script :

  1. Analyse les commits depuis le dernier tag pour confirmer le type d’incrément
  2. Met à jour lib/jekyll-theme-zer0/version.rb
  3. Exécute la validation (./scripts/bin/validate)
  4. Compile la gem (gem build jekyll-theme-zer0.gemspec)
  5. Crée un tag git et le pousse
  6. Publie sur RubyGems (gem push)

Passez --dry-run pour prévisualiser sans publier :

./scripts/bin/release patch --dry-run

Exécution dans un conteneur Docker

Pour exécuter manuellement la release dans un conteneur Docker :

# Start a clean Jekyll container
docker compose -f docker-compose.yml run --rm jekyll bash

# Inside the container:
./scripts/bin/release patch

Ou avec le fichier compose de publication :

docker compose -f docker-compose.yml \
               -f docker-compose.publish.yml \
               build publish

Variables d’environnement

Définissez les identifiants dans .env (ne committez jamais ce fichier) :

RUBYGEMS_API_KEY=rubygems_...
GITHUB_TOKEN=ghp_...
DOCKER_IMAGE=amrabdel/zer0-mistakes
IMAGE_TAG=latest

Le fichier .env est déjà présent dans .gitignore.

Équivalent du pipeline CI

GitHub Actions exécute automatiquement le même pipeline de release sur les tags de version :

# .github/workflows/release.yml (simplified)
- name: Build gem
  run: gem build jekyll-theme-zer0.gemspec

- name: Publish to RubyGems
  run: gem push jekyll-theme-zer0-$.gem
  env:
    GEM_HOST_API_KEY: $

Dépannage

« Clé API invalide »

Définissez RUBYGEMS_API_KEY dans votre shell ou votre fichier .env :

export RUBYGEMS_API_KEY=$(cat ~/.gem/credentials | grep rubygems_api_key | cut -d' ' -f2)

Gem déjà publiée pour cette version

Incrémentez la version et relancez. RubyGems n’autorise pas l’écrasement d’une version déjà publiée.

Échec de la compilation Docker

docker compose down -v
docker compose build --no-cache

Ressources associées

Voir aussi

  • [[Development]]
  • [[Docker]]
  • [[Release Management]]