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.
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
Blizzard/heroprotocol: destination: ./heroprotocol type: commit script: ./bin/new-release.sh
Here's an example of a pull request ReleaseHawk created:
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: