38
Travis-CI Continuous integration in the cloud for PHP

Travis-CI - Continuos integration in the cloud for PHP

Embed Size (px)

Citation preview

Page 1: Travis-CI - Continuos integration in the cloud for PHP

Travis-CIContinuous integration in the cloud for PHP

Page 2: Travis-CI - Continuos integration in the cloud for PHP

Federico Lozada Mosto

@mostofreddy

@federicolozadamosto

Page 3: Travis-CI - Continuos integration in the cloud for PHP

Who makes tests?

Who makes builds?

Page 4: Travis-CI - Continuos integration in the cloud for PHP

Who uses CI server?

Page 5: Travis-CI - Continuos integration in the cloud for PHP

Who uses multiple environments?

Page 6: Travis-CI - Continuos integration in the cloud for PHP

Hi, I’m Travis CI, a hosted continuous integration service

for open-source and private projects.

Page 7: Travis-CI - Continuos integration in the cloud for PHP

What?

Page 8: Travis-CI - Continuos integration in the cloud for PHP

Continous integration

Open source

Distributed

Page 9: Travis-CI - Continuos integration in the cloud for PHP

Android C/C++ Clojure Erlang Go Groovy

Haskell Java Javascript NodeJS Objective-C

PERL PHP Phyton Ruby Scala

Page 10: Travis-CI - Continuos integration in the cloud for PHP

Services:

MySQL PostgreSQL MongoDB CouchDB

Redis Riak RabbitMQ Memcached

Cassandra Neo4j Elasticsearch

Krestel SQLite3 ZeroMQ

Page 11: Travis-CI - Continuos integration in the cloud for PHP

Notifications:

Email IRC Campfire Flowdock

HipChat Sqwiggle Slack Webhook

Page 12: Travis-CI - Continuos integration in the cloud for PHP

Deploy: Appfog Cloud66 Heroku Modulus Nodejitsu

OpenShift cloudControl CloudFoundryRubyGems AWS OpsWorks PyPI

Divshot.io Rackspace Cloud FilesNpm S3 Ninefold Engine Yard

Github Releases Custom deployment

Page 13: Travis-CI - Continuos integration in the cloud for PHP

How?

Page 14: Travis-CI - Continuos integration in the cloud for PHP

login

How does it work?

Page 15: Travis-CI - Continuos integration in the cloud for PHP

service hook

How does it work?

Page 16: Travis-CI - Continuos integration in the cloud for PHP

gi add .travis.ymlgit commit .travis.yml

git push ….

How does it work?

Page 17: Travis-CI - Continuos integration in the cloud for PHP

gi add .git commit .

git push ….

service hook

run tests / builds

fresh environments

How does it work?

Page 18: Travis-CI - Continuos integration in the cloud for PHP

.travis.yml

Page 19: Travis-CI - Continuos integration in the cloud for PHP

.travis.yml

Page 20: Travis-CI - Continuos integration in the cloud for PHP

.travis.yml

Page 21: Travis-CI - Continuos integration in the cloud for PHP

Build lifecycle

1. before_install

2. install

3. before_script

4. script

5. after_script

6. after_success or after_failure

Page 22: Travis-CI - Continuos integration in the cloud for PHP

Build status

Page 23: Travis-CI - Continuos integration in the cloud for PHP

Why?

Page 24: Travis-CI - Continuos integration in the cloud for PHP

The end goal is...

Page 25: Travis-CI - Continuos integration in the cloud for PHP

with less effort

Higher-quality code

and...

Page 26: Travis-CI - Continuos integration in the cloud for PHP

#HAPPYDAY

Page 27: Travis-CI - Continuos integration in the cloud for PHP

Extras

Page 28: Travis-CI - Continuos integration in the cloud for PHP

xdebugxmlxmlreaderXmlrpcxmlwriterxslzipzlib

[Zend Modules]Xdebug

bcmathbz2Corectypecurldatedomeregexiffileinfofilterftpgdgettexthashiconv

intljsonlibxmlmbstringmcryptmysqlmysqlimysqlndopensslpcntlpcrePDOpdo_mysqlpdo_pgsqlpdo_sqlitepgsql

PharposixreadlineReflectionsessionshmopSimpleXMLsoapsocketsSPLsqlite3standardsysvsemsysvshmtidytokenizer

VM - PHP

Page 29: Travis-CI - Continuos integration in the cloud for PHP

email recipients: - [email protected] on_success: [always|never|change] # default: change on_failure: [always|never|change] # default: always

irc: channels: - "chat.freenode.net#my-channel" on_success: [always|never|change] # default: always on_failure: [always|never|change] # default: always

notifications

Page 30: Travis-CI - Continuos integration in the cloud for PHP

Apc

Memcache

Memcached

Mongo

Amqp

Zmq

Xdebug

Redis

PHP extensions

before_script - echo "extension = <extension>.so" >>

~/.phpenv/versions/$(phpenv version-name)/etc/php.ini

Page 31: Travis-CI - Continuos integration in the cloud for PHP

PHP extensions

before_script - pear install <extension> - echo "extension = <extension>.so" >>

~/.phpenv/versions/$(phpenv version-name)/etc/php.ini - php -m

Page 32: Travis-CI - Continuos integration in the cloud for PHP

PHP extensions

Page 33: Travis-CI - Continuos integration in the cloud for PHP

http://yaml.travis-ci.org/

Travis lint

Page 34: Travis-CI - Continuos integration in the cloud for PHP

apt-get install !!!

before_script: - curl http://repo.varnish-cache.org/debian/GPG-key.txt | \

sudo apt-key add - - echo "deb http://repo.varnish-cache.org/ubuntu/ precise varnish-3.0" | \

sudo tee -a /etc/apt/sources.list - sudo apt-get update -qq - sudo apt-get install varnish

Page 35: Travis-CI - Continuos integration in the cloud for PHP

services

services: - mongodb - couchdb - memcached

env: - DB=mysql

before_script: - mongo mydb_test --eval 'db.addUser("travis", "test");' - if [[ "$DB" == "mysql" ]]; then mysql -e "create database IF NOT EXISTS hello_world_test;" -uroot; fi

Page 36: Travis-CI - Continuos integration in the cloud for PHP

How to skip a build

[ci skip]

Page 37: Travis-CI - Continuos integration in the cloud for PHP
Page 38: Travis-CI - Continuos integration in the cloud for PHP

Federico Lozada Mosto

@mostofreddy

@federicolozadamosto

Thanks!