MyECP Development let s get to it!
Plan 1.Git et Gitlab 2.Installation du projet 3.Fonctionnement (workflow) 4.Techno & architecture du code
Git et Gitlab In Git we trust
Git : le travail à plusieurs Git est un gestionnaire de version. Installation : Pour Windows : http://git-scm.com/download/win, puis lancer Git Bash Pour Linux : sudo apt-get install git Configuration (dans votre terminal ou Git Bash): git config --global user.email "email@student.ecp.fr" git config --global user.name "Votre Nom" git config --global push.default simple git config --global color.ui true
Gitlab : késaco? https://gitlab.my.ecp.fr Plein de fonctionnalités : git, wiki, issues tracker, Le code de MyECP est hébergé dessus Pour pouvoir développer, vous devez être rajoutés en tant que développeur sur le projet MyECP/MyECP
Gitlab : Configuration Pour pouvoir développer avec Gitlab, il faut créer une clef SSH sur son ordi mkdir.ssh ssh-keygen t rsa C "adresse@student.ecp.fr" (laisser les paramètres par défaut) Envoyer cette clef sur Gitlab (Profile Settings > SSH Keys > add SSH key) : Windows : notepad.exe.ssh/id_rsa.pub Linux : cat.ssh/id_rsa.pub Copier/coller le résultat dans Gitlab
Importation du code Just izi as ABC! git clone git@gitlab.my.ecp.fr:myecp/myecp.git
Gitlab : bien s'en servir Modification des infos persos La timeline du projet Souriez, vos modifs sont enregistrées Une idée? Un bug? C'est par là Là où on valide le code avant de le déployer
Git : koman sa march lol? Git, c'est surpuissant Mais peut-être un peu ardu à première vue Fort fortuitement, il existe une formation VIA sur Git : http://www.via.ecp.fr/viaform/2013-14/2014%20-%20formation%20git.pdf (faite par des gens biens, m'a-t-on dit)
Installer un environnement de dev Ou «Comment éviter les modifs en prod»
Installation du projet Vagrant : digitalité, agilité, portabilité, uniformité Un dépôt Git propre : MyECP-Provisioning avec toute la conf nécessaire pour la machine virtuelle. 1) Installer Vagrant (et Cygwin sous Windows) 2) Installer VirtualBox [ ] (cf ReadMe de MyECP-provisioning sur Gitlab) cd myecp-provisioning && vagrant up
Pour développer : Des éditeurs cool, multi plateformes et gratuits : Sublime Text & PHPStorm Léger Pour n importe quel langage Modules à installer : Package Control, Twig, Git Cf. http://wasil.org/sublime-text-2- perfect-php-development-set-up Réservé au web Intégration native de Git, Vagrant, shell, déploiement automatique sur la MV (sur Windows) Autocomplétion très performante Modules à installer : PHP Extensions, Symfony2 https://www.jetbrains.com/estore/students/
Architecture du code C koi un projet SF2 lol?
Techno & Architecture du code Symfony2 : Framework PHP POO Interception par web/app{_dev}.php Renvoi à la bonne méthode du bon contrôleur en fonction du routing Affichage de la page par le contrôleur Décomposition en bundles, internes (dans src/) ou externes (librairies, dans vendor/) Configuration dans app/config, liste des bundles chargés dans app/appkernel.php
Structure type d un bundle
Fonctionnement (workflow) Attention, on est des nazis
Les branches git Principe : une nouvelle fonctionnalité/hotfix, une branche git. Exemple : je veux ajouter un salon de discussion sur MyECP. Je pars de la branche master et je crée une nouvelle branche (git checkout -b chatroom) Je code, en commitant régulièrement mon travail (git add <file1> <file2> ; git commit m "Mon message de commit") Envoyer le résultat sur Gitlab. Bien vérifier qu'on est sur la bonne branche! git push origin chatroom Quand la fonctionnalité est prête, créer sur Gitlab une Merge Request sur la branche dev
Le code review Quand la merge request est créée Permet de détecter des erreurs, améliorer la qualité du code Une fois la MR validée, elle est mergée par les autorités compétentes
Déploiement et capifony Avantages de capifony : Digital Une commande à lancer, il fait tout Possibilité de rollback Utilisation, sur son pc perso : installer ruby 1.9.*, puis gem install capifony, puis cap {env} deploy (avant, copier sa clé publique dans /var/www/.ssh/authorized_keys) Environnements : Dev :!dev sur https://dev.my.ecp.fr : test avant mise en prod Preprod :!master sur https://preprod.my.ecp.fr : mise en prod de test (environnement différent, etc.) Production:!master sur https://my.ecp.fr : la vraie mise en prod
Conventions pour MyECP Principes : imiter le code existant (notamment des bundles récents : Info, Oauth, Rooming) ne pas utiliser les méthodes dépreciées (PHPStorm vous prévient) Pour la config, utiliser si possible des annotations, sinon un fichier YAML