github.com/ejholmes/slashdeploy

GitHub Deployments for Slack


Keywords
cd, continuous-delivery, deployment, github, slack
License
BSD-2-Clause
Install
go get github.com/ejholmes/slashdeploy

Documentation

SlashDeploy Build Status Code Climate

SlashDeploy is a web app for triggering GitHub Deployments via a /deploy command in Slack.

Installation

SlashDeploy is already hosted at https://slashdeploy.io. All you have to do is add it to your Slack team:

Add to Slack

Usage

Deploy a repository to the default environment (production):

/deploy ejholmes/acme-inc

Deploy a repository to a specific environment:

/deploy ejholmes/acme-inc to staging

Deploy a branch:

/deploy ejholmes/acme-inc@topic-branch to staging

And more at https://slashdeploy.io/docs.

Development

SlashDeploy requires PostgreSQL; you can install it through Homebrew on OSX and apt-get on Linux.

Using ngrok

  1. Install ngrok and run ./ngrok http 3000
  2. Create a Slack App, set your Slack Redirect URI to http://xxx.ngrok.io/auth/slack/callback and set your Interactive Messages Request URL to https://xxx.ngrok.io/slack/actions
  3. Listen to /deploy commands by setting the Request URL to https://xxx.ngrok.io/slack/commands
  4. Register a new Github OAuth application
  5. Set your Github Authorization callback URL to http://xxx.ngrok.io/auth/github/callback
  6. Using Slack and Github app credentials, set the following environment variables in a .env file:
    • GITHUB_CLIENT (set to github to use the actual client, a fake one is set otherwise)
    • SLACK_CLIENT (set to slack to use the actual client, a fake one is set otherwise)
    • GITHUB_CLIENT_ID
    • GITHUB_CLIENT_SECRET
    • SLACK_CLIENT_ID
    • SLACK_CLIENT_SECRET
    • SLACK_VERIFICATION_TOKEN
    • STATE_KEY
  7. foreman start -p 3000
  8. Create a Slack team and add SlashDeploy to it using the button on http://localhost:3000

Tests

The full test suite can be run with:

$ ./bin/rake

Error Logging

To have errors get reported to Rollbar, set an environment variable ROLLBAR_ACCESS_TOKEN.