miniexec 0.0.4 → 0.0.9

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.
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