====== Installation de l'environnement de travail ======
===== Prise en main de Git =====
==== Utilisation classique ====
Nous avons d'abord suivi le wiki concernant l'utilisation de Git (réalisé par Andres) afin de récupérer le code source du projet (fork et clone) sur nos machines. \\
https://wiki.picasoft.net/doku.php?id=txs:framadate-p18:contribuer-a-framadate \\
Et si jamais le projet que l'on vient de //forker// comporte des erreurs qui seront par la suite corrigées ? \\
Il est possible de synchroniser les dépôts "après coup", le tutoriel suivant est très bien fait et a parfaitement fonctionné dans notre cas : http://blog.fethica.com/fr/synchroniser-un-fork-avec-son-depot-dorigine-sur-github/
==== Processus d'intégration continue ====
Dans le cadre du projet //Framadate//, un processus de test du code a été mis en place via l'outil intégré à Gitlab : l'intégration continue. L'idée est simple : les modifications apportées au code sont systématiquement et automatiquement testées pour vérifier que le code est en accord avec des règles pré-établies.\\
Les étapes de test sont décrites dans le fichier https://framagit.org/JMarlow/framadate/blob/master/.gitlab-ci.yml. Ainsi, chaque commit lance l'exécution d'un test, si le test n'est pas passé avec succès, un mail est envoyé au développeur afin de l'avertir. Le développeur peut également consulter les résultats des différents tests sur //Framagit// (ex : https://framagit.org/JMarlow/framadate/-/jobs) et avoir accès aux logs de chacun (ex : https://framagit.org/JMarlow/framadate/-/jobs/117983).\\
//D'accord, mais comment je fais pour rendre mon code propre et passer les tests de l'intégration continue ?//
Facile, quelques lignes de commandes dans votre répertoire ''/framadate'' suffisent à rendre automatiquement le code valide :
sudo apt install composer
sudo apt purge composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
apt-get install php-mbstring php-xml
php vendor/bin/php-cs-fixer fix --verbose
===== Prise en main du Docker =====
Nous avons ensuite suivi le wiki pour l'implémentation du Docker (réalisé par Kyâne) afin de mettre en place facilement notre environnement de travail. \\
https://wiki.picasoft.net/doku.php?id=txs:framadate-p18:developpement \\
===== Problèmes rencontrés =====
Nous avons dû faire face à de nombreuses complications lors de nos installations respectives, ce qui a contribué à l'amélioration des deux wikis précédents. \\ \\
Ces complications nous ont permis de découvrir une petite manipulation intéressante afin d'afficher les erreurs rencontrées par les programmes php : le passage de ''diplay_errors'' à passer de Off à On. Pour se faire, on se place dans le dossier contenant les fichiers ''Dockerfile'' et ''docker-compose.yml'' et on tape les commandes suivantes :\\
docker exec -it framadate /bin/sh
//L'interpréteur sh s'ouvre
# cd etc
# cd php5
# cd apache2
# nano php.ini
//Le fichier php.ini s'ouvre avec nano
//Ctrl+W pour trouver display_errors
//Si display_errors est à Off, on le passe à On
//Ctrl+X pour quitter, Y pour enregistrer, Entrée pour valider
# service apache2 reload
# exit
Pour automatiser cette procédure, il est possible d'ajouter une instruction dans le Dockerfile :\\
RUN sed -i "s|display_errors = Off|display_errors = On |g" /etc/php5/apache2/php.ini
\\
Par ailleurs, et face à des problèmes d'installation dont on n'identifie pas la source (par exemple : incohérence entre la base de données migrée et le code source), il nous a été intéressant de pouvoir facilement repartir de zéro.\\
Pour cela, plusieurs commandes ont pu nous être utiles :
* Effacer tous les conteneurs Docker \\
docker rm -f $(docker ps -a -q)
* Effacer toutes les images Docker \\
docker rmi -f $(docker images -q)
* Effacer les données de la BDD afin de refaire la migration \\
sudo rm -rf ./volumes
\\
(sources : https://davidwalsh.name/docker-remove-all-images-containers)