Mylyn/Hudson Integration for Mylyn
Hudson Integration for Mylyn
This page contains the project proposal created by [Harshana Martin] for the idea of "Hudson Integration for Mylyn" from the [GSoc 2010 idea list]. I am extreamly happy to have comments from the viewers.
Eclipse Mylyn is the task and application lifecycle management (ALM) framework for Eclipse. under this Mylyn project there are several sub projects 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's remote API and implementing the basic UI layer for Eclipse that displays build status, console output and test results for builds. 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.
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.
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.
Hudson Remote Access API is exposing Hudson CI server functionalities in 3 methods. They are
- JSON with JSONP support
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
- retrieve information from Hudson for programmatic consumption.
- trigger a new build
- create/copy jobs
Implementation work of this project can be divided to 2 different sections.
- Provide a basic UI layer for Eclipse that displays build status, console output and test results for builds.
- Implement a client for Hudson's remote API and integrate the implementation with the UI implementation
The project can be divided in to several stages as follow.
- A Research on the Hudson CI Server, Hudson Remote API and API access.
- 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 & Testing.
- Integrating the Front end UIs with the Backend Hudson Remote API client application.
- Completing documentation.
- 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.
- 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.
|M1||May 3, 2010||A Research on the Hudson CI Server, Hudson Remote API and API access.|
|M2||May 24, 2010||A Research on the Mylyn codebase, code conventions, jFace and other UI components.|
|M3||June 21, 2010||Implementing the client application for Hudson's remote API & Testing.|
|M4||july 26, 2010||Implement the Basic UIs to displays build status, console output and test results for builds.|
|M5||August 2, 2010||Integration of UI with the client application which implements the Hudson's Remote API & Testing.|
|M6||August 10, 2010||Integrating of Hudson integration with Mylyn project with the Mylyn project & Testing.|
|M7||August 14, 2010||Completing Documentation.|
- Providing Interoperability among different vendors and hardware platforms.