18
Apache development with GitHub and Travis CI

Apache development with GitHub and Travis CI

Embed Size (px)

DESCRIPTION

Much of the recent innovation in development tooling has happened around Git-based cloud services like GitHub and Travis CI. While these services are not part of the official Apache infrastructure, it's still possible to use them to complement the tooling available to Apache projects. Based on experience from Apache Jackrabbit, this presentation shows how to leverage such external services while staying true to Apache principles and policies.

Citation preview

Page 1: Apache development with GitHub and Travis CI

Apache developmentwith GitHub and Travis CI

Page 2: Apache development with GitHub and Travis CI

GitHub

“GitHub is the best place to share code with friends, co-workers, classmates, and complete strangers.”https://github.com/about

Page 3: Apache development with GitHub and Travis CI

Travis CI

“Travis CI - Free Hosted Continuous Integration Platform for the Open Source Community”https://travis-ci.org/

Page 4: Apache development with GitHub and Travis CI

The Apache Software Foundation“The mission of the Apache Software Foundation (ASF) is to provide software for the public good. We do this by providing services and support for many for like-minded software project communities of individuals.”http://www.apache.org/foundation/

Page 5: Apache development with GitHub and Travis CI

External services• Many free external services available for Apache projects

• SVNsearch, FishEye 6, …• MarkMail, GMane, Nabble, …• IRCnet, Google Hangouts, Skype, …• Twitter, Facebook, Stack Overflow, Ohloh, …

• Complement and extend the services provided by the ASF• Remember:

• Canonical source and releases on Apache hardware• Important decisions on the Apache mailing lists or issue trackers• Avoid splintering the community

Page 6: Apache development with GitHub and Travis CI

GitHub

Page 7: Apache development with GitHub and Travis CI

Git at Apache• Writable Git repositories as an alternative to Subversion

• https://git-wip-us.apache.org/• Read-only Git mirrors as a complement to Subversion

• http://git.apache.org/• git svn dcommit allows committing to svn from a git clone

• Both types of repositories are mirrored to GitHub• https://github.com/apache

• GitHub supports also Subversion checkouts• https://help.github.com/articles/support-for-subversion-clients

Page 8: Apache development with GitHub and Travis CI

Apache at GitHub

Page 9: Apache development with GitHub and Travis CI

Committers team

Want to link your GitHub accountto the Apache organization?(Does not grant any extrapermissions; just a way todisplay affiliation.)

See instructions athttps://svn.apache.org/repos/private/committers/docs/github_team.txt

Page 10: Apache development with GitHub and Travis CI

Jackrabbit Oak at GitHub

Page 11: Apache development with GitHub and Travis CI

Personal fork

Page 12: Apache development with GitHub and Travis CI

Temporary branches

Page 13: Apache development with GitHub and Travis CI

Setting up git-svn$ git clone https://github.com/apache/jackrabbit-oak.git$ cd jackrabbit-oak$ git remote add fork https://github.com/jukka/jackrabbit-oak.git$ git svn init --prefix=origin/ -s \ https://svn.apache.org/repos/asf/jackrabbit/oak$ git svn rebase

Before first use:$ git config --global user.name ‘Jukka Zitting’$ git config --global user.email ‘[email protected]’$ curl http://git.apache.org/authors.txt > $HOME/.gitauthors$ git config --global svn.authorsfile $HOME/.gitauthors

Page 14: Apache development with GitHub and Travis CI

Travis CI

Page 15: Apache development with GitHub and Travis CI

Setting up a Travis build• Requirements

• A .travis.yml configuration file• Travis web hook enabled in the GitHub mirror

• Once in place, Travis will automatically• detect when there are new changes • start a clean virtual machine based on your configuration• runs any configured setup tasks• runs the configured integration build• records the result of the build and send configured notifications

• Also pull requests will get built!

Page 16: Apache development with GitHub and Travis CI

Limitations

• Build time currently limited to 50 minutes• parts of a matrix build can each have their own time limit• consider the other users of the system

• Limited network access• can download dependencies from big repositories like

Maven• only few options for deploying successful build artifacts

• Tricky email notifications• VERP makes them incompatible with Apache mailing lists

Page 17: Apache development with GitHub and Travis CI

Example configuration# see http://docs.travis-ci.com/user/build-configuration/

install: true

script: mvn verify -Ppedantic,integrationTesting

language: java

jdk:

- oraclejdk7

services: mongodb

notifications:

email: false

webhooks:

urls: http://zitting.name/travis/notify

on_success: change

on_failure: change

Page 18: Apache development with GitHub and Travis CI

Questions?