Menu

Introducing ReleaseHawk

Today we're launching ReleaseHawk— a GitHub app that manages your dependencies that live outside your package manager. In today's environment, we've grown accustomed to having our dependencies come from a package manager, such as NPM, Maven, or NuGet.

There are existing GitHub apps, such as Greenkeeper, to keep your dependencies within your package manager up to date. What if you want the same convenience for an open data set, an important flat-file, or a GitHub repository? ReleaseHawk to the rescue!

For GitHub dependencies, you can choose to be updated on every release, tag, or commit. For URL dependencies, you'll be updated when the checksum changes. You can even run a local script as part of the update process.

Example ReleaseHawk Pull Request

Watching a GitHub Repository

ReleaseHawk was originally conceived while building the heroprotocol-node project. heroprotocol-node depends on a GitHub repository that doesn't use tags or releases, and is vital to stay up to date. With ReleaseHawk, a pull request is opened every time a new commit on the underlying repository is available. ReleaseHawk is configured using a YAML file. Here's the .releasehawk.yml configuration used in the heroprotocol-node:

Blizzard/heroprotocol:
  destination: ./heroprotocol
  type: commit
  script: ./bin/new-release.sh

Here's an example of a pull request ReleaseHawk created:

Example ReleaseHawk Pull Request

Watching a URL

Let's say I want to build a project that depends on data within a CSV hosted at some URL. In this scenario, we want to update our application whenever the CSV data changes. For example, the city of Waterloo exposes parking ticket data via a hosted CSV file. The data set in question is around 28 MB, making this an expensive request in the browser. After downloading this file, I want to execute a script to parse the data.

With ReleaseHawk I can use a .releasehawk.yml like this:

WaterlooParkingTickets:
  destination: ./data
  url: https://opendata.arcgis.com/datasets/082f1a5130cb4e79b8066334972cf66d_0.csv
  type: file
  script: ./bin/parse-data.sh

Anytime the CSV file is updated, ReleaseHawk will:

  1. clone my repository
  2. download the updated data
  3. run ./bin/parse-data.sh
  4. create a pull request.

Get started

To try out ReleaseHawk in your project, install it on GitHub now.

We'd love to get your feedback! Tell us about your experience by dropping us a line or opening an issue in the ReleaseHawk repository

We’d love to partner with you.