class HttpStubDocker::Rake::PipelineTasks

Constants

PUBLISH_SCRIPT

Public Class Methods

new(args) click to toggle source
# File lib/http_stub_docker/rake/pipeline_tasks.rb, line 10
def initialize(args)
  define_test_task(args)
  define_commit_task(args)
  define_publish_task(args)
end

Private Instance Methods

define_commit_task(args) click to toggle source
# File lib/http_stub_docker/rake/pipeline_tasks.rb, line 29
def define_commit_task(args)
  desc "Ensures container runs"
  task(commit: [ "#{args.task_prefix}docker:build", "#{args.task_prefix}docker:start" ]) do
    begin
      ::Rake::Task["#{args.task_prefix}docker:test"].invoke
    ensure
      ::Rake::Task["#{args.task_prefix}docker:stop"].invoke
    end
  end
end
define_publish_task(args) click to toggle source
# File lib/http_stub_docker/rake/pipeline_tasks.rb, line 40
def define_publish_task(args)
  desc "Publishes the container"
  task(publish: "#{args.task_prefix}docker:build") do
    begin
      sh "#{PUBLISH_SCRIPT} #{args.stub_name} #{args.publish_tags.join(" ")}"
    rescue RuntimeError
      raise "Error publishing container"
    end
  end
end
define_test_task(args) click to toggle source
# File lib/http_stub_docker/rake/pipeline_tasks.rb, line 18
def define_test_task(args)
  desc "Verifies container is running"
  task(:test) do
    Bundler.require(:test)
    Wait.until!(description: "#{args.stub_name} is running", timeout_in_seconds: 10) do
      raise "#{args.stub_name} is not running" unless server_running?(args)
    end
    puts "#{args.stub_name} is running"
  end
end
server_running?(args) click to toggle source
# File lib/http_stub_docker/rake/pipeline_tasks.rb, line 51
def server_running?(args)
  response = Net::HTTP.get_response(URI("#{args.external_base_uri}/http_stub/status"))
  response.body == (args.configurer ? "Initialized" : "Started")
end