zDevOps MF - Extension VS Code pour Mainframe

📋 Vue d'ensemble
zDevOps MF (MainFrame) est une extension Visual Studio Code développée par Generali France pour moderniser et automatiser les workflows DevOps des applications mainframe. L'extension transforme VS Code en un IDE mainframe moderne avec intégration native GitLab, spécialement conçue pour les environnements d'entreprise sécurisés.
🎯 Objectifs
- Simplifier le développement mainframe (COBOL, JCL)
- Automatiser les workflows Git/GitLab
- Standardiser les pratiques DevOps entre équipes
- Réduire les temps de setup et déploiement
🏢 Environnement cible
- Clients supportés : GFA, GVIE, EA, GPROX
- Infrastructure : GitLab Enterprise on-premise
- Sécurité : Certificats SSL personnalisés Generali
🚀 Installation
Installation via Marketplace (Recommandée)
- Ouvrez Visual Studio Code
- Accédez aux Extensions (
Ctrl+Shift+X
)
- Recherchez "zDevOps MF"
- Cliquez sur Installer
Installation manuelle
- Téléchargez le fichier
.vsix
depuis le repository interne
- Dans VS Code : Extensions → Install from VSIX...
- Sélectionnez le fichier téléchargé
⚙️ Prérequis
Logiciels requis
- Visual Studio Code : v1.59.0 minimum
- Node.js : v12.x ou supérieur
- Git : Version récente avec support SSL
Accès et sécurité
- Compte GitLab Generali avec permissions lecture/écriture
- Token GitLab (Personal Access Token avec scopes:
api
, read_repository
, write_repository
)
- Certificat SSL Generali installé :
C:\Users\[username]\generali_ca\ca.crt
Réseau
- Accès HTTPS vers
gitlab.groupe.generali.fr
- Ports ouverts : 443 (HTTPS), 22 (SSH optionnel)
🔧 Configuration
Configuration initiale obligatoire
- Ouvrez les paramètres VS Code (
Ctrl+,
)
- Recherchez
zdevops
- Configurez les paramètres suivants :
{
"zdevops.user.gitToken": "glpat-xxxxxxxxxxxxxxxxxxxxx",
"zdevops.user.gitUrl": "https://gitlab.groupe.generali.fr/gitlab/api/v4/",
"zdevops.user.workspace": "C:\\dev\\mainframe",
"zdevops.git.parentGroupId": "660"
}
Paramètres avancés (optionnels)
{
"zdevops.git.sharedPanvaletGFA": "https://gitlab.groupe.generali.fr/gitlab/zdevops/gfa/DEP_PANVALET.git",
"zdevops.git.sharedPanvaletEA": "https://gitlab.groupe.generali.fr/gitlab/zdevops/ea/DEP_PANVALET.git",
"zdevops.git.sharedPanvaletGVIE": "https://gitlab.groupe.generali.fr/gitlab/zdevops/gvie/DEP_PANVALET.git",
"zdevops.git.sharedPanvaletGPROX": ""
}
🔐 Obtention du Token GitLab
- Connectez-vous sur GitLab Generali
- Profil → Settings → Access Tokens
- Créez un nouveau token avec :
- Name :
VS Code zDevOps
- Expiration : 1 an
- Scopes :
api
, read_repository
, write_repository
- Copiez le token (commençant par
glpat-
)
🛠️ Fonctionnalités
📂 zOpen - Ouverture de projet
Commande : zDevOps: zOpen
Workflow multi-étapes :
- Sélection du client (GFA, GVIE, EA, GPROX)
- Choix du projet mainframe
- Sélection de la branche (existante ou nouvelle)
- Clone automatique + ouverture VS Code
Fonctionnalités avancées :
- Gestion automatique des dépendances (DEP_PANVALET)
- Création de workspace structuré
- Support branches de développement
💾 zSave - Sauvegarde intelligente
Commande : zDevOps: zSave
Pipeline automatisé :
git add . → git commit -m "message" → git push
Sécurisations :
- Validation message commit non-vide
- Gestion d'erreurs réseau et authentification
- Feedback temps réel dans l'Output Channel
🚀 zDeploy - Déploiement multi-environnements
Commandes disponibles :
zDevOps: zDeploy to V
- Validation
zDevOps: zDeploy to F
- Formation
zDevOps: zDeploy to M
- Migration (Production)
Processus sécurisé :
- Vérification des branches autorisées
- Création automatique de Merge Request
- Workflow d'approbation intégré
Restrictions :
- Branches V, P, F, R, M protégées contre le merge
- Validation titres de Merge Request
📊 zStatus - Suivi multi-branches
Commandes :
zDevOps: zStatus
- Fichier actuel (branches principales)
zDevOps: zStatus All
- Fichier actuel (toutes branches)
Tableau de comparaison :
|branche |commit |auteur |date |
|------------|---------|--------------|----------------------|
|ma_feature |a1b2c3d4 |Jean Dupont |2025-08-20T10:30:00Z |
|V |e5f6g7h8 |Marie Martin |2025-08-19T14:20:00Z |
|F |x9y8z7w6 |Paul Bernard |2025-08-18T16:45:00Z |
🔄 zDelta - Comparaison de fichiers entre branches
Commande : zDevOps: zDelta
✨ Fonctionnalités principales
- Comparaison visuelle interactive entre deux branches GitLab
- Sélection de branches via interface QuickPick avec informations détaillées
- Récupération parallèle des contenus via API GitLab pour optimiser les performances
- Ouverture automatique de l'éditeur diff VS Code
- Gestion robuste des fichiers inexistants dans certaines branches
- Feedback temps réel avec métriques et progress comme les autres fonctions
🎯 Workflow d'utilisation
- Prérequis : Avoir un fichier ouvert dans l'éditeur VS Code
- Lancement :
Ctrl+Shift+P
→ zDevOps: zDelta
- Sélection branche 1 : Choisir la première branche à comparer
- Sélection branche 2 : Choisir la seconde branche (liste filtrée)
- Comparaison : Analyse automatique et ouverture du diff visuel
📊 Interface de sortie
🚀 === zDelta - Comparaison de Versions ===
📂 Projet : MonApplication
📄 Fichier analysé : src/main.cobol
🔍 Recherche du projet GitLab...
📋 Récupération des branches disponibles...
🔄 Comparaison : feature/auth ↔ develop
📥 Récupération des contenus des fichiers...
✅ Contenu récupéré pour feature/auth (145 lignes)
✅ Contenu récupéré pour develop (132 lignes)
🔍 === ANALYSE DES DIFFÉRENCES ===
📊 feature/auth: 145 lignes
📊 develop: 132 lignes
📊 Différence: 13 lignes
📊 Lignes différentes: 27/145
🎉 === zDelta terminé avec succès ===
⏱️ Durée totale : 1.847ms
🎨 Interface de sélection
┌─ zDelta - Première branche ──────────────────────┐
│ > master Dernier commit: abc1234 │
│ develop Dernier commit: def5678 │
│ feature/auth Dernier commit: ghi9012 │
│ hotfix/bug-123 Dernier commit: jkl3456 │
└───────────────────────────────────────────────────┘
🔬 Cas d'usage détaillés
1. Développement de features
- Comparer la branche de développement avec master
- Examiner les modifications avant une merge request
- Vérifier les conflits potentiels
2. Debug et maintenance
- Comparer les versions de production avec développement
- Analyser les régressions entre versions
- Tracer l'évolution d'un fichier critique
3. Code review
- Validation visuelle avant approbation de merge request
- Analyse d'impact des modifications sur le code COBOL/JCL
🛡️ Gestion des cas spéciaux
Fichier inexistant dans une branche :
⚠️ Le fichier n'existe que dans develop
📊 Fichier créé : 145 lignes
Fichier supprimé :
⚠️ Le fichier n'existe que dans feature/auth
📊 Fichier supprimé : 132 lignes
Fichiers identiques :
✅ Les fichiers sont identiques dans les deux branches
- Appels API parallèles : Récupération simultanée des deux versions
- Timeout intelligent : Protection contre les API lentes (15s par requête)
- Gestion d'erreurs complète : Continue même si un fichier n'existe que dans une branche
- Cache potentiel : Réutilisation possible des requêtes API récentes
- Logs détaillés : Debugging facilité avec masquage des tokens de sécurité
🔧 Spécifications techniques
- API utilisées :
GET /projects/:id/repository/branches
- Liste des branches
GET /projects/:id/repository/files/:path
- Contenu des fichiers
- Formats supportés : Tous les formats supportés par GitLab
- Décodage : Base64 automatique avec encodage UTF-8
- Limites : Taille de fichier limitée par l'API GitLab (1MB), maximum 100 branches
- Intégration VS Code : Utilise l'éditeur diff natif avec syntax highlighting
📖 Guide d'utilisation
🌟 Workflow développeur complet
1️⃣ Initialisation du projet
Ctrl+Shift+P → "zOpen"
├── Sélectionner client : GFA
├── Choisir projet : MON_PROJET_COBOL
├── Branche : créer "feature/nouvelle-fonction"
└── ✅ Projet ouvert dans VS Code
2️⃣ Développement
📝 Modifier fichiers COBOL/JCL
📁 Fichiers suivis automatiquement
🔍 Syntax highlighting mainframe
3️⃣ Sauvegarde
Ctrl+Shift+P → "zSave"
├── Message : "Ajout nouvelle fonction calcul"
├── ✅ git add . (automatique)
├── ✅ git commit -m "..." (automatique)
└── ✅ git push (automatique)
4️⃣ Déploiement
📋 Tests locaux terminés
↓
Ctrl+Shift+P → "zDeploy to V"
├── Titre MR : "Déploiement fonction calcul en validation"
├── ✅ Merge Request créée
└── 👥 En attente approbation équipe
🔄 Environnements et workflow
graph LR
DEV[Branche Dev] --> V[Validation]
V --> F[Formation]
F --> M[Production]
DEV -.-> |zSave| DEV
DEV --> |zDeploy V| V
V --> |zDeploy F| F
F --> |zDeploy M| M
🚨 Résolution des problèmes
❌ Problèmes d'authentification
Erreur : "Échec de l'authentification GitLab"
Solutions :
- Vérifiez le token dans les paramètres VS Code
- Régénérez un nouveau token si expiré
- Vérifiez les scopes :
api
, read_repository
, write_repository
- Testez l'accès : https://gitlab.groupe.generali.fr/
❌ Problèmes de certificats SSL
Erreur : "Certificate verify failed"
Solutions :
- Vérifiez le certificat :
C:\Users\[username]\generali_ca\ca.crt
- Réinstallez le certificat CA Generali
- Contactez l'équipe infrastructure si persistant
❌ Problèmes de workspace
Erreur : "Le chemin du workspace n'existe pas"
Solutions :
- Créez le répertoire manuellement :
C:\dev\mainframe
- Vérifiez les permissions d'écriture
- Utilisez un chemin sans espaces ni caractères spéciaux
❌ Problèmes de branches
Erreur : "Déploiement non autorisé"
Solutions :
- Vérifiez la branche courante (ne doit pas être V,P,F,R,M)
- Créez une branche de développement depuis P
- Respectez la convention de nommage :
feature/nom-fonction
❌ Problèmes de réseau
Erreur : "Network timeout"
ou "Connection refused"
Solutions :
- Vérifiez la connectivité :
ping gitlab.groupe.generali.fr
- Contrôlez les proxy/firewall d'entreprise
- Testez depuis un autre réseau si possible
- Contactez l'équipe réseau Generali
🔧 Configuration avancée
Variables d'environnement
# Optionnel : Configuration proxy
HTTP_PROXY=http://proxy.generali.fr:8080
HTTPS_PROXY=http://proxy.generali.fr:8080
NO_PROXY=localhost,127.0.0.1,gitlab.groupe.generali.fr
Paramètres VS Code workspace
{
"files.associations": {
"*.cbl": "cobol",
"*.cob": "cobol",
"*.jcl": "jcl"
},
"git.confirmSync": false,
"git.autofetch": true
}
🏢 Équipe de développement
🐛 Signaler un problème
- Consultez cette documentation en premier
- Vérifiez les logs dans l'Output Channel "zDevOps"
- Créez une issue sur GitLab avec :
- Description du problème
- Étapes de reproduction
- Logs d'erreur complets
- Version VS Code et extension
📝 Demandes d'évolution
- GitLab Issues : Nouvelles fonctionnalités
- Merge Requests : Contributions code acceptées
- Discussions : Retours d'expérience
📋 Notes de version
v0.0.9 (Actuelle)
- ✅ Support multi-clients (GFA, GVIE, EA, GPROX)
- ✅ Interface multi-étapes intuitive
- ✅ Gestion automatique DEP_PANVALET
- ✅ Déploiement multi-environnements
- ✅ Suivi commits multi-branches
Prochaines versions
- 🚀 Support authentification SSO
- 🚀 Interface graphique améliorée
- 🚀 Intégration outils de build mainframe
- 🚀 Templates de projets prédéfinis
📱 Extension développée avec ❤️ par l'équipe DevOps Generali France