http_stub_docker 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/http_stub_docker/rake/container_tasks.rb +52 -0
- data/lib/http_stub_docker/rake/pipeline_tasks.rb +51 -0
- data/lib/http_stub_docker/rake/resource_tasks.rb +31 -0
- data/lib/http_stub_docker/rake/server_daemon_tasks.rb +19 -0
- data/lib/http_stub_docker/rake/task_generator.rb +26 -0
- data/lib/http_stub_docker.rb +13 -0
- metadata +119 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 899ea86ff384994a34a362fc1ea6e86f27a15baa
|
4
|
+
data.tar.gz: d0360c887d1dc32599ec04e3acc20646481bc377
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: abdd5e239843618683f733aa55473d1f19da533dc6868b3e983cd609893dd4f9a6af676362c0a8ebaa5aed22c6764d736a3c23ae9f3c6a735fe371d4f27d8ab9
|
7
|
+
data.tar.gz: e78abe01d7d0f49241b0d66e72d26055af2850c6f21032f9c3aa5b0de1a643d005cf15a83b78b6b66bd148172acade7469c2a59c10b6f911ec7f8ef6b71c7514
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module HttpStubDocker
|
2
|
+
module Rake
|
3
|
+
|
4
|
+
class ContainerTasks < ::Rake::TaskLib
|
5
|
+
|
6
|
+
def initialize(args)
|
7
|
+
define_build_task(args)
|
8
|
+
define_start_task(args)
|
9
|
+
define_connect_task(args)
|
10
|
+
define_stop_task(args)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def define_build_task(args)
|
16
|
+
desc "Builds the image"
|
17
|
+
task(:build) do
|
18
|
+
system "docker build -t #{args[:stub_name]} ."
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def define_start_task(args)
|
23
|
+
desc "Starts a container"
|
24
|
+
task(:start) do
|
25
|
+
system "docker run -d " \
|
26
|
+
"-p #{args[:port]}:80 " \
|
27
|
+
"-e STUB_EXTERNAL_BASE_URI=#{args[:external_base_uri]} " \
|
28
|
+
"#{args[:stub_name]}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def define_connect_task(args)
|
33
|
+
task(:connect) do
|
34
|
+
system "docker exec -it #{container_ids(args).first} /bin/sh"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def define_stop_task(args)
|
39
|
+
desc "Stops all containers"
|
40
|
+
task(:stop) do
|
41
|
+
container_ids(args).each { |container_id| system "docker rm -f #{container_id}" }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def container_ids(args)
|
46
|
+
`docker ps -a --filter ancestor=#{args[:stub_name]} --format "{{.ID}}"`.split
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module HttpStubDocker
|
2
|
+
module Rake
|
3
|
+
|
4
|
+
class PipelineTasks < ::Rake::TaskLib
|
5
|
+
|
6
|
+
PUBLISH_SCRIPT = "#{HttpStubDocker::BASE_DIR}/bin/push_docker_image_to_ecr.sh".freeze
|
7
|
+
|
8
|
+
private_constant :PUBLISH_SCRIPT
|
9
|
+
|
10
|
+
def initialize(args)
|
11
|
+
define_test_task(args)
|
12
|
+
define_commit_task
|
13
|
+
define_publish_task(args)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def define_test_task(args)
|
19
|
+
desc "Verifies container is running"
|
20
|
+
task(:test) do
|
21
|
+
Bundler.require(:test)
|
22
|
+
Wait.until!(description: "#{args[:stub_name]} is running", timeout_in_seconds: 10) do
|
23
|
+
response = Net::HTTP.get_response(URI("#{args[:external_base_uri]}/http_stub"))
|
24
|
+
raise "#{args[:stub_name]} is not running" unless response.code == "200"
|
25
|
+
end
|
26
|
+
puts "#{args[:stub_name]} is running"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def define_commit_task
|
31
|
+
desc "Ensures container runs"
|
32
|
+
task(commit: %w{ docker:build docker:start }) do
|
33
|
+
begin
|
34
|
+
::Rake::Task["docker:test"].invoke
|
35
|
+
ensure
|
36
|
+
::Rake::Task["docker:stop"].invoke
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def define_publish_task(args)
|
42
|
+
desc "Publishes the container"
|
43
|
+
task(publish: "docker:build") do
|
44
|
+
system "#{PUBLISH_SCRIPT} #{args[:stub_name]} #{args[:version]}"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module HttpStubDocker
|
2
|
+
module Rake
|
3
|
+
|
4
|
+
class ResourceTasks < ::Rake::TaskLib
|
5
|
+
|
6
|
+
def initialize(args)
|
7
|
+
define_clobber_task(args)
|
8
|
+
define_setup_task(args)
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def define_clobber_task(args)
|
14
|
+
desc "Removes Docker resources"
|
15
|
+
task(:clobber) do
|
16
|
+
resources = Dir.entries("#{HttpStubDocker::BASE_DIR}/resource").find_all { |file| !File.directory?(file) }
|
17
|
+
rm resources.map { |resource| "#{args[:stub_dir]}/#{resource}" }, force: true
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def define_setup_task(args)
|
22
|
+
desc "Creates Docker resources"
|
23
|
+
task(:setup) do
|
24
|
+
cp_r "#{HttpStubDocker::BASE_DIR}/resource/.", args[:stub_dir]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module HttpStubDocker
|
2
|
+
module Rake
|
3
|
+
|
4
|
+
class ServerDaemonTasks
|
5
|
+
|
6
|
+
def initialize(args)
|
7
|
+
HttpStub::Server::Daemon.log_dir = ::File.expand_path("#{args[:stub_dir]}/tmp/log", __FILE__)
|
8
|
+
HttpStub::Server::Daemon.pid_dir = ::File.expand_path("#{args[:stub_dir]}/tmp/pids", __FILE__)
|
9
|
+
|
10
|
+
configurer = args[:configurer]
|
11
|
+
configurer.stub_server.host = "localhost"
|
12
|
+
configurer.stub_server.port = 80
|
13
|
+
HttpStub::Rake::ServerDaemonTasks.new(name: :stub_server, configurer: configurer)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module HttpStubDocker
|
2
|
+
module Rake
|
3
|
+
|
4
|
+
class TaskGenerator < ::Rake::TaskLib
|
5
|
+
|
6
|
+
DOCKER_TASK_CLASSES = [
|
7
|
+
HttpStubDocker::Rake::ResourceTasks,
|
8
|
+
HttpStubDocker::Rake::ContainerTasks,
|
9
|
+
HttpStubDocker::Rake::PipelineTasks
|
10
|
+
].freeze
|
11
|
+
|
12
|
+
private_constant :DOCKER_TASK_CLASSES
|
13
|
+
|
14
|
+
def initialize(args)
|
15
|
+
resolved_args = args
|
16
|
+
resolved_args[:external_base_uri] ||= "http://localhost:#{args[:port]}"
|
17
|
+
HttpStubDocker::Rake::ServerDaemonTasks.new(resolved_args)
|
18
|
+
namespace :docker do
|
19
|
+
DOCKER_TASK_CLASSES.each { |task_class| task_class.new(resolved_args) }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'http_stub/rake/task_generators'
|
2
|
+
|
3
|
+
module HttpStubDocker
|
4
|
+
|
5
|
+
BASE_DIR = File.expand_path("../..", __FILE__).freeze
|
6
|
+
|
7
|
+
end
|
8
|
+
|
9
|
+
require_relative 'http_stub_docker/rake/server_daemon_tasks'
|
10
|
+
require_relative 'http_stub_docker/rake/resource_tasks'
|
11
|
+
require_relative 'http_stub_docker/rake/container_tasks'
|
12
|
+
require_relative 'http_stub_docker/rake/pipeline_tasks'
|
13
|
+
require_relative 'http_stub_docker/rake/task_generator'
|
metadata
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: http_stub_docker
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- dueckes
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-08-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '10.4'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '10.4'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: http_stub
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.25'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.25'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubocop
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.42'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.42'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: wait_until
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.3'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.3'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: travis-lint
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.0'
|
83
|
+
description: Tools for building and distributing http_stub Docker containers
|
84
|
+
email: matthew.ueckerman@myob.com
|
85
|
+
executables: []
|
86
|
+
extensions: []
|
87
|
+
extra_rdoc_files: []
|
88
|
+
files:
|
89
|
+
- "./lib/http_stub_docker.rb"
|
90
|
+
- "./lib/http_stub_docker/rake/container_tasks.rb"
|
91
|
+
- "./lib/http_stub_docker/rake/pipeline_tasks.rb"
|
92
|
+
- "./lib/http_stub_docker/rake/resource_tasks.rb"
|
93
|
+
- "./lib/http_stub_docker/rake/server_daemon_tasks.rb"
|
94
|
+
- "./lib/http_stub_docker/rake/task_generator.rb"
|
95
|
+
homepage: http://github.com/MYOB-Technology/http_stub_docker
|
96
|
+
licenses:
|
97
|
+
- MIT
|
98
|
+
metadata: {}
|
99
|
+
post_install_message:
|
100
|
+
rdoc_options: []
|
101
|
+
require_paths:
|
102
|
+
- lib
|
103
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '2.0'
|
108
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
requirements: []
|
114
|
+
rubyforge_project: http_stub_docker
|
115
|
+
rubygems_version: 2.5.1
|
116
|
+
signing_key:
|
117
|
+
specification_version: 4
|
118
|
+
summary: Docker tools for http_stub
|
119
|
+
test_files: []
|