spring projects infrastructure
DESCRIPTION
Presented at the Atlanta Spring User Group, July 2012TRANSCRIPT
© 2009 VMware Inc. All rights reserved
Spring Projects Infrastructure
Processes, Source Control, Builds, Community, and more!
2
About Us
Gunnar Hillert, SpringSource, VMwareSpring [email protected]/author/ghillert/
Roy Clarkson, SpringSource, VMwareSpring for Android, Spring [email protected]/author/rclarkson/
3
Agenda
History
New Tools
Process
Differences between projects
Community and how you can get involved
4
5
What is Spring?
Spring AMQP
Spring for Android
Spring Batch
Spring Data
Spring Framework
Spring Gemfire
Spring Hadoop
Spring Integration
Spring Mobile
Spring .NET
Spring Roo
Spring Security
Spring Shell
Spring Social
Spring Web Flow
Spring Web Services
And more …
6
7
History
Spring Framework
• Subversion Repository
• Remember http://src.springframework.org/svn/spring-framework ?
• Ant based build
Some projects on internal Git repository (e.g. Spring Integraton)
• http://git.springsource.org
• Maven
8
github.com/SpringSource
9
SpringSource on GitHub
Spring Integration moved August 2011
Spring Framework moved December 2011
Spring Web Flow recently moved
All major projects now on GitHub
10
Benefits of GitHub
Accessible UI built around Git
Well known open source code repository
Code browsing
View history of changes, commits, and comments
Community contributions are encouraged through Pull Requests
Issue tracking
Wiki pages
11
Contributing
12
Sign the Contributor License Agreement
https://support.springsource.com/spring_committer_signup
13
Fork the Repository
Navigate to github.com/SpringSource/<project>
Select the button
Select your local GitHub account as the destination
14
Local Development Environment
$ git clone [email protected]:<username>/<project>.git
$ cd <project>
$ git remote add upstream [email protected]:SpringSource/<project>.git
$ git fetch --all
$ git remote show
$ git branch -a
15
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
Please note that all pull requests must be able to be cleanly merged with the upstream master’s current state
Recommended: Rebase with Master
16
Reviewing Code via Pull Requests
17
Reviewing Code via Pull Requests
Comment on each commit or on individual lines
Markdown supported
Comments trigger notifications (Can address individual users)
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
18
More Information
Spring Framework Contributor Guidelines
https://github.com/SpringSource/spring-framework/wiki/Contributor-guidelines
Spring Integration Contributor Guidelines
https://github.com/SpringSource/spring-integration/wiki/Contributor-Guidelines
GitHub Help: Fork a Repo
https://help.github.com/articles/fork-a-repo
GitHub Help: Using Pull Requests
https://help.github.com/articles/using-pull-requests
19
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
20
Code Reviews @ Cloud Foundry
21
Code Reviews using Gerrit
22
Code Reviews using Gerrit
Originally developed at Google
http://code.google.com/p/gerrit/
Authorized Gerrit users can trigger merges
Good for larger teams
Recommendation: Try GitHub first, use Gerrit if needed
23
24
Gradle Hello World
task hello {
doLast {
println 'Hello world!'
}
}
25
Building Spring
$ git clone git://github.com/SpringSource/spring-framework.git
$ cd spring-framework
$ ./gradlew build
26
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 …
27
Gradle Details
Version 1.0 released 12-June-2012
Version 1.1-rc-1 released 24-July-2012
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
28
Common Gradle Tasks for Spring Projects
clean – Deletes the build directory
build – Assembles and tests this project
dist – Creates Zip with Jars, Reference + Api Doc, Schema Files
api – Generates aggregated Javadoc API documentation
reference – Generates HTML and PDF reference documentation
install – Install archives artifacts into local .m2 cache
sonarAnalyze – Gather Sonar Metrics
eclipse – Generates all Eclipse files
idea – Generates IDEA project files
29
Gradle IDE Support
IntelliJ IDEA 11 http://www.jetbrains.com/idea/webhelp/gradle-2.html
http://confluence.jetbrains.com/display/IDEADEV/News
SpringSource Tool Suite Support since 2.7.0
Using 2.9.x works great
Import Gradle projects directly into STS
http://static.springsource.org/sts/docs/latest/reference/html/gradle
30
build.springsource.org
31
Bamboo Features
Continuous Integration
Highly Configurable
Instant Feedback
Continuous Deployment
Release Management
JIRA Integration
Plugin Support
32
repo.springsource.org
33
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
34
SpringSource Repository
If you are using…
maven.springframework.org
You should update to…
repo.springsource.org
35
SpringSource Repository
Local Repositories
• libs-snapshot-local
• libs-milestone-local
• libs-release-local
Virtual Repositories
• snapshot
• milestone
• release
Virtual Repositories with Third-Party Support
• libs-snapshot
• libs-milestone
• libs-release
36
SpringSource Repository
<repository> <id>springsource-release</id> <name>SpringSource Release Repository</name> <url>http://repo.springsource.org/release</url></repository>
<repository> <id>springsource-milestone</id> <name>SpringSource Milestone Repository</name> <url>http://repo.springsource.org/milestone</url></repository>
<repository> <id>springsource-snapshot</id> <name>SpringSource Snapshot Repository</name> <url>http://repo.springsource.org/snapshot</url></repository>
37
More Information
Spring Repository FAQ
https://github.com/SpringSource/spring-framework/wiki/SpringSource-repository-FAQ
Downloading Spring Artifacts
https://github.com/SpringSource/spring-framework/wiki/Downloading-Spring-artifacts
38
sonar.springsource.org
39
Collecting Metrics using Sonar
40
jira.springsource.org
41
Found a bug or miss features?
Submit bug reports
Request features
Vote for issues
Provide feedback
Track status
Watch issues
42
The Lifecycle of an Issue
Lifecycle Phases Unassigned
Waiting For Triage
Triaged
In Progress
Resolved
Closed
More information:
https://github.com/SpringSource/spring-framework/wiki/The-Lifecycle-of-an-Issue
43
Other Pieces in the Toolbox
44
News and Announcements
SpringSource blog: http://blog.springsource.org
News: http://www.springsource.org
Twitter: http://twitter.com/springsource
Twitter: http://twitter.com/springframework
45
Interact with the Community
Forum: http://forum.springsource.org
Stackoverflow: http://www.springsource.org
46
Jürgenization
47
Questions??
Thanks!!