class Dpl::Providers::Heroku::Api

Attributes

data[R]

Public Instance Methods

deploy() click to toggle source
# File lib/dpl/providers/heroku/api.rb, line 32
def deploy
  pack
  upload
  build
  log
  verify
end

Private Instance Methods

archive_file() click to toggle source
# File lib/dpl/providers/heroku/api.rb, line 83
def archive_file
  expand("~/.dpl.#{app}.tgz")
end
build() click to toggle source
# File lib/dpl/providers/heroku/api.rb, line 50
def build
  info :build
  res = http.post("/apps/#{app}/builds") do |req|
    req.headers['Content-Type'] = 'application/json'
    req.body = JSON.dump(source_blob: { url: get_url, version: })
  end
  handle_error(res) unless res.success?
  @data = symbolize(JSON.parse(res.body))
end
build_id() click to toggle source
# File lib/dpl/providers/heroku/api.rb, line 105
def build_id
  data[:id]
end
build_status() click to toggle source
# File lib/dpl/providers/heroku/api.rb, line 78
def build_status
  res = http.get("/apps/#{app}/builds/#{build_id}")
  JSON.parse(res.body)['status']
end
curl_opts() click to toggle source
# File lib/dpl/providers/heroku/api.rb, line 117
def curl_opts
  tty? ? '' : '-sS'
end
get_url() click to toggle source
# File lib/dpl/providers/heroku/api.rb, line 87
def get_url
  source['get_url']
end
log() click to toggle source
# File lib/dpl/providers/heroku/api.rb, line 60
def log
  shell :log, echo: false
end
output_stream_url() click to toggle source
# File lib/dpl/providers/heroku/api.rb, line 109
def output_stream_url
  data[:output_stream_url]
end
pack() click to toggle source
# File lib/dpl/providers/heroku/api.rb, line 42
def pack
  shell :pack
end
put_url() click to toggle source
# File lib/dpl/providers/heroku/api.rb, line 91
def put_url
  source['put_url']
end
source() click to toggle source
# File lib/dpl/providers/heroku/api.rb, line 95
def source
  # this says the endpoint /sources is deprecated: https://devcenter.heroku.com/articles/platform-api-reference#source
  # this says to use /apps/example-app/sources: https://devcenter.heroku.com/articles/build-and-release-using-the-api#sources-endpoint
  @source ||= begin
    res = http.post('/sources')
    handle_error(res) unless res.success?
    JSON.parse(res.body)['source_blob']
  end
end
upload() click to toggle source
# File lib/dpl/providers/heroku/api.rb, line 46
def upload
  shell :upload, echo: false
end
verify() click to toggle source
# File lib/dpl/providers/heroku/api.rb, line 64
def verify
  loop do
    case build_status
    when 'pending'
      info :pending
      sleep 5
    when 'succeeded'
      break
    else
      error :failed
    end
  end
end
version() click to toggle source
Calls superclass method
# File lib/dpl/providers/heroku/api.rb, line 113
def version
  super || git_sha
end