2. What's GitBucket?
● Open source Git server
○ https://github.com/gitbucket/gitbucket
● Setup is super easy
$ java -jar gitbucket.war
3. Motivation
● Security policy in my previous company
● GitHub Enterprise was too expensive
● GitLab installation was too complex
● I must make it by myself!
● with Scala!!
7. Features
● Public and private repository hosting
● Dashboard includes activity timeline
● Repository viewer which supports online file editing
● Markdown available Wiki
● Issues and pull requests
● Comment on source code
● Notification via E-mail
● User and group management
● LDAP integration
● Gravator integration
● GitHub compatible Web API
● Plugin system
● External database support (MySQL and PostgreSQL)
8. Current status (Dec 2017)
● 6727 stars
● 124 contributors
● 473 gitter users
● 72 releases (Monthly release since 2013)
9. Some of existing GitBucket plugins
Name Description
Gist plugin Add code snippet Gist-like functionality to GitBucket
Asciidoc plugin Add AsciiDoc support to GitBucket
Bugspots plugin Apply Google Bugspots to code in GitBucket repositories
Pages plugin Publish repository contents as web sites
Network plugin Add the commit graph view to GitBucket
Emoji plugin Emoji support in Wiki or Issues
RST plugin Add ReStructuredText support to GitBucket
Explorer plugin Add the tree view for repositories on GitBucket
PlantUML plugin Render PlantUML files on GitBucket
Jupyter plugin Render Jupyter or IPython files on GitBucket
CI Plugin Add simple CI/CD functionality to GitBucket
Maven repository plugin Host in-house maven repositories on GitBucket
10. Demo site is available on Heroku!
http://gitbucket.herokuapp.com/
11. Technology stack
Git Repository
RDBMS
(H2 / MySQL / PostgreSQL)
JGit
Slick
(blocking-slick)
Apache MINA SSHD
Jetty
GitServlet (JGit) Scalatra / Twirl
Git Client Web Browser
SSH HTTP
12. Core technologies are Java
● Jetty
○ Embedded to make an executable war file
● H2
○ Embedded as the default database
● JGit
○ Used for Git operations
● Apache MINA SSHD
○ Embedded to provide SSH git access
13. Why GitBucket use Scalatra?
● Scalatra is based on traditional Servlet
○ Not so high performance
○ Not super scalable
● Why not use Play? or Finagle?
○ Because to use JGitServlet (HTTP git server)
○ Scalatra can integrate existing Servlet based
resources naturally
15. Key is interoperability with Scala and Java
● Getting benefits from fundamental Java
libraries or middlewares
● Servlet based frameworks (e.g. Scalatra)
makes possible to use existing Servlet
based resources with Scala