Saturday, 27 June 2009

using mylyn with Jira without API access

Mylyn, the task-oriented Eclipse add-in, ships with a Jira connector (as also Trac, Bugzilla etc). This lets you query issues from within Eclipse, schedule the resolution, associate it with code change etc

However, the Jira connector requires that the XML-RPC API is enabled and accessible. You may be working on a project that doesn't have the API on, or you may want to track bugs on a public Jira for a project that you're not a member. For this, the Jira connector won't work.

There is another way, using the Web Template Connector, which I tried when Mylyn (then Mylar) first came out, but has since improved and now have working again with the current build that's part of the Eclipse Galileo release. It should also work with the commercial product TaskTop, based on Mylyn.

It's not nearly as powerful as the native Jira connector, so you don't get the fancy web forms for changing defects, and nor do you get the ability to store the Eclipse task context back onto the issue as an attachment. It is, though, better than no connector at all.

The example below is for Apache. It doesn't presume that you have a login account for their Jira, needing only the public interface. Mylyn does have support to manage logins, but this isn't needed for basic functionality and the config isn't demonstrated here.

Recipe

A. Set up Jira Connector

1. Get Eclipse (preferably the new 3.5, a.k.a. Galileo), with Mylyn pre-installed
2. Install the Mylyn Web Task Connector from the Mylyn Incubation Update Site at http://download.eclipse.org/tools/mylyn/update/incubator/
3. Create a new Task Repository

It's not immediately obvious in Mylyn how to do this. You can either (a) open the repositories view using Window ~ Show View | Task Repositories and then right-click to create a new repo, or (b) from the task view, click New Query and you'll get an option to create a new repository from the resulting dialog box

4. Choose Web Template (Advanced) from the list of repository types

5. For server, choose https://issues.apache.org/jira/

6. For label, choose Apache Jira

7. Click on Addiitonal Settings to open up the config box

8. Add two parameters, leaving each of them blank. One called PID, and one called PREFIX

9. Click on Advanced Configuration

10. For Task URL, enter ${serverUrl}/browse/${PREFIX}-

11. For Task Query URL, enter ${serverUrl}/secure/IssueNavigator.jspa?reset=true&pid=${PID}&status=1&tempMax=500

12. For Query Pattern, enter <td class="nav issuetype">.*?alt="({Type}.*?)".*?<td class="nav issuekey">.*?<a.*?>\w+-({Id}\d+).*?<td class="nav summary">.*?<a.*?>({Description}.*?)</a>.*?<td class="nav assignee">\s*({Owner}.*?)</td>

Note Some Jiras are configured to hyperlink on the assignee, in which case you'll need to use this alternative Pattern:

<td class="nav issuetype">.*?alt="({Type}.*?)".*?<td class="nav issuekey">.*?<a.*?>\w+-({Id}\d+).*?<td class="nav summary">.*?<a.*?>({Description}.*?)</a>.*?<td class="nav assignee">.*?<a.*?\s*({Owner}.*?)</a>


13. Although there's more you can configure, this will do for basic usage, so click Finish

That's the configuration now set for Apache Jira itself. For any other Jira installation, just replace the server Url in this recipe, e.g. http://jira.codehaus.org/ for Codehaus

B. Add an Apache Project

Now to set it up for a project in Apache.

Two things you'll need from the Apache Jira to make it work:

1. The PID for the project. This is a unique integer for the project. Easiest way of finding this is to click on any of the issue reports and you'll see a &pid=99999 type parameter in the URL
2. The PREFIX for each issue. Mylyn insists on numeric IDs for issues, so you need to separately configure the Jira issure prefix, to form a complete Jira id, e.g. QPID-6464

For example, if you want to bring in the Felix Jira, the two values you need are:

PID: 12310100
PREFIX: FELIX

To configure this in Mylyn:

1. Right click in task view for New Query

2. Select your previously configured APpache Jira from the list

3. In the dialog box that follows, enter the values for PID and PREFIX

4. Click on Finish

You should now see the Jira issues from Apache show up under the query. If you double-click on the Jira it will open it up in a web browser

Mylyn will automatically check the Jira every so often for changes, and you'll get toast popping up to notify you.

Other Options

The Web Connector also supports creating new Jiras and handing logins. For both cases you'll need a login for the site concerned

The query used to drive the list of Jiras above is the simplest - all open jiras. You can change this to any other URL you like, simply by copying the URL from the Jira web page and inserting the ${PID} and ${serverUrl} placeholders.

You can also create new parameters to go into the URL, for example to pass a priority or component to Jira to make a more focussed query.

One simple way to make use of this is as a Bug Watch, just capture the query URL for whatever bug site ypou're monitoring and Mylyn will do the rest of the work of keeping you up to date with what's been added and what's been fixed

As you can see from the URL and parameter ability of the Web Connector, it's flexible enough to work with a wide variety of issue trackers, bulletin boards, mailing lists etc