This post is for all the code I have written during the GSoC period. It has a list of all my pull requests that were submitted for the completion of the GSoC project.

I would like to state that the new taskcluster-events backend is complete and deployed in production, along with the the Pulse Inspector client.

Taskcluster-Events

Taskcluster-events works like a proxy and pushes pulse messages to browser clients over tcp. Pulse messages work on AMQP and are not directly available on the browser. It provides an api endpoint to connect and receive the messages for the specified exchange and routingKey in the query parameters.

The project was a complete rewrite of this service, and we decided to use Server-Sent Events.

Here’s the list of PR’s that were merged(or will be soon) -

  • PR#6 - This was the initial setup of the server including deploying on Heroku. It contained a major chunk of my work and took over a month to be merged.
  • PR#7 - The second goal was to establish a proper testing framework with fake listening.
  • PR#8 - This was to make neccessary changes to get it working with the new pulse-inspector client PR opened in tc-tools.
  • PR#9 - I added a nice Readme.md for documentation.
  • PR#10 - This was suggested by Dustin. We rolled back the timeout and increased the ping interval to 20 seconds from the earlier 3.
  • PR#11 - This was a quick cleanup PR for the finishing touches.

Taskcluster-Tools

This is a collection of tools for Taskcluster components and elements in the Taskcluster ecosystem. There are tools to manage Taskcluster services, as well as run, debug, inspect and view tasks, task groups, and other Taskcluster related entities.

My job was to update the Pulse-Inspector client to use the EventSource object. Here are my contributions -

  • PR#544 - This was the major shift to using the EventSource instance exposed by the browser.
  • PR#552 - Shift other tools using WebListener to the new tc-events service.

Taskcluster-Cli

This is a command-line client offering control and access to taskcluster from the comfort of your command-line. It provides utilities ranging from direct calls to the specific API endpoints to more complex and practical tasks like listing and cancelling scheduled runs.

My task was to add two command line instructions: one to fetch messages and other to wait for an event like a task to finish or get resolved. This was mostly a stretch goal and I spent a couple days trying to get the hang of golang. I hope to add the other command soon.

  • PR#205 - Added ./taskcluster inspect-pulse <exchange> <routingKeyPattern>

Non GSoC Work

  • Taskcluster-index PR#52: I updated all libraries on tc-index to v11 and up as part of a Code Sprint during the All Hands week.
  • Taskcluster-lib-api PR#101 : Just a small Readme update
  • I also picked up Bug 1420903 as a mentor and I am excited to help new contributors :)