0.2.3 • Published 9 years ago

hubot-temploy v0.2.3

Weekly downloads
1
License
MIT
Repository
github
Last release
9 years ago

hubot-temploy Build Status npm version

Hubot script to temporarily deploy pull requests.

Install

Just add hubot-temploy to your package.json and external-scripts.json.

You might also need to install ngrok if you plan to deploy application locally.

Commands

  • hubot temploys - list of temployed pull requests
  • hubot temploy start owner/repo#1 - start temployment of pull request #1 for repository owner/repo
  • hubot temploy stop owner/repo#1 - stop temployment of pull request #1 for repository owner/repo

Usage

First of all, you need to create .temploy.yml configuration file. It should contain start and stop commands at least:

start: script/hubot_temploy_start.sh
stop: script/hubot_temploy_stop.sh

The start script should do everything necessary for your server to be running (let's pretend you have rails application) and spawn application in the background:

#!/bin/bash
cp config/database.yml.example config/database.yml
bundle install --path ~/.bundle
bundle exec rake db:setup
bundle exec rake assets:precompile RAILS_ENV=development
bundle exec rails s -d

Now, you can tell hubot to temploy your application pull request:

hubot temploy start owner/repo#1

where owner/repo is the path to your Github repository and 1 is your pull request number

After the script is executed, hubot-temploy will start ngrok (by default, on port 3000) and respond with exposed server URL.

Every 1 minute it will check teployment for HTTP requests. If no request has been made within "time-to-live" period (by default, 30 minutes since last request), temployment will be automatically stopped.

Temployment stopping is done using stop script from configuration file (in this case it just kills rails process):

#!/bin/bash
kill $(ps ax | grep '[r]ails s' | awk '{print $1}')

It is also possible to force temployment stop:

hubot temploy stop owner/repo#1

You can also take a look at hubot-temploy-example for a minimal working repository.

Of course, both examples are very simple and do not support parallel temployments (because ports/database are the same), so you might want to find a way to isolate each environment. One of the simplest solutions is to use Vagrant, create new virtual machine in start script and delete it in stop script.

Configuration

You can also change a couple of configuration options:

# .temploy.yml
ngrok_command: vagrant ssh -c "ngrok -log=stdout 3000" # change ngrok command to use (note that "-log=stdout" is mandatory)
ttl: 60 # change time (in minutes) to wait since last HTTP request before stopping

TODO

  1. Make tests less flaky (remove sort -r from npm test).
  2. Support hubot-redis-brain.
0.2.3

9 years ago

0.2.2

9 years ago

0.2.1

9 years ago

0.2.0

9 years ago

0.1.4

9 years ago

0.1.3

9 years ago

0.1.2

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago