Difference between revisions of "Mylyn/Hudson Integration for Mylyn"

From Eclipsepedia

Jump to: navigation, search
(Schedule)
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Hudson Integration for Mylyn ==
+
This page tracks the status of the [http://code.google.com/soc/ GSOC] project "Hudson integration for Mylyn".<br />
 +
Student: Markus Knittig<br />
 +
Mentor: Steffen Pingel
  
This page contains the project proposal created by [[mailto:harshana05@gmail.com Harshana Martin]] for the idea of "Hudson Integration for Mylyn" from the [[http://wiki.eclipse.org/Google_Summer_of_Code_2010_Ideas GSoc 2010 idea list]]. I am extreamly happy to have comments from the viewers.
+
== About ==
  
== Summery  ==
+
The goal of this projects is to integrate Hudson with Mylyn. It will be part of Mylyn/Build after the [http://eclipse.org/project-slides/mylyn-restructuring-review.html restructuring of Mylyn]. It should provided the following features:
 
+
* Monitoring build statuses in Eclipse
Eclipse Mylyn is the task and application lifecycle management (ALM) framework for Eclipse. Mylyn project is consists with several sub projects such as Tasks, Context, SCM, Build, Docs and etc. The project idea "Hudson integration for Mylyn" is aiming at implementing a client application which implements Hudson Continuous Integration Server's Remote API and implementing the basic UI layer for Eclipse that displays build status, console output and test results for builds. After completing this project, Eclipse Developers and users will be able to automate the software development/management process using Eclipse IDE. They can write code/implement things using the Eclipse IDE. Then they can commit the written code to SCM systems like CVS, SubVersion, Git and etc using the SCM integrations with Eclipse IDE. Then they can trigger build on the codebase, monitor the codebase ststus, run tests using this Hudson integration for Mylyn. So the developer/user does not need to switch to web browser from the Eclipse IDE to trigger build on the codebase, monitor the codebase ststus, run tests. Instead they can do all those tasks from the Eclipse IDE. So this project will provide a lot of convenience to the developers/users who are using Hudson CI server for their build automation. This project will be extended to implement the OSLC-Automation RESTful service APIs for interoperability among different vendors and hardware platforms once the OSLC-Automation RESTful service APIs are finalized. But this OSLC-Automation integration will not be done as a part of the GSoc 2010 program.
+
* Viewing build details in Eclipse
 +
* Running a build from within Eclipse
 +
* Viewing test results in Eclipse
 +
* Viewing a build log in Eclipse
 +
* Adding a task from a failed build in Eclipse
  
 
== Details  ==
 
== Details  ==
  
Eclipse Mylyn is the task and application lifecycle management (ALM) framework for Eclipse. Mylyn makes tasks first class part of the Eclipse IDE and tasks helps developers to switch between different contexts. So these tasks and task context model filter the information and reduce the information overload. Hence the developer has to do less search and they can spend more time on actual development work. In this way Mylyn tools help to improve the productivity of the Mylyn users. There are several sub projects under the Mylyn project as Tasks, Context, SCM, Build, Docs and etc. Integration with the Hudson continuous build server is categorized under the Build sub project and will be the reference implementation for the Build sub project. Mylyn project is working closely with the Open Standard initiative which is known as OSLC community to ensure the interoperability among different hardware/software vendors and different software/hardware platforms. Hence this Hudson integration for Mylyn will also provide interoperability by following and implementing the set of Open standard RESTful APIs defined by the OSLC. But currently these RESTful APIs are not completely standardized. So this project will not implement the set of RESTful APIs for OSLC-Automation but later these APIs will become a part of the Hudson integration for Mylyn.
+
=== Package structure ===
  
When we consider the build automation Hudson Continuous Integration Server is one of the most widely used applications. Hudson runs in a servlet container and supports SCM tools such as CVS, Subversion, Git and Clearcase. Not only these SCM integrations but also it supports Apache Ant and Apache Maven project executions. Hudson is capable of executing the Windows Batch scripts and Shell scripts as well. It provides users to build system automatically without human intervention upon set of triggers such as SCM commits using post commit hooks, time based triggers such as nightly builds. But the problem is currently there is no UI in the Eclipse IDE which provides access to the Hudson server. So the users who are using Hudson server can write code in Eclipse and then commit it to their respective SCM system from Eclipse IDE using CVS, Subversion, Egit and other SCM integrations. But then to check whether code compiles well and to run tests on the newly committed code, he/she has to switch to a web browser to check the Hudson server status and to run build, tests and to check the status of the codebase. So if we can provide the Hudson integration, then users can write code, commit code and test and validate code from the Eclipse IDE without switching to any other view. So this will decrease the context switching among tasks of humans and it will increase the productivity of developers.  
+
The project namespace will be ''org.eclipse.mylyn.hudson''.
 +
The namespace for common build infrastructure will be ''org.eclipse.mylyn.builds''.
  
Hudson Remote Access API is exposing Hudson CI server functionalities in 3 methods. They are
+
=== Remote API ===
  
#XML  
+
The project will consume the Hudson API via REST/XML with JAXB as marshaller (using the provided xml schemas).
#JSON with JSONP support
+
#Python
+
  
and the Remote Access API is offered in a REST type style for the client applications. We can use the Hudson’s Remote Access API for the things like
+
=== Common Builds API ===
  
#Retrieve information from Hudson for programmatic consumption.
+
The common builds API should consist of at least the following components:
#Trigger a new build
+
* A builds view (See [http://confluence.atlassian.com/download/attachments/169118592/EclipseBambooViewWithDropdown.png Bamboo] and [http://tasktop.com/blog/wp-content/uploads/2010/03/cruise.png Cruise])
#Create/copy jobs
+
** Flat or hierarchical -> probably both
 
+
* Specialized task view for builds with the following parts
<br> Implementation work of this project can be divided to 2 different sections.
+
** Summary
 
+
** Tests (JUnit)
#Provide a basic UI layer for Eclipse that displays build status, console output and test results for builds.
+
** Code changes (depends on Mylyn SCM)
#Implement a client for Hudson's remote API and integrate the implementation with the UI implementation
+
** Build log
 
+
The project can be divided in to several stages as follow.
+
 
+
#A Research on the Hudson CI Server, Hudson Remote API and API access.  
+
#A Research on the Mylyn codebase, code conventions, jFace and other UI components.  
+
#Implement the Basic UIs to displays build status, console output and test results for builds.  
+
#Implementing the client application for Hudson's remote API &amp; Testing.  
+
#Integrating the Front end UIs with the Backend Hudson Remote API client application.
+
#Completing documentation.
+
 
+
== Project Scope  ==
+
 
+
#Implementing basic UI layer for Eclipse that displays build status, console output and test results for builds.
+
#Implementing a client application for Hudson's remote API.
+
#Integration of UI components and the Hudson client.
+
#Integration of implemented feature with the Mylyn codebase.
+
 
+
== Deliverables  ==
+
 
+
#A complete set of tools to access the Hudson Continuous Integration server from the Eclipse IDE via Mylyn which can display build status, console output and test results for builds.
+
#A Proper documentation guide for users and the developers.
+
  
 
== Schedule  ==
 
== Schedule  ==
Line 58: Line 42:
 
! Date  
 
! Date  
 
! Planned&nbsp; items
 
! Planned&nbsp; items
 +
! Status
 +
! Bugzilla Entry
 
|- style="background: lightgrey none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"
 
|- style="background: lightgrey none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"
 
! M1  
 
! M1  
| May 3, 2010  
+
| May 9, 2010  
 
| align="left" | A Research on the Hudson CI Server, Hudson Remote API and API access.
 
| align="left" | A Research on the Hudson CI Server, Hudson Remote API and API access.
 +
| [[Image:Ok green.gif]]
 +
| {{bug|312928}} {{bug|314770}}
 
|- style="background: lightgrey none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"
 
|- style="background: lightgrey none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"
 
! M2  
 
! M2  
| May 24, 2010  
+
| May 23, 2010  
| align="left" | A Research on the Mylyn codebase, code conventions, jFace and other UI components.
+
| align="left" | Set up basic mylyn connector infrastructure. Integrated basic functions of the Hudson API.
 +
| [[Image:Ok green.gif]]
 +
| {{bug|317384}} {{bug|315151}} {{bug|317767}}
 
|- style="background: lightgrey none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"
 
|- style="background: lightgrey none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"
 
! M3  
 
! M3  
| June 21, 2010  
+
| June 20, 2010  
| align="left" | Implementing the client application for Hudson's remote API &amp; Testing.
+
| align="left" | Implementing features to monitor the build status in Eclipse and basic detail view as well as running a build from within Eclipse
 +
| [[Image:Progress.gif]][[Image:Glass.gif]]
 +
| {{bug|315717}} {{bug|315151}} {{bug|318228}} {{bug|317768}} {{bug|319644}} {{bug|318103}} {{bug|319340}}
 
|- style="background: lightgrey none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"
 
|- style="background: lightgrey none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"
 
! M4  
 
! M4  
| july 26, 2010  
+
| July 4, 2010  
| align="left" | Implement the Basic UIs to displays build status, console output and test results for builds.
+
| align="left" | Polish detail view (view console output).
 +
| [[Image:Progress.gif]]
 +
| {{bug|321192}}
 
|- style="background: lightgrey none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"
 
|- style="background: lightgrey none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"
 
! M5  
 
! M5  
| August 2, 2010  
+
| July 25, 2010  
| align="left" | Integration of UI with the client application which implements the Hudson's Remote API &amp; Testing.
+
| align="left" | Add function for adding a build description and build deletion. View JUnit tests from a build. Add a new task based on a failed build.
 +
| [[Image:Progress.gif]]
 +
| {{bug|321191}}
 
|- style="background: lightgrey none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"
 
|- style="background: lightgrey none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"
 
! M6  
 
! M6  
| August 10, 2010  
+
| August 8, 2010  
| align="left" | Integrating of Hudson integration with Mylyn project with the Mylyn project &amp; Testing.
+
| align="left" | Possible improve Mylyn/Build by providing code for common functionality.
 +
| [[Image:Progress.gif]]
 +
| N/A
 
|- style="background: lightgrey none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"
 
|- style="background: lightgrey none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"
 
! M7  
 
! M7  
 
| August 14, 2010  
 
| August 14, 2010  
 
| align="left" | Completing Documentation.
 
| align="left" | Completing Documentation.
 +
| [[Image:Progress.gif]]
 +
| N/A
 
|}
 
|}
 
== Challenges  ==
 
 
#Implementing the build view and editor would have a significant amount of work.
 
#Testing the implemented components.
 
 
== References  ==
 
 
#[[http://eclipse.org/project-slides/mylyn-restructuring-review.html http://eclipse.org/project-slides/mylyn-restructuring-review.html]]
 
#[[http://wiki.hudson-ci.org/display/HUDSON/Distributed+builds http://wiki.hudson-ci.org/display/HUDSON/Distributed+builds]]
 
#[[http://en.wikipedia.org/wiki/Hudson_(software) http://en.wikipedia.org/wiki/Hudson_(software)]]
 
#[[http://en.wikipedia.org/wiki/Continuous_integration http://en.wikipedia.org/wiki/Continuous_integration]]
 
#[[http://en.wikipedia.org/wiki/Application_lifecycle_management http://en.wikipedia.org/wiki/Application_lifecycle_management]]
 
#[[http://www.slideshare.net/carlo.bonamico/continuous-integration-with-hudson http://www.slideshare.net/carlo.bonamico/continuous-integration-with-hudson]]
 
#[[http://wiki.hudson-ci.org/display/HUDSON/Remote+access+API http://wiki.hudson-ci.org/display/HUDSON/Remote+access+API]]
 
#[[http://wiki.hudson-ci.org/display/HUDSON/Use+Hudson http://wiki.hudson-ci.org/display/HUDSON/Use+Hudson]]
 
#[[https://ecf2.osuosl.org/hudson/ https://ecf2.osuosl.org/hudson/]]
 
#[[http://wiki.hudson-ci.org/display/HUDSON/Exposing+data+to+the+remote+API http://wiki.hudson-ci.org/display/HUDSON/Exposing+data+to+the+remote+API]]
 
 
 
  
 
[[Category:SOC]]
 
[[Category:SOC]]

Latest revision as of 04:28, 29 July 2010

This page tracks the status of the GSOC project "Hudson integration for Mylyn".
Student: Markus Knittig
Mentor: Steffen Pingel

Contents

[edit] About

The goal of this projects is to integrate Hudson with Mylyn. It will be part of Mylyn/Build after the restructuring of Mylyn. It should provided the following features:

  • Monitoring build statuses in Eclipse
  • Viewing build details in Eclipse
  • Running a build from within Eclipse
  • Viewing test results in Eclipse
  • Viewing a build log in Eclipse
  • Adding a task from a failed build in Eclipse

[edit] Details

[edit] Package structure

The project namespace will be org.eclipse.mylyn.hudson. The namespace for common build infrastructure will be org.eclipse.mylyn.builds.

[edit] Remote API

The project will consume the Hudson API via REST/XML with JAXB as marshaller (using the provided xml schemas).

[edit] Common Builds API

The common builds API should consist of at least the following components:

  • A builds view (See Bamboo and Cruise)
    • Flat or hierarchical -> probably both
  • Specialized task view for builds with the following parts
    • Summary
    • Tests (JUnit)
    • Code changes (depends on Mylyn SCM)
    • Build log

[edit] Schedule

Milestone Date Planned  items Status Bugzilla Entry
M1 May 9, 2010 A Research on the Hudson CI Server, Hudson Remote API and API access. Ok green.gif bug 312928 bug 314770
M2 May 23, 2010 Set up basic mylyn connector infrastructure. Integrated basic functions of the Hudson API. Ok green.gif bug 317384 bug 315151 bug 317767
M3 June 20, 2010 Implementing features to monitor the build status in Eclipse and basic detail view as well as running a build from within Eclipse Progress.gifGlass.gif bug 315717 bug 315151 bug 318228 bug 317768 bug 319644 bug 318103 bug 319340
M4 July 4, 2010 Polish detail view (view console output). Progress.gif bug 321192
M5 July 25, 2010 Add function for adding a build description and build deletion. View JUnit tests from a build. Add a new task based on a failed build. Progress.gif bug 321191
M6 August 8, 2010 Possible improve Mylyn/Build by providing code for common functionality. Progress.gif N/A
M7 August 14, 2010 Completing Documentation. Progress.gif N/A