miniexec 0.2.2 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/miniexec.rb +13 -8
  3. metadata +31 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 69219c3771eda716d56f9ee00bb7d8a7a9c214b38a35d17d2c14e297a0887420
4
- data.tar.gz: 5ad61f25f0f1f757325e3e05be347ab3eae5d1861853c67ef938cc286fbdecd8
3
+ metadata.gz: 4d9ae78bcac71ba6ec6b8c39dfca84f9ae3626012570b92afa8608287ee424b3
4
+ data.tar.gz: f3622335d05aaf6cd21be3ad23a5be55ccf88daddb00d2cd53b4fb35ff540d1c
5
5
  SHA512:
6
- metadata.gz: d2413f6f8cf00ee930073576d7f82272bb46927ae74bbe0877ab49564ffe37ea2ca5b7183ae62fbc0fe58025d53877cd585b0ee30313116ab67f7aac553a71eb
7
- data.tar.gz: 6b99388154b691babbd489e16e8ea54e711b9451776e99792cdcf9e3bea8798e7295abf6eabb018d7fb5a0f99d444f0d0b481969743e996d7cd2c18a287cf6e2
6
+ metadata.gz: 3c0dc102deb2a3acc3c904311000a2a0ae496457cac33c2fd8a595467cff0c1e364bffe709d10164df24deeb2850ffa88002a25f47cb303c19c1c7cb28744925
7
+ data.tar.gz: 5d244fde357b806c71495233b622a2b215bc7dbb2cd127a2d2d1bc684d7ff86ea12bcc7cff63db5382cacc5965ac02f3703f624b60f3ac208ab1cfd31a242f1f
data/lib/miniexec.rb CHANGED
@@ -41,19 +41,19 @@ module MiniExec
41
41
  @job = @workflow[job]
42
42
  @job['name'] = job
43
43
  @default_image = @workflow['image'] || 'debian:buster-slim'
44
- @image = set_job_image
45
44
  @entrypoint = set_job_entrypoint
46
45
  @binds = binds
47
46
  @mount_cwd = mount_cwd
48
47
  @env = {}
49
48
  [
50
- env,
51
- gitlab_env,
52
49
  @workflow['variables'],
53
- @job['variables']
50
+ @job['variables'],
51
+ gitlab_env,
52
+ env
54
53
  ].each do |var_set|
55
54
  @env.merge!(var_set.transform_values { |v| Util.expand_var(v.to_s, @env) }) if var_set
56
55
  end
56
+ @image = set_job_image
57
57
  @script = compile_script
58
58
  @runlog = []
59
59
  configure_logger
@@ -85,7 +85,7 @@ module MiniExec
85
85
  Volumes: binds.map { |b| { b => { path_parent: 'rw' } } }.inject(:merge),
86
86
  Env: @env.map { |k, v| "#{k}=#{v}" }
87
87
  )
88
- container.store_file(script_path, @script)
88
+ container.store_file(script_path, { content: @script, permissions: 0o0644 })
89
89
  container.start({ Binds: [@binds] })
90
90
  container.tap(&:start).attach { |_, chunk| puts chunk; @runlog.push chunk}
91
91
  @logger.info 'Job finished. Removing container.'
@@ -102,8 +102,8 @@ module MiniExec
102
102
  image = @job['image'] if @job['image'].instance_of?(String)
103
103
  image = @job['image']['name'] if @job['image'].instance_of?(Hash)
104
104
  end
105
-
106
- image || @default_image
105
+ return Util.expand_var(image, @env) if image
106
+ @default_image
107
107
  end
108
108
 
109
109
  def set_job_entrypoint
@@ -152,10 +152,15 @@ module MiniExec
152
152
  end
153
153
 
154
154
  def compile_script
155
+ # This is a bit hacky but we need a way to force the shebang there
156
+ preamble = [
157
+ '#!/bin/bash'
158
+ ].join("\n").strip
159
+
155
160
  before_script = @job['before_script'] || ''
156
161
  script = @job['script'] || ''
157
162
  after_script = @job['after_script'] || ''
158
- [before_script, script, after_script].flatten.join("\n").strip
163
+ [preamble, before_script, script, after_script].flatten.join("\n").strip
159
164
  end
160
165
  end
161
166
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miniexec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.7
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-06-01 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2021-11-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: docker-api
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: git
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.8'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.8'
13
41
  description: A minimal interpretor/executor for .gitlab-ci.yml
14
42
  email: pugh@s3kr.it
15
43
  executables: