Skip to content

Commit

Permalink
Use cisaurus for releases
Browse files Browse the repository at this point in the history
  • Loading branch information
Naaman Newbold committed Nov 21, 2012
1 parent f77693a commit ed1fd54
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 7 deletions.
20 changes: 16 additions & 4 deletions lib/anvil/heroku/client.rb
Original file line number Diff line number Diff line change
@@ -1,12 +1,24 @@
require 'json'

class Heroku::Client

# valid options:
#
# slug_url: url to a slug
#
def release(app_name, description, options={})
release_options = { :description => description }.merge(options)
json_decode(releases_api["/apps/#{app_name}/release"].post(release_options))
def release(app_name, description, options={}, interval = 2)
release_options = json_encode({ "description" => description }.merge(Hash[options.map{|k,v| [k.to_s, v]}]))
headers = {:content_type => :json, :accept => :json}
response = RestClient.post "#{releases_host}/v1/apps/#{app_name}/release", release_options, headers

# poll until it's not a 202 Accepted http status
while response.code == 202
response = RestClient.get releases_host + response.headers[:location], options
sleep(interval)
yield
end

json_decode(response)
end

def routes(app_name)
Expand All @@ -33,7 +45,7 @@ def route_destroy(app_name, url)
private

def releases_host
ENV["RELEASES_HOST"] || "https://releases-production.herokuapp.com"
ENV["RELEASES_HOST"] || "https://:#{Heroku::Auth.password}@cisaurus.heroku.com"
end

def releases_api
Expand Down
5 changes: 4 additions & 1 deletion lib/anvil/heroku/command/build.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,10 @@ def index
if options.has_key?(:release)
action("Releasing to #{app}") do
begin
release = heroku.release(app, "Anvil deploy", :slug_url => slug_url, :cloud => heroku.host)
release = heroku.release(app, "Anvil deploy", :slug_url => slug_url, :cloud => heroku.host) {
print "."
$stdout.flush
}
status release["release"]
rescue RestClient::Forbidden => ex
error ex.http_body
Expand Down
5 changes: 4 additions & 1 deletion lib/anvil/heroku/command/release.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,10 @@ def index
end
end

release = heroku.release(app, "Anvil deploy", release_options)
release = heroku.release(app, "Anvil deploy", release_options) {
print "."
$stdout.flush
}
status release["release"]
end
end
Expand Down
5 changes: 4 additions & 1 deletion lib/anvil/heroku/command/start.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,10 @@ def index
slug_url = Anvil::Engine.build(dir, :buildpack => options[:buildpack])

action("Preparing development dyno on #{app}") do
heroku.release(app, "Initial development dyno sync", :slug_url => development_dyno_slug_url)
heroku.release(app, "Initial development dyno sync", :slug_url => development_dyno_slug_url){
print "."
$stdout.flush
}
end

build_env = {
Expand Down

0 comments on commit ed1fd54

Please sign in to comment.