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 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: []