miniexec 0.0.4 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/miniexec +6 -4
  3. data/lib/miniexec.rb +15 -12
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f6d3ec6ebddbfa656fc808948f9b00d4a3d21fc5c9e99cfa57cc1c75ae6ff4db
4
- data.tar.gz: fa30d9899cecab9a7132aa70020b2beb9993470d19ed90f72077a8c4ff290ba9
3
+ metadata.gz: f159f73abf46bbc302ba16f34e5f3ec7eac0fe530e57e06e24e3504f198f2027
4
+ data.tar.gz: 41bd239c0271b589f448de12318397324f2e6ab67e6274caaa79405668119ef7
5
5
  SHA512:
6
- metadata.gz: b9742c67bf8c386046b180c71f7f0370fbdf85c14562876da14c18604a6ee247e47f2c8c939530f4ed505d2374b2c26361e525d3904e51a2e7a5fac22a995ca0
7
- data.tar.gz: e1c7e81a025b817e1701d8029aa7bac7e7552e2dc0ee615c6ddf56fdd098da7771f5745c26419c6a4fa121e6bff4a7b233dbca81889938ba247e41376b187cb3
6
+ metadata.gz: a86c5c2d96807c1572d2a78a6799e05694987f2bee706fb7b9822a6ee0b6d5481bcc43e4aa3a668957b476a30d6dfb5f054aa37956948cd3e9b8d2dac336af4d
7
+ data.tar.gz: 8722200cb309d02e28272ef2977464c1870980442deafacaa0dbd55842eb0fcfab77c0e33bf86bbd2ab18b7c39d48cf67fedbac3225b0ad84848436f36fbfffc
data/bin/miniexec CHANGED
@@ -1,12 +1,16 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
+ lib = File.expand_path('../lib', __dir__)
5
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
6
  require 'miniexec'
5
7
  require 'optparse'
6
8
 
7
9
  options = {
8
10
  binds: [],
9
- env: {}
11
+ env: {},
12
+ path: '.',
13
+ docker: ENV['DOCKER_HOST'] || '/run/docker.sock'
10
14
  }
11
15
 
12
16
  OptionParser.new do |opts|
@@ -34,17 +38,15 @@ OptionParser.new do |opts|
34
38
  end
35
39
  opts.on('-d', '--docker-url URL',
36
40
  'Location of the docker socket') do |sock|
37
- options[:docker] = sock || ENV['DOCKER_HOST'] || '/run/docker.sock'
41
+ options[:docker] = sock
38
42
  end
39
43
  end.parse!
40
44
 
41
45
  raise OptionParser::MissingArgument, 'Specify a job with -j' if options[:job].nil?
42
- raise OptionParser::MissingArgument, 'Specify a job with -p' if options[:path].nil?
43
46
 
44
47
  MiniExec.config(project_path: options[:path])
45
48
  exec = MiniExec.new options[:job],
46
49
  docker_url: options[:docker],
47
50
  binds: options[:binds],
48
51
  env: options[:env]
49
-
50
52
  exec.run_job
data/lib/miniexec.rb CHANGED
@@ -38,7 +38,10 @@ class MiniExec
38
38
  @image = set_job_image
39
39
  @script = compile_script
40
40
  @binds = binds
41
- @env = env.merge gitlab_env, variables
41
+ @env = {}
42
+ @env.merge! env
43
+ @env.merge! gitlab_env
44
+ @env.merge! variables
42
45
  configure_logger
43
46
  Docker.options[:read_timeout] = 6000
44
47
  Docker.url = docker_url if docker_url
@@ -46,11 +49,11 @@ class MiniExec
46
49
 
47
50
  def run_job
48
51
  script_path = "/tmp/#{@job['name']}.sh"
49
- @logger.debug "Fetching image #{@image}"
52
+ @logger.info "Fetching image #{@image}"
50
53
  Docker::Image.create(fromImage: @image)
51
- @logger.debug 'Image fetched'
54
+ @logger.info 'Image fetched'
52
55
  Dir.chdir(@project_path) do
53
- @logger.debug 'Creating container'
56
+ @logger.info 'Creating container'
54
57
  container = Docker::Container.create(
55
58
  Cmd: ['/bin/bash', script_path],
56
59
  Image: @image,
@@ -59,7 +62,7 @@ class MiniExec
59
62
  )
60
63
  container.store_file(script_path, @script)
61
64
  container.start({ Binds: [@binds] })
62
- container.tap(&:start).attach { |_, chunk| @logger.info chunk }
65
+ container.tap(&:start).attach { |_, chunk| puts chunk }
63
66
  end
64
67
  end
65
68
 
@@ -99,8 +102,8 @@ class MiniExec
99
102
  end
100
103
 
101
104
  def variables
102
- globals = @workflow['variables']
103
- job_locals = @job['variables']
105
+ globals = @workflow['variables'] || {}
106
+ job_locals = @job['variables'] || {}
104
107
  globals.merge job_locals
105
108
  end
106
109
 
@@ -109,13 +112,13 @@ class MiniExec
109
112
  @logger.formatter = proc do |severity, _, _, msg|
110
113
  "[#{severity}]: #{msg}\n"
111
114
  end
112
- @logger.level = ENV['LOGLEVEL'] || Logger::WARN
115
+ @logger.level = ENV['LOGLEVEL'] || Logger::INFO
113
116
  end
114
117
 
115
118
  def compile_script
116
- before_script = @job['before_script'] || []
117
- script = @job['script'] || []
118
- after_script = @job['after_script'] || []
119
- (before_script + script + after_script).flatten.join("\n")
119
+ before_script = @job['before_script'] || ''
120
+ script = @job['script'] || ''
121
+ after_script = @job['after_script'] || ''
122
+ [before_script, script, after_script].flatten.join("\n").strip
120
123
  end
121
124
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miniexec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Pugh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-25 00:00:00.000000000 Z
11
+ date: 2021-04-27 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A minimal interpretor/executor for .gitlab-ci.yml
14
14
  email: pugh@s3kr.it