Update README.md #21
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: 🔄 DevOps CI/CD Sync - GitHub to GitLab | |
| on: | |
| push: | |
| branches: [main, master, develop] | |
| pull_request: | |
| branches: [main, master] | |
| workflow_dispatch: # Déclenchement manuel | |
| inputs: | |
| branch: | |
| description: 'Branche à synchroniser' | |
| required: true | |
| default: 'main' | |
| jobs: | |
| sync-to-gitlab: | |
| name: 🚀 Synchronisation vers GitLab | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: 📥 Récupérer le code GitHub | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 # Tout l'historique | |
| ref: ${{ github.event.inputs.branch || github.ref }} | |
| - name: 🛠️ Configuration Git | |
| run: | | |
| git config user.name "DevOps Sync Bot" | |
| git config user.email "devops-sync@github.com" | |
| git config push.default current | |
| - name: 🔍 Informations de débogage | |
| run: | | |
| echo "=== INFORMATION DE SYNCHRONISATION ===" | |
| echo "📦 Repository GitHub: ${{ github.repository }}" | |
| echo "🌿 Branche: ${{ github.ref_name }}" | |
| echo "👤 GitLab User: ayoubaguezzar1" | |
| echo "🔗 Projet GitLab: devops-github-gitlab-ci-cd-automation-yml" | |
| echo "📁 Dossier: $(pwd)" | |
| echo "=====================================" | |
| - name: 🔐 Vérifier la présence des secrets | |
| run: | | |
| if [ -z "${{ secrets.GITLAB_TOKEN }}" ]; then | |
| echo "❌ ERREUR: GITLAB_TOKEN non configuré" | |
| echo "👉 Configuration: GitHub → Settings → Secrets → Actions" | |
| echo "👉 Ajouter: GITLAB_TOKEN avec votre token GitLab" | |
| exit 1 | |
| fi | |
| if [ -z "${{ secrets.GITLAB_USERNAME }}" ]; then | |
| echo "⚠️ AVERTISSEMENT: GITLAB_USERNAME non configuré" | |
| echo "⚠️ Utilisation du username par défaut: ayoubaguezzar1" | |
| fi | |
| - name: 🚀 Synchronisation vers GitLab | |
| env: | |
| GITLAB_USER: "${{ secrets.GITLAB_USERNAME || 'ayoubaguezzar1' }}" | |
| GITLAB_TOKEN: "${{ secrets.GITLAB_TOKEN }}" | |
| GITLAB_PROJECT: "devops-github-gitlab-ci-cd-automation-yml" | |
| run: | | |
| echo "=== DÉBUT SYNCHRONISATION ===" | |
| # URL GitLab personnalisée | |
| GITLAB_URL="https://oauth2:${GITLAB_TOKEN}@gitlab.com/${GITLAB_USER}/${GITLAB_PROJECT}.git" | |
| echo "🔗 URL GitLab: https://gitlab.com/${GITLAB_USER}/${GITLAB_PROJECT}" | |
| echo "📡 Connexion à GitLab..." | |
| # Ajouter GitLab comme remote | |
| git remote remove gitlab 2>/dev/null || true | |
| git remote add gitlab "${GITLAB_URL}" | |
| # Récupérer la branche actuelle | |
| CURRENT_BRANCH="${{ github.ref_name }}" | |
| echo "🌿 Branche source: ${CURRENT_BRANCH}" | |
| # Synchroniser la branche | |
| echo "🔄 Poussage vers GitLab..." | |
| if git push --porcelain gitlab HEAD:${CURRENT_BRANCH} --tags; then | |
| echo "✅ Synchronisation réussie!" | |
| echo "📊 Statistiques envoyées avec succès" | |
| else | |
| echo "⚠️ Premier échec, tentative avec --force" | |
| git push gitlab HEAD:${CURRENT_BRANCH} --tags --force | |
| echo "✅ Synchronisation forcée réussie!" | |
| fi | |
| echo "=== SYNCHRONISATION TERMINÉE ===" | |
| - name: 📊 Résumé de la synchronisation | |
| if: always() | |
| run: | | |
| echo "========================================" | |
| echo "📋 RÉSUMÉ DE LA SYNCHRONISATION" | |
| echo "========================================" | |
| echo "✅ Projet: DevOps-Github-Gitlab-CI-CD-Automation-Yml" | |
| echo "✅ Source: GitHub - ${{ github.repository }}" | |
| echo "✅ Destination: GitLab - ayoubaguezzar1/devops-github-gitlab-ci-cd-automation-yml" | |
| echo "✅ Branche: ${{ github.ref_name }}" | |
| echo "✅ Déclencheur: ${{ github.event_name }}" | |
| echo "✅ Statut: ${{ job.status }}" | |
| echo "✅ Timestamp: $(date)" | |
| echo "========================================" | |
| echo "" | |
| echo "🔗 Liens utiles:" | |
| echo "• GitHub Actions: https://github.com/${{ github.repository }}/actions" | |
| echo "• GitLab Project: https://gitlab.com/ayoubaguezzar1/devops-github-gitlab-ci-cd-automation-yml" | |
| echo "" | |
| echo "🚀 Prochain commit → Synchronisation automatique!" | |
| - name: 📧 Notification (Optionnel) | |
| if: success() | |
| run: | | |
| echo "💡 Pour ajouter des notifications:" | |
| echo "1. Slack: uses: 8398a7/action-slack@v3" | |
| echo "2. Email: Configurez les webhooks GitHub" | |
| echo "3. Discord: Utilisez discord-webhook-action" | |
| validation: | |
| name: ✅ Validation de la configuration | |
| runs-on: ubuntu-latest | |
| needs: sync-to-gitlab | |
| if: always() | |
| steps: | |
| - name: 📝 Rapport final | |
| run: | | |
| echo "🎉 CONFIGURATION DEVOP VALIDÉE 🎉" | |
| echo "" | |
| echo "Votre pipeline CI/CD est maintenant opérationnel:" | |
| echo "" | |
| echo "1️⃣ GitHub → GitLab Synchronisation ✅" | |
| echo " Chaque commit sur GitHub est automatiquement" | |
| echo " répliqué sur GitLab en moins de 30 secondes" | |
| echo "" | |
| echo "2️⃣ Sécurité ✅" | |
| echo " Tokens protégés par GitHub Secrets" | |
| echo " Authentification sécurisée OAuth2" | |
| echo "" | |
| echo "3️⃣ Monitoring ✅" | |
| echo " Logs détaillés dans GitHub Actions" | |
| echo " Statut visible en temps réel" | |
| echo "" | |
| echo "4️⃣ Fiabilité ✅" | |
| echo " Reconnexion automatique en cas d'échec" | |
| echo " Support du force push si nécessaire" | |
| echo "" | |
| echo "📚 Documentation:" | |
| echo "• README.md pour les instructions" | |
| echo "• .github/workflows/ pour la configuration" | |
| echo "" | |
| echo "🚀 Votre pipeline DevOps est prêt!" |