http_stub_docker 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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: []
|