micro-github-latest

1.3.0 • Public • Published

Micro-github-latest

Microservice for downloading the latest asset of GitHub release.

Further reading: [中文] Microservice 產品交付 - Dockerize 與 Zeit JavaScript 跨平台解決方案

Travis Codecov Status Github Tag node

Dependency Status devDependency Status peerDependency Status Greenkeeper badge prettier license

Feature

  • Internal 304 cache handler for GitHub Api. PR#5
  • Handle error 403, fallback to githut releases/latest page when rate limit exceeded. PR#19

How To Use

a. Deploy to Now.sh

One click deploys to △ now

Deploy to now

b. Binary executable

Download from GitHub latest release.

$ ORIGIN=$YOUR_DOMAIN \
  ACCESS_TOKEN=$GITHUB_ACCESS_TOKEN \
  ./micro-github-latest-macos --port $PORT

Note: You can run it without Node.js installed.

c. Docker image

Pull from dockerhub.

Docker Automated build Docker Pulls Docker Size

$ docker pull evenchange4/micro-github-latest:latest
$ docker run --rm -it \
  -p $PORT:3000 \
  -e "ORIGIN=YOUR_DOMAIN" \
  -e "ACCESS_TOKEN=GITHUB_ACCESS_TOKEN" \
  evenchange4/micro-github-latest:latest

d. NPM CLI

Install from npm.

npm downloads npm

$ npm i micro-github-latest -g

$ ORIGIN=$YOUR_DOMAIN \
  ACCESS_TOKEN=$GITHUB_ACCESS_TOKEN \
  micro-github-latest --port $PORT

Note: You should use Node.js >= 8 .

API

Environment variables

ENV Required Default Description
ORIGIN * Setup access-control-allow-origin for CORS.
ACCESS_TOKEN Setup GitHub access token with the repo scope.

Note: You should use ACCESS_TOKEN to increase the rate limit.

CLI arguments

$ micro-github-latest --help
Usage: micro-github-latest <command> [options]

Options:
  -p, --port     HTTP server PORT                                [default: 3000]
  -h, --help     Show help                                             [boolean]
  -v, --version  Show version number                                   [boolean]

URL pathname

Method Pathname Description
GET /:owner/:repo/latest 302 redirect to the first asset of latest release.
GET /:owner/:repo/:name/latest 302 redirect to the first matched one by asset name of latest release.
GET /rate_limit Get your current rate limit status.

Demo

Note: You should deploy your own service for production usage.

Technology Stacks

  • Micro: Asynchronous HTTP microservices.
  • Micro-router: A tiny and functional router for Zeit's Micro.
  • Dockerhub: Automatically deploy docker image.
  • Now.sh: Realtime global deployments
  • Pkg: Package your Node.js project into an executable
  • Travis: CI

Developer Guide

Requirements

  • node >= 8.5.0
  • npm >= 5.3.0
  • yarn >= 1.0.2
$ git clone https://github.com/evenchange4/micro-github-latest.git
$ yarn install --pure-lockfile

$ yarn run dev # dev server
$ yarn start   # prod server
$ yarn run pkg # output binary files

Test

$ yarn run format
$ yarn run eslint
$ yarn run test:watch

Docker

$ docker build -t micro-github-latest .

# Push to dockerhub
$ git push

Note: Multi-stage builds are a new feature in Docker 17.05.

Github release / NPM release

$ npm version patch
$ git push

CONTRIBUTING

  • ⇄ Pull requests and ★ Stars are always welcome.
  • For bugs and feature requests, please create an issue.
  • Pull requests must be accompanied by passing automated tests ($ yarn run test).

CHANGELOG

LICENSE

MIT: http://michaelhsu.mit-license.org

Readme

Keywords

none

Package Sidebar

Install

npm i micro-github-latest

Weekly Downloads

1

Version

1.3.0

License

MIT

Last publish

Collaborators

  • evenchange4