spring projects infrastructure
DESCRIPTION
Presented at SpringOne 2GX 2012TRANSCRIPT
Spring Projects InfrastructureRoy Clarkson, Spring for Android/Mobile Project Lead
Gunnar Hillert, Spring IntegrationTwitter/GitHub: @royclarkson, @ghillert
© 2012 SpringOne 2GX. All rights reserved. Do not distribute without permission.
2
What is Spring?
6
Spring Framework
Spring AMQP
Spring Integration
Spring for Android
Spring Batch
Spring Data
Spring Gemfire
Spring Hadoop
Spring Mobile
Spring .NET
Spring Roo
Spring Security
Spring Shell
Spring Social
Spring Web Flow
Agenda• Issue Tracking• Build• Continuous Integration/Deployment• Repositories• Source Control• Community Contributions
4
5
jira.springsource.org
6
Issue Tracking• Submit bug reports• Request features• Vote for issues• Provide feedback• Track status• Watch issues
Lifecycle of an Issue• Unassigned• Waiting For Triage• Triaged• In Progress• Resolved• Closed
7
More Information• github.com/SpringSource/spring-framework/wiki/The-
Lifecycle-of-an-Issue
8
9
10
Gradle Hello World
task hello { doLast { println 'Hello world!' }}
11
Demo
Building Spring
12
$ git clone git://github.com/SpringSource/spring-framework.git$ cd spring-framework$ ./gradlew build
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
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
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
16
Demo
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
IntelliJ IDEA• Gradle Support in IntelliJ IDEA 11• www.jetbrains.com/idea/webhelp/gradle-2.html• confluence.jetbrains.com/display/IDEADEV/News
18
21
Bamboo Features• Continuous Integration• Highly Configurable• Instant Feedback• Continuous Deployment• Release Management• JIRA Integration• Plugin Support
23
Sonar Metrics
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
SpringSource Repository
26
repo.springsource.org
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
27
Maven
28
<repository> <id>springsource-release</id> <name>SpringSource Release Repository</name> <url>http://repo.springsource.org/libs-release</url></repository>
<repository> <id>springsource-milestone</id> <name>SpringSource Milestone Repository</name> <url>http://repo.springsource.org/libs-milestone</url></repository>
<repository> <id>springsource-snapshot</id> <name>SpringSource Snapshot Repository</name> <url>http://repo.springsource.org/libs-snapshot</url></repository>
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
SpringSource on GitHub
30
github.com/SpringSource
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
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
Contributing
33
support.springsource.com/spring_committer_signup
Fork the Repository• Navigate to github.com/SpringSource/<project>• Select the button• Select your local GitHub account as the destination
34
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
35
Submitting a Pull Request• Create a new topic branch based on issue number
• Complete your changes• Push your branch to origin
• Select when you are ready to submit your code to the project lead for review
36
$ git checkout -b <project>-123
$ git push origin <project>-123
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
37
$ git pull --rebase upstream master
Code Reviews
38
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!
39
GitHub Pull Request = Code + Issue + Code Comments
40
Jürgenization
More Information• github.com/SpringSource/spring-framework/wiki/
Contributor-guidelines• github.com/SpringSource/spring-integration/wiki/
Contributor-Guidelines• help.github.com/articles/fork-a-repo• help.github.com/articles/using-pull-requests
41
More Information• Pro Git: Contributing to a Project
http://git-scm.com/book/ch5-2.html
• Pro Git: Rebasinghttp://git-scm.com/book/ch3-6.html
• McCullough and Berglund on Mastering Githttp://shop.oreilly.com/product/0636920017462.do
42
Cloud Foundry Code Reviews
43
44
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
Recommendation• Try GitHub first• Consider Gerrit
46
More Information• code.google.com/p/gerrit
47
Community• www.springsource.org• blog.springsource.org• twitter.com/springsource• twitter.com/springframework• forum.springsource.org• stackoverflow.com/questions/tagged/spring
48
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
Q & A