This document discusses Spring's infrastructure projects. It covers issue tracking with JIRA, building projects with Gradle, continuous integration with Bamboo, code quality metrics from Sonar, artifact hosting with Artifactory, source control on GitHub, and community contributions via code reviews. The presenters were Roy Clarkson and Gunnar Hillert from the Spring team.
3. What is Spring?
Spring Mobile Spring Gemfire
Spring AMQP
Spring for Android
Spring Hadoop
Spring Batch
Spring Framework
Spring Social
Spring .NET Spring Integration
Spring Security
Spring Data
Spring Shell Spring Web Flow
Spring Roo
6
4. Agenda
• Issue Tracking
• Build
• Continuous Integration/Deployment
• Repositories
• Source Control
• Community Contributions
4
12. Building Spring
$ git clone git://github.com/SpringSource/
spring-framework.git
$ cd spring-framework
$ ./gradlew build
12
13. Projects using Gradle
• Spring Framework (since Jan 2012)
• Spring Integration (since Oct 2010)
• Spring AMQP (since Jun 2012)
• Spring for Android (since May 2011)
• Spring Mobile (since Nov 2010)
• Spring Social (since Oct 2010)
• And more …
13
14. Gradle
• Version 1.2 released 2012-09-12
• Gradle Wrapper
• Maven-like defaults
• More concise than Maven
• Scripting capabilities like Ant
• Supports multi-project builds
• Dependency management based on Apache Ivy
• Build scripts written in Groovy
14
15. Common Tasks for Spring Projects
• clean – Deletes the build directory
• build – Assembles and tests this project
• dist – Creates Zip (Jars, Reference, Api Doc, Schema)
• api – Generates aggregated Javadoc API documentation
• reference – Generates HTML and PDF documentation
• install – Install archives artifacts into local .m2 cache
• eclipse – Generates all Eclipse files
• idea – Generates IDEA project files
• sonarAnalyze – Gather Sonar Metrics
15
17. Spring Tool Suite
• Gradle Support since 2.7.0
• Import Gradle projects directly into STS
• static.springsource.org/sts/docs/latest/reference/html/
gradle
17
18. IntelliJ IDEA
• Gradle Support in IntelliJ IDEA 11
• www.jetbrains.com/idea/webhelp/gradle-2.html
• confluence.jetbrains.com/display/IDEADEV/News
18
25. SpringSource Artifactory
• Replaces previous Maven repositories
• GA releases still available in Maven Central
• Unified search
• Put a watch on anything
• License information
• Transitive resolution
• Release process
25
29. More Information
• Spring Repository FAQ
github.com/SpringSource/spring-framework/wiki/
SpringSource-repository-FAQ
• Downloading Spring Artifacts
github.com/SpringSource/spring-framework/wiki/
Downloading-Spring-artifacts
29
31. SpringSource on GitHub
• Spring Integration moved August 2011
• Spring Framework moved December 2011
• Spring Web Flow recently moved
• All major projects now on GitHub
31
32. Benefits of GitHub
• Accessible UI built around Git
• Well known open source code repository
• Code browsing
• Commit history
• Community contributions
• Issue tracking
• Wiki pages
32
34. Fork the Repository
• Navigate to github.com/SpringSource/<project>
• Select the button
• Select your local GitHub account as the destination
34
35. Local Development Environment
$ git clone git@github.com:<username>/<project>.git
$ cd <project>
$ git remote add upstream git@github.com:SpringSource/
<project>.git
$ git fetch --all
$ git remote show
$ git branch -a
35
36. Submitting a Pull Request
• Create a new topic branch based on issue number
$ git checkout -b <project>-123
• Complete your changes
• Push your branch to origin
$ git push origin <project>-123
• Select when you are ready to submit your
code to the project lead for review
36
37. Successful Pull Requests
• Please note that all pull requests must be able to be
cleanly merged with the upstream master’s current state
• Rebase with Master
$ git pull --rebase upstream master
37
39. Code Reviews
• Comment on each commit or on individual lines
• Markdown supported
• Comments trigger notifications (@user notation)
• Pull Requests can be comprised of multiple commits
• Compare code between commits or branches
• Contributors and Committers follow same process!
GitHub Pull Request = Code + Issue + Code Comments
39
42. More Information
• Pro Git: Contributing to a Project
http://git-scm.com/book/ch5-2.html
• Pro Git: Rebasing
http://git-scm.com/book/ch3-6.html
• McCullough and Berglund on Mastering Git
http://shop.oreilly.com/product/0636920017462.do
42
45. Gerrit
• Originally developed at Google
• Web based code review and project management for Git
• Shows changes in a side-by-side display
• Allows inline comments by reviewers
• Authorized users can initiate merges
45
49. More Sessions
• Gradle the Innovation Continues - Hans Dockter
• Standardizing your Enterprise Build Environment with
Gradle - Luke Daley
• Gradle Plugin Best Practices - Luke Daley
• Building an Integration Platform with Grails and Gradle -
Brian Saville
49