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.