probot-serverless-now

Probot Wrapper to run GitHub Apps as Serverless Functions in ZEIT Now

Usage no npm install needed!

<script type="module">
  import probotServerlessNow from 'https://cdn.skypack.dev/probot-serverless-now';
</script>

README

npm version build status

Goal

probot-serverless-now is a wrapper around Probot to run your GitHub Apps as Serverless Functions with ZEIT Now.

Usage

  • app.js

    module.exports = app => {
      app.on("issues.opened", async context => {
        // A new issue was opened, what should we do with it?
        context.log(context.payload);
      });
    };
    
  • api/index.js

    const { toLambda } = require("probot-serverless-now");
    
    const applicationFunction = require("../app");
    
    module.exports = toLambda(applicationFunction);
    
  • now.json

    {
      "version": 2,
      "env": {
        "APP_ID": "@my-app-id",
        "PRIVATE_KEY": "@my-app-base64-encoded-private-key",
        "WEBHOOK_SECRET": "@my-app-webhook-secret"
      }
    }
    

Supported Probot Features

  • Logging
  • Sentry integration
  • Webhook signature verification
  • Loading the private key from the filesystem. The PRIVATE_KEY environment variable should be used instead (possibly base64 encoded).
  • Custom routing. The only routes are:
    • GET /: typical Probot landing page
    • POST /: webhook handler
  • Multiple applications running under the same Probot instance. Instead, you should create multiple Now Lambdas. Each lambda should have its own now.json file since they won't share the same APP_ID, PRIVATE_KEY, and WEBHOOK_SECRET environment variables. To do that, you could either use multiple repositories or a mono-repo with Yarn workspaces or Lerna for instance.