spring projects infrastructure

47
© 2009 VMware Inc. All rights reserved Spring Projects Infrastructure Processes, Source Control, Builds, Community, and more!

Upload: roy-clarkson

Post on 12-Jun-2015

251 views

Category:

Technology


1 download

DESCRIPTION

Presented at the Atlanta Spring User Group, July 2012

TRANSCRIPT

Page 1: Spring Projects Infrastructure

© 2009 VMware Inc. All rights reserved

Spring Projects Infrastructure

Processes, Source Control, Builds, Community, and more!

Page 2: Spring Projects Infrastructure

2

About Us

Gunnar Hillert, SpringSource, VMwareSpring [email protected]/author/ghillert/

Roy Clarkson, SpringSource, VMwareSpring for Android, Spring [email protected]/author/rclarkson/

Page 3: Spring Projects Infrastructure

3

Agenda

History

New Tools

Process

Differences between projects

Community and how you can get involved

Page 4: Spring Projects Infrastructure

4

Page 5: Spring Projects Infrastructure

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 …

Page 6: Spring Projects Infrastructure

6

Page 7: Spring Projects Infrastructure

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

Page 8: Spring Projects Infrastructure

8

github.com/SpringSource

Page 9: Spring Projects Infrastructure

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

Page 10: Spring Projects Infrastructure

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

Page 11: Spring Projects Infrastructure

11

Contributing

Page 12: Spring Projects Infrastructure

12

Sign the Contributor License Agreement

https://support.springsource.com/spring_committer_signup

Page 13: Spring Projects Infrastructure

13

Fork the Repository

Navigate to github.com/SpringSource/<project>

Select the button

Select your local GitHub account as the destination

Page 14: Spring Projects Infrastructure

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

Page 15: Spring Projects Infrastructure

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

Page 16: Spring Projects Infrastructure

16

Reviewing Code via Pull Requests

Page 17: Spring Projects Infrastructure

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

Page 18: Spring Projects Infrastructure

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

Page 19: Spring Projects Infrastructure

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

Page 20: Spring Projects Infrastructure

20

Code Reviews @ Cloud Foundry

Page 21: Spring Projects Infrastructure

21

Code Reviews using Gerrit

Page 22: Spring Projects Infrastructure

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

Page 23: Spring Projects Infrastructure

23

Page 24: Spring Projects Infrastructure

24

Gradle Hello World

task hello {

doLast {

println 'Hello world!'

}

}

Page 25: Spring Projects Infrastructure

25

Building Spring

$ git clone git://github.com/SpringSource/spring-framework.git

$ cd spring-framework

$ ./gradlew build

Page 26: Spring Projects Infrastructure

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 …

Page 27: Spring Projects Infrastructure

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

Page 28: Spring Projects Infrastructure

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

Page 29: Spring Projects Infrastructure

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

Page 30: Spring Projects Infrastructure

30

build.springsource.org

Page 31: Spring Projects Infrastructure

31

Bamboo Features

Continuous Integration

Highly Configurable

Instant Feedback

Continuous Deployment

Release Management

JIRA Integration

Plugin Support

Page 32: Spring Projects Infrastructure

32

repo.springsource.org

Page 33: Spring Projects Infrastructure

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

Page 34: Spring Projects Infrastructure

34

SpringSource Repository

If you are using…

maven.springframework.org

You should update to…

repo.springsource.org

Page 35: Spring Projects Infrastructure

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

Page 36: Spring Projects Infrastructure

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>

Page 37: Spring Projects Infrastructure

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

Page 38: Spring Projects Infrastructure

38

sonar.springsource.org

Page 39: Spring Projects Infrastructure

39

Collecting Metrics using Sonar

Page 40: Spring Projects Infrastructure

40

jira.springsource.org

Page 41: Spring Projects Infrastructure

41

Found a bug or miss features?

Submit bug reports

Request features

Vote for issues

Provide feedback

Track status

Watch issues

Page 42: Spring Projects Infrastructure

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

Page 43: Spring Projects Infrastructure

43

Other Pieces in the Toolbox

Page 44: Spring Projects Infrastructure

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

Page 45: Spring Projects Infrastructure

45

Interact with the Community

Forum: http://forum.springsource.org

Stackoverflow: http://www.springsource.org

Page 46: Spring Projects Infrastructure

46

Jürgenization

Page 47: Spring Projects Infrastructure

47

Questions??

Thanks!!