spring projects infrastructure

50
Spring Projects Infrastructure Roy Clarkson, Spring for Android/Mobile Project Lead Gunnar Hillert, Spring Integration Twitter/GitHub: @royclarkson, @ghillert © 2012 SpringOne 2GX. All rights reserved. Do not distribute without permission.

Upload: roy-clarkson

Post on 17-Dec-2014

300 views

Category:

Technology


1 download

DESCRIPTION

Presented at SpringOne 2GX 2012

TRANSCRIPT

Page 1: Spring Projects Infrastructure

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.

Page 2: Spring Projects Infrastructure

2

Page 3: Spring Projects Infrastructure

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

Page 4: Spring Projects Infrastructure

Agenda• Issue Tracking• Build• Continuous Integration/Deployment• Repositories• Source Control• Community Contributions

4

Page 5: Spring Projects Infrastructure

5

jira.springsource.org

Page 6: Spring Projects Infrastructure

6

Issue Tracking• Submit bug reports• Request features• Vote for issues• Provide feedback• Track status• Watch issues

Page 7: Spring Projects Infrastructure

Lifecycle of an Issue• Unassigned• Waiting For Triage• Triaged• In Progress• Resolved• Closed

7

Page 9: Spring Projects Infrastructure

9

Page 10: Spring Projects Infrastructure

10

Gradle Hello World

task hello { doLast { println 'Hello world!' }}

Page 11: Spring Projects Infrastructure

11

Demo

Page 12: Spring Projects Infrastructure

Building Spring

12

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

Page 13: Spring Projects Infrastructure

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

Page 14: Spring Projects Infrastructure

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

Page 15: Spring Projects Infrastructure

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

Page 16: Spring Projects Infrastructure

16

Demo

Page 18: Spring Projects Infrastructure

IntelliJ IDEA• Gradle Support in IntelliJ IDEA 11• www.jetbrains.com/idea/webhelp/gradle-2.html• confluence.jetbrains.com/display/IDEADEV/News

18

Page 19: Spring Projects Infrastructure

More Information• gradle.org

19

Page 21: Spring Projects Infrastructure

21

Bamboo Features• Continuous Integration• Highly Configurable• Instant Feedback• Continuous Deployment• Release Management• JIRA Integration• Plugin Support

Page 23: Spring Projects Infrastructure

23

Sonar Metrics

Page 25: Spring Projects Infrastructure

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

Page 26: Spring Projects Infrastructure

SpringSource Repository

26

repo.springsource.org

Page 27: Spring Projects Infrastructure

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

Page 28: Spring Projects Infrastructure

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>

Page 30: Spring Projects Infrastructure

SpringSource on GitHub

30

github.com/SpringSource

Page 31: Spring Projects Infrastructure

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

Page 32: Spring Projects Infrastructure

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

Page 33: Spring Projects Infrastructure

Contributing

33

support.springsource.com/spring_committer_signup

Page 34: Spring Projects Infrastructure

Fork the Repository• Navigate to github.com/SpringSource/<project>• Select the button• Select your local GitHub account as the destination

34

Page 35: Spring Projects Infrastructure

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

Page 36: Spring Projects Infrastructure

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

Page 37: Spring Projects Infrastructure

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

Page 38: Spring Projects Infrastructure

Code Reviews

38

Page 39: Spring Projects Infrastructure

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

Page 40: Spring Projects Infrastructure

40

Jürgenization

Page 42: Spring Projects Infrastructure

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

Page 43: Spring Projects Infrastructure

Cloud Foundry Code Reviews

43

Page 44: Spring Projects Infrastructure

44

Page 45: Spring Projects Infrastructure

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

Page 46: Spring Projects Infrastructure

Recommendation• Try GitHub first• Consider Gerrit

46

Page 47: Spring Projects Infrastructure

More Information• code.google.com/p/gerrit

47

Page 49: Spring Projects Infrastructure

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

Page 50: Spring Projects Infrastructure

Q & A