Symfony2 - Jobeet - L'usine logicielle

1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)
Submit to DeliciousSubmit to DiggSubmit to FacebookSubmit to Google PlusSubmit to StumbleuponSubmit to TechnoratiSubmit to TwitterSubmit to LinkedIn

PHPCI

Introduction

L’intégration continue est nécessaire sur les projets que l’on peut avoir à mener mais la mise en place avec des systèmes comme Jenkins peut être longue et compliquée. Donc nous allons dans un premier temps utiliser PHPCI.

PHPCI (https://www.phptesting.org/) est un outil gratuit et open source d'intégration continue spécialement conçu pour PHP. 

PHPCI comprend des plugins d'intégration pour :

  • Atoum
  • Behat
  • Campfire
  • Codeception
  • Composer
  • Email
  • Grunt
  • IRC
  • PHP Lint
  • MySQL
  • PDepend
  • PostgreSQL
  • PHP Code Sniffer
  • PHP Copy/Paste Detector
  • PHP Spec
  • PHP Unit
  • Shell Commands
  • Tar / Zip

Pourquoi PHPCI ?

Pourquoi utiliser PHPCI par rapport à une autre solution de CI alternative ?

127-symfony2-jobeet-l-usine-logicielle-pourquoi-PHPCI

Installer PHPCI

su
cd /var/www

# Cloner le projet
git clone https://github.com/Block8/PHPCI.git
 
# Renommer le répertoire PHPCI
mv PHPCI phpci
 
# Aller dans le répertoire phpci
cd phpci
 
# Installer php5-mcrypt
apt-get install php5-mcrypt

Installer (PHP - Installation de Composer) et utliliser la commande composer ci-dessous :

composer install

Créer la base de données phpci :

mysql -u root -p
CREATE DATABASE phpci;
exit

Pour exécuter le script de configuration, utilisez la commande suivante :

./console phpci:install

 Cela va démarrer l'assistant de configuration et vous demander quelques informations, par exemple la configuration de votre base de données. Suivez l'assistant d'installation :

******************
 Welcome to PHPCI
******************

Checking requirements... OK

Please answer the following questions:
-------------------------------------

Please enter your MySQL host [localhost]: localhost
Please enter your database name [phpci]: phpci
Please enter your database username [phpci]: root
Please enter your database password: 

Your PHPCI URL ("http://phpci.local" for example): http://phpci.local
Setting up your database... OK
Your email address: votre_email 
Enter your desired admin password: 
Enter your name: Jean-François
User account created!

Configuration du virtual host et des règles de réécriture

Vous devez configurer votre virtual host de sorte que le domaine que vous voulez que le système soit accessible pointe vers le dossier public de votre installation PHPCI (exemple :  http://phpci.local)

 Créer et éditer le fichier /etc/apache2/sites-available/phpci.local :

vi /etc/apache2/sites-available/phpci.local

Puis insérer le contenu ci-dessous :

<VirtualHost *:80>
    ServerName phpci.local
    DocumentRoot /var/www/phpci/public
    DirectoryIndex index.php
    ErrorLog /var/log/apache2/phpci-error.log
    CustomLog /var/log/apache2/phpci-access.log combined
    <Directory "/var/www/phpci/public">
        AllowOverride All
        Allow from All
     </Directory>
</VirtualHost>

 Ajouter phpci.local au fichier /etc/hosts :

echo "127.0.0.1 phpci.local" >> /etc/hosts

Puis exécuter les commande ci-dessous :

a2ensite phpci.local
service apache2 restart

Si vous utilisez le serveur web Apache, vous devez avoir activé mod_rewrite. Si oui, allez dans le répertoire public PHPCI et créer le fichier .htaccess :

vi /var/www/.htaccess

Avec le contenu suivant :

<IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /var/www/phpci/public
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]
</IfModule>

Lancement de PHPCI

Vous pouvez maintenant lancer PHPCI : http://phpci.local

Connectez-vous à l'aide de votre mai et mot de passe.

127-symfony2-jobeet-l-usine-logicielle-PHPCI-connexion

Configurer PHPCI

Premièrement exécutez la commande ci-dessous :

chmod 777 -R ../phpci/

Puis, allez dans "Admin > Manage Plugins" : http://phpci.local/plugin

 Installer tous les plugins sugérés "Suggested Packages" :

127-symfony2-jobeet-l-usine-logicielle-PHPCI-plugin-manager

Puis exécutez la commande ci-dessous :

composer update

Ajouter un projet

En cliquant sur le bouton "Add Project", vous pouvez créer un nouveau projet. Vous devez remplir un formulaire simple, qui indique où se trouve le code. Vous pouvez choisir entre différents types de services comme Github et Bitbucket, mais également vos propres URL distantes ou locales.

127-symfony2-jobeet-l-usine-logicielle-PHPCI-add-project

Si vous ne disposez pas d'un fichier de configuration phpci.yml dans votre dépôt, vous devrez le fournir lors de la création du projet "PHPCI build config for this project (if you cannot a phpci.yml file in the project remotes)". Dans sa configuration, vous définissez comment le projet doit être mis en place, quels sont les outils que vous voulez exécuter et comment finaliser la construction.

Notre fichier phpci.yml que nous pouvons mettre à la racine du projet ou dans notre cas dans le champs "PHPCI build config for this project (if you cannot a phpci.yml file in the project remotes)" lors de l'ajout du projet :

build_settings:
    ignore:
        - "vendor"
        - "app"
 
setup:
    composer:
        action: "install"
 
test:
    php_unit:
        config:
            - "app/phpunit.xml.dist"
        coverage: "coverage"
        args: "--stderr"
    php_mess_detector:
        allow_failures: true
    php_code_sniffer:
        standard: "PSR2"
    php_cpd:
        allow_failures: true
    php_docblock_checker:
        allowed_warnings: 10
        skip_classes: true
    php_loc:
        directory: "src"

Après avoir créé le projet, vous devez vous assurer que PHPCI est capable de récupérer le projet Github. Dans ce cas, ajoutez la clé SSH que PHPCI a fourni à mon compte Github. Lorsque vous avez terminé, vous pouvez cliquer sur le bouton Générer pour commencer à construire le projet.

 

Submit to DeliciousSubmit to DiggSubmit to FacebookSubmit to Google PlusSubmit to StumbleuponSubmit to TechnoratiSubmit to TwitterSubmit to LinkedIn