RootsLabs

More than a tool ! GitHub Google+ LinkedIn RSS

Publier automatiquement une PHPDoc sur GitHub avec Travis CI

Progi1984 - Commentaires (3)

Votre projet PHP utilise Travis CI pour l’intégration continue. Vous souhaitez générer une documentation PHP via PHPDoc et la fournir à vos utilisateurs. Et si on utilisait les GitHub Pages pour vous héberger ? Dans cet article, je vais vous montrer comment utiliser Travis CI pour générer la documentation avec PHPDoc et la pousser vers les pages GitHub.

Travis

Pré-Requis

Tout d’abord, certains pré-requis sont indispensables :

Token d’acces et .travis.yml

Après avoir récupéré votre token d’accès, on va le crypter pour que Travis puisse l’utiliser :

[user@computer dirProject]$ travis encrypt GH_TOKEN=<votre_token_dacces>
Please add the following to your .travis.yml file:

  secure: "<votre token crypté>"

Pro Tip: You can add it automatically by running with --add.

Après avoir récupéré ce token crypté, on va l’ajouter au fichier .travis.yml où l’on va mettre juste après la section lié aux versions de PHP :

env:
  global:
  - secure: "<votre token crypté>"

PHPDoc et .travis.yml

Maintenant que notre token d’accès est crypté, on va installer PHPDoc. Pour cela, on va utiliser la section du composer.json nommé « require-dev » pour l’installer :

"require-dev": {
    "phpdocumentor/phpdocumentor":"2.*"
}

Après avoir avoir géré l’installation de PHPDocumentor, on va modifier le fichier .travis.yml pour gérer la génération :

before_script:
  ## Composer : Mise à jour et Installation des pre-requis
  - composer selfupdate --quiet
  - composer install -n --prefer-source --dev
  ## PHPDocumentor : Dossier de sortie
  - mkdir -p build/docs

script:
  ## PHPDocumentor : Generation de la documentation dans le dossier de sortie
  - vendor/bin/phpdoc.php -d ./src -t ./build/docs

after_script:
 ## PHPDocumentor : Upload vers les GitHub Pages
 - bash .travis_shell_after_success.sh

Pour la partie after_script, on utilise un script maison qui récupère le projet, nettoie et copie la documentation avant de l’envoyer vers GitHub.

#!/bin/bash

#echo "--DEBUG--"
#echo "TRAVIS_REPO_SLUG: $TRAVIS_REPO_SLUG"
#echo "TRAVIS_PHP_VERSION: $TRAVIS_PHP_VERSION"
#echo "TRAVIS_PULL_REQUEST: $TRAVIS_PULL_REQUEST"

if [ "$TRAVIS_REPO_SLUG" == "<Votre depot>" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_PHP_VERSION" == "<Version de PHP pour la generation>" ]; then

  echo -e "Publishing PHPDoc...\n"
  ## Copie de la documentation generee dans le $HOME
  cp -R build/docs $HOME/docs-latest

  cd $HOME
  ## Initialisation et recuperation de la branche gh-pages du depot Git
  git config --global user.email "travis@travis-ci.org"
  git config --global user.name "travis-ci"
  git clone --quiet --branch=gh-pages https://${GH_TOKEN}@github.com/<Votre depot> gh-pages > /dev/null

  cd gh-pages
  
  ## Suppression de l'ancienne version
  git rm -rf ./docs/$TRAVIS_BRANCH

  ## Création des dossiers
  mkdir docs
  cd docs
  mkdir $TRAVIS_BRANCH

  ## Copie de la nouvelle version
  cp -Rf $HOME/docs-latest/* ./$TRAVIS_BRANCH/

  ## On ajoute tout
  git add -f .
  ## On commit
  git commit -m "PHPDocumentor (Travis Build : $TRAVIS_BUILD_NUMBER  - Branch : $TRAVIS_BRANCH)"
  ## On push
  git push -fq origin gh-pages > /dev/null
  ## Et c est en ligne !
  echo -e "Published PHPDoc to gh-pages.\n"

fi

Conclusion

Et voilà, désormais, on aura un dossier de documentation pour chaque branche du projet. Ainsi la documentation de la branche develop n’écrasera pas la documentation de la branche master à chaque commit, et un développeur saura facilement s’y retrouver. Maintenant que l’on sait pusher des fichiers sur GitHub depuis Travis-CI, cela ouvre de nouvelles possibilités : rapport de couverture de code en HTML, script qui convertit du Markdown en HTML avant de le pousser, etc…

Commentaires

1. Laurent, le 21 août 2014 à 22:04

Bonjour,
As-tu déjà rencontré un problème avec GraphViz ?
J’ai ce message d’erreur :
Transform analyzed project into artifacts .. Unable to find the `dot` command of the GraphViz package. Is GraphViz correctly installed and present in your path? 8.388s
J’ai pourtant le dossier GraphViz dans mon dossier phpDocumentor de mon Vendor de Symfony2…
Laurent

2. Progi1984, le 21 août 2014 à 22:37

@Laurent : Je pense que tu dois être sous Windows. As tu ajouté le répertoire où est stockée l’exécutable dot à la variable d’environnement PATH ?

3. Использования Travis CI для генерации документации, le 21 juillet 2015 à 09:09

[…] P.S. При написании данного руководства использовались материалы из статьи Publier automatiquement une PHPDoc sur GitHub avec Travis CI […]

Ajouter un commentaire

Commentaire :