minke 1.13.20 → 1.14.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 811e42427f6cae2eeca648798c896f854dd27696
4
- data.tar.gz: e526903241f2dcc47cfba0d034766a6ada9d75eb
3
+ metadata.gz: a75b7d20dfa4be64d0c2624adce3b9f9e25ec3ea
4
+ data.tar.gz: 681b7ff115b1b9c411cae5cd893f1d627f11c531
5
5
  SHA512:
6
- metadata.gz: ac68a11e3ca4f3d397381d507d672c6b95c4ce2a01629be346d83c422647f91dd09e50a06e759428f29df1c496225eafa5bcfc4b573bc168acb2dba8f6ac7c49
7
- data.tar.gz: bbe73b673a52fd539be0d145c08e6e2341fa9101e4f8ac901e7acfc152b1431f0a47865aa36e8a7243a3aa2c2ea899d3ef5b3a5155c66fad1c24c2df250c4f78
6
+ metadata.gz: 40f40d0ad96bb89401230a08b99001e98993accb2cfd72c899ba27bf86f506efedec85d6de500186a52b5994801875df6eb719c2d82e849f72f0a4eb197795f1
7
+ data.tar.gz: ec4dd302f0844486acbc3d816d377bb03e7a2470a5390f03244046ba36c14322d31e65dfd8ac3adc820a63871cf3c7f6e9999c815eb1411cf910e012f4164420
data/.travis.yml CHANGED
@@ -30,7 +30,7 @@ after_deploy:
30
30
  docker build -t nicholasjackson/minke --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` --build-arg VCS_REF=`git rev-parse --short HEAD` .;
31
31
  docker login -e="$DOCKER_EMAIL" -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD";
32
32
  docker push nicholasjackson/minke:latest;
33
- docker tag nicholasjackson/minke nicholasjackson/minke:1.13.20;
34
- docker push nicholasjackson/minke:1.13.20;
33
+ docker tag nicholasjackson/minke nicholasjackson/minke:1.14.0;
34
+ docker push nicholasjackson/minke:1.14.0;
35
35
  curl https://hooks.microbadger.com/images/nicholasjackson/minke/tkpohfdrYPE0B0TL5NzLcOap4k0=;
36
36
  fi
data/bin/minke CHANGED
@@ -39,6 +39,7 @@ Commonly used command are:
39
39
  build_image : build a docker image
40
40
  push : push built image to the registry
41
41
  encrypt : encrypt secrets with a private key
42
+ shell : start a shell session inside the build container
42
43
  See 'minke COMMAND --help' for more information on a specific command.
43
44
  HELP
44
45
 
@@ -155,6 +156,8 @@ when "run"
155
156
  doCommand(:run, options[:verbose], options[:config])
156
157
  when "push"
157
158
  doCommand(:push, options[:verbose], options[:config])
159
+ when "shell"
160
+ doCommand(:shell, options[:verbose], options[:config])
158
161
  when "generate"
159
162
  if options[:generator] == nil || options[:output] == nil || options[:name] == nil || options[:namespace] == nil
160
163
  puts "Please specify options use: minke generate --help for help on command line options"
data/docker/Gemfile CHANGED
@@ -3,7 +3,7 @@ source 'https://rubygems.org'
3
3
  gem "rake"
4
4
  gem "cucumber"
5
5
 
6
- gem 'minke', "= 1.13.20"
6
+ gem 'minke', "= 1.14.0"
7
7
  gem 'minke-generator-swift', "= 0.4"
8
8
  gem 'minke-generator-netmvc'
9
9
  gem 'minke-generator-go', "= 0.8.6"
data/lib/minke/command.rb CHANGED
@@ -18,12 +18,12 @@ module Minke
18
18
  logger = Minke::Logging.create_logger(self.verbose)
19
19
  shell = Minke::Helpers::Shell.new(logger)
20
20
 
21
- variables = Minke::Generators::ConfigVariables.new.tap do |v|
22
- v.application_name = @config.application_name
23
- v.namespace = @config.namespace
24
- v.src_root = File.expand_path('../')
25
- end
26
-
21
+ # variables = Minke::Generators::ConfigVariables.new.tap do |v|
22
+ # v.application_name = @config.application_name
23
+ # v.namespace = @config.namespace
24
+ # v.src_root = File.expand_path('../')
25
+ # end
26
+
27
27
  task_runner = Minke::Tasks::TaskRunner.new ({
28
28
  :ruby_helper => Minke::Helpers::Ruby.new,
29
29
  :copy_helper => Minke::Helpers::Copy.new,
@@ -74,7 +74,8 @@ module Minke
74
74
  :run => Minke::Tasks::Run.new(dependencies),
75
75
  :build_image => Minke::Tasks::BuildImage.new(dependencies),
76
76
  :cucumber => Minke::Tasks::Cucumber.new(dependencies),
77
- :push => Minke::Tasks::Push.new(dependencies)
77
+ :push => Minke::Tasks::Push.new(dependencies),
78
+ :shell => Minke::Tasks::Shell.new(dependencies)
78
79
  }
79
80
  end
80
81
 
@@ -128,5 +129,11 @@ module Minke
128
129
  tasks[:push].run
129
130
  end
130
131
 
132
+ def shell
133
+ if config.shell != nil
134
+ tasks = create_tasks :shell
135
+ tasks[:shell].run
136
+ end
137
+ end
131
138
  end
132
139
  end
@@ -70,6 +70,13 @@ module Minke
70
70
  # [Optional] if not provided the cucumber commands will not be executed
71
71
  attr_accessor :cucumber
72
72
 
73
+ ##
74
+ # Settings for the build shell phase
75
+ # instance of Minke::Config::Task
76
+ #
77
+ # [Optional] if not provided the shell commands will not be executed
78
+ attr_accessor :shell
79
+
73
80
  ##
74
81
  # Returns the docker_compose file for the given section,
75
82
  # if the section overrides application_compose_file then this is returned
@@ -31,6 +31,8 @@ module Minke
31
31
  config.run = read_task_section file['run'], config.docker unless file['run'] == nil
32
32
  config.cucumber = read_task_section file['cucumber'], config.docker unless file['cucumber'] == nil
33
33
 
34
+ config.shell = read_task_section file['shell'], config.docker unless file['shell'] == nil
35
+
34
36
  return config
35
37
  end
36
38
 
@@ -76,7 +76,7 @@ module Minke
76
76
  "Env" => args[:environment],
77
77
  'WorkingDir' => args[:working_directory],
78
78
  'NetworkMode' => @network,
79
- 'name' => args[:name],
79
+ 'name' => args[:name],
80
80
  'PublishAllPorts' => true
81
81
  )
82
82
 
@@ -97,14 +97,48 @@ module Minke
97
97
  end
98
98
  end
99
99
 
100
-
101
-
102
100
  container.start
103
-
104
101
  thread.join unless args[:deamon] == true
105
102
 
106
103
  success = (container.json['State']['ExitCode'] == 0) ? true: false
107
-
104
+ @logger.error(output) unless success
105
+
106
+ return container, success
107
+ end
108
+
109
+ #
110
+ # create_and_run_blocking_container starts a conatainer of the given image name and executes a command, this method blocks until the container exits
111
+ #
112
+ # Returns:
113
+ # - Docker::Container
114
+ # - sucess (true if command succeded without error)
115
+ def create_and_run_blocking_container args
116
+ # update the timeout for the Excon Http Client
117
+ # set the chunk size to enable streaming of log files
118
+ ::Docker.options = {:chunk_size => 1, :read_timeout => 3600}
119
+ container = ::Docker::Container.create(
120
+ 'Image' => args[:image],
121
+ 'Cmd' => args[:command],
122
+ "Binds" => args[:volumes],
123
+ "Env" => args[:environment],
124
+ 'WorkingDir' => args[:working_directory],
125
+ 'name' => args[:name],
126
+ 'NetworkMode' => @network,
127
+ "OpenStdin" => true,
128
+ "StdinOnce" => true,
129
+ "Tty" => true,
130
+ 'PublishAllPorts' => true
131
+ )
132
+
133
+ container.start
134
+
135
+ STDIN.raw do |stdin|
136
+ container.attach(stdin: stdin, tty: true) do |chunk|
137
+ print chunk
138
+ end
139
+ end
140
+
141
+ success = (container.json['State']['ExitCode'] == 0) ? true: false
108
142
  @logger.error(output) unless success
109
143
 
110
144
  return container, success
@@ -0,0 +1,31 @@
1
+ module Minke
2
+ module Tasks
3
+ class Shell < Task
4
+
5
+ def run args = nil
6
+ @logger.info "## Run shell"
7
+ @logger.info "## Run application with docker compose"
8
+
9
+ compose_file = @config.compose_file_for(@task_name)
10
+ compose_file = File.expand_path(compose_file)
11
+ compose = @docker_compose_factory.create compose_file unless compose_file == nil
12
+
13
+ run_with_block do |pre_tasks, post_tasks|
14
+ begin
15
+ compose.up
16
+ pre_tasks.call
17
+ @logger.info "## Shell open to build container"
18
+ run_command_in_container('/bin/sh', true)
19
+ rescue SystemExit, Interrupt
20
+ @logger.info "Stopping...."
21
+ raise SystemExit
22
+ ensure
23
+ compose.down
24
+ post_tasks.call
25
+ end
26
+ end
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -63,7 +63,7 @@ module Minke
63
63
 
64
64
  ##
65
65
  # runs the given command in a docker container
66
- def run_command_in_container command
66
+ def run_command_in_container command, blocking = false
67
67
  begin
68
68
  @logger.info "Running command: #{command}"
69
69
  settings = @generator_config.build_settings.docker_settings
@@ -85,7 +85,12 @@ module Minke
85
85
  :environment => environment,
86
86
  :working_directory => working_directory
87
87
  }
88
- container, success = @docker_runner.create_and_run_container args
88
+
89
+ if blocking == false
90
+ container, success = @docker_runner.create_and_run_container args
91
+ else
92
+ container, success = @docker_runner.create_and_run_blocking_container args
93
+ end
89
94
 
90
95
  # throw exception if failed
91
96
  raise "Unable to run command #{command}" unless success
data/lib/minke/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Minke
2
- VERSION = "1.13.20"
2
+ VERSION = "1.14.0"
3
3
  end
data/lib/minke.rb CHANGED
@@ -16,6 +16,7 @@ require 'securerandom'
16
16
  require 'sshkey'
17
17
  require 'mkmf'
18
18
  require 'open3'
19
+ require "io/console"
19
20
 
20
21
  require 'minke/version'
21
22
  require 'minke/command'
@@ -45,6 +46,7 @@ require 'minke/tasks/push'
45
46
  require 'minke/tasks/run'
46
47
  require 'minke/tasks/test'
47
48
  require 'minke/tasks/build_image'
49
+ require 'minke/tasks/shell'
48
50
 
49
51
  require 'minke/generators/config'
50
52
  require 'minke/generators/config_processor'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minke
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.20
4
+ version: 1.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nic Jackson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-14 00:00:00.000000000 Z
11
+ date: 2017-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -279,6 +279,7 @@ files:
279
279
  - lib/minke/tasks/fetch.rb
280
280
  - lib/minke/tasks/push.rb
281
281
  - lib/minke/tasks/run.rb
282
+ - lib/minke/tasks/shell.rb
282
283
  - lib/minke/tasks/task.rb
283
284
  - lib/minke/tasks/task_runner.rb
284
285
  - lib/minke/tasks/test.rb