lunes, 11 de abril de 2016

CI con Travis y Github

Travis es un servicio online que permite que al hacer push en un repositorio Github se le haga CI (Integración Contínua), que cree un ambiente para correr las pruebas y luego se ejecuten ciertas acciones según se pase o no estas pruebas.
  • Tener una cuenta en github (https://github.com/akobashikawa)
  • Tener una cuenta en travis
  • Autorizar a travis para conectarse a github
  • En travis, entrar al profile (https://travis-ci.org/profile/akobashikawa). Mostrará una lista de nuestros repositorios (que se puede refrescar manualmente si es necesario) con un check para indicar si queremos configurarlo para CI.

Idea para una prueba simple

  • Creo el repo dev https://github.com/akobashikawa/travis-test-dev
  • Creo el repo prod https://github.com/akobashikawa/travis-test-prod
  • Quiero que al hacer push en el repo dev, se le ejecute la CI. Si pasa los test, se haga un push automáticamente a prod.

.travis.yml

Coloco este archivo en el repo dev para indicar a travis las acciones a realizar.

language: php
php:
  - 5.5
sudo: required
dist: trusty
before_install: echo 'before install'
before_script:
  - echo 'before script'
  - pwd
  - ls -a
  - git status
script: phpunit Test.php
after_success:
  - echo 'after success'
  - git remote add production https://{GH_REF}
  - git remote -v
  - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master > /dev/null 2>&1
after_script: echo 'after script'

Test.php

Es un test trivial.

class Test extends PHPUnit_Framework_TestCase
{
 public function testOnePlusOne() {
  $this->assertEquals(1+1, 2);
   }
}

Credenciales

Para poder hacer el push se necesita un password, o una clave personal que se puede generar en github (https://github.com/settings/tokens). Declaro esa clave en los settings de travis como GH_TOKEN y en GH_REF la ubicación del repo dev, para más comodidad.

Referencias