itamae 1.12.6 → 1.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +30 -0
- data/CHANGELOG.md +24 -2
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/itamae.gemspec +2 -1
- data/lib/itamae/cli.rb +2 -2
- data/lib/itamae/resource/local_ruby_block.rb +7 -1
- data/lib/itamae/runner.rb +13 -8
- data/lib/itamae/version.rb +1 -1
- data/spec/integration/recipes/default.rb +9 -0
- data/spec/unit/lib/itamae/runner_spec.rb +44 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: debb90e8d8638159b905091113dcc1ad56712b698106eb2d203b1f0e1200a62b
|
4
|
+
data.tar.gz: 4fa5db8123957e48ed172858de9d5decb08bb05838b1eafd119d0427915d703d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 550f1580b5fc523622247738a3e3cbbc0a61996144f3f8a088f05ea2f061154fb4e1e20ea598d4a62891bb99234b1ef45c8867c191ddf5aa5a285d2410e70192
|
7
|
+
data.tar.gz: b99054cf2c631b478bdbe18879d4db7d4e61d5d4864745c29e54d06d8f12c9f78ceae8cf484857d8e7ce7d3a9c5674985f0d536a3f26db5e2c21fa68989d98b4
|
data/.github/workflows/test.yml
CHANGED
@@ -93,9 +93,11 @@ jobs:
|
|
93
93
|
- "2.6"
|
94
94
|
- "2.7"
|
95
95
|
- "3.0"
|
96
|
+
- "3.1"
|
96
97
|
rubyopt:
|
97
98
|
- ""
|
98
99
|
- "--jit"
|
100
|
+
- "--yjit"
|
99
101
|
image:
|
100
102
|
- ubuntu:trusty
|
101
103
|
exclude:
|
@@ -106,6 +108,19 @@ jobs:
|
|
106
108
|
rubyopt: "--jit"
|
107
109
|
- ruby: "2.5"
|
108
110
|
rubyopt: "--jit"
|
111
|
+
# --yjit is available since MRI 3.1
|
112
|
+
- ruby: "2.3"
|
113
|
+
rubyopt: "--yjit"
|
114
|
+
- ruby: "2.4"
|
115
|
+
rubyopt: "--yjit"
|
116
|
+
- ruby: "2.5"
|
117
|
+
rubyopt: "--yjit"
|
118
|
+
- ruby: "2.6"
|
119
|
+
rubyopt: "--yjit"
|
120
|
+
- ruby: "2.7"
|
121
|
+
rubyopt: "--yjit"
|
122
|
+
- ruby: "3.0"
|
123
|
+
rubyopt: "--yjit"
|
109
124
|
|
110
125
|
env:
|
111
126
|
RUBYOPT: ${{ matrix.rubyopt }}
|
@@ -156,9 +171,11 @@ jobs:
|
|
156
171
|
- "2.6"
|
157
172
|
- "2.7"
|
158
173
|
- "3.0"
|
174
|
+
- "3.1"
|
159
175
|
rubyopt:
|
160
176
|
- ""
|
161
177
|
- "--jit"
|
178
|
+
- "--yjit"
|
162
179
|
exclude:
|
163
180
|
# --jit is available since MRI 2.6
|
164
181
|
- ruby: "2.3"
|
@@ -167,6 +184,19 @@ jobs:
|
|
167
184
|
rubyopt: "--jit"
|
168
185
|
- ruby: "2.5"
|
169
186
|
rubyopt: "--jit"
|
187
|
+
# --yjit is available since MRI 3.1
|
188
|
+
- ruby: "2.3"
|
189
|
+
rubyopt: "--yjit"
|
190
|
+
- ruby: "2.4"
|
191
|
+
rubyopt: "--yjit"
|
192
|
+
- ruby: "2.5"
|
193
|
+
rubyopt: "--yjit"
|
194
|
+
- ruby: "2.6"
|
195
|
+
rubyopt: "--yjit"
|
196
|
+
- ruby: "2.7"
|
197
|
+
rubyopt: "--yjit"
|
198
|
+
- ruby: "3.0"
|
199
|
+
rubyopt: "--yjit"
|
170
200
|
|
171
201
|
env:
|
172
202
|
RUBYOPT: ${{ matrix.rubyopt }}
|
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,34 @@
|
|
1
1
|
## Unreleased
|
2
|
-
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.
|
2
|
+
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.14.0...master)
|
3
|
+
|
4
|
+
# v1.14.0
|
5
|
+
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.13.1...v1.14.0)
|
6
|
+
|
7
|
+
Bugfixes
|
8
|
+
|
9
|
+
- [Execute local_ruby_block code inside of chdir-ed block if cwd presented](https://github.com/itamae-kitchen/itamae/pull/355)
|
10
|
+
|
11
|
+
|
12
|
+
## v1.13.1
|
13
|
+
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.13.0...v1.13.1)
|
14
|
+
|
15
|
+
Improvements
|
16
|
+
|
17
|
+
- [Made MFA mandatory for gem releases](https://github.com/itamae-kitchen/itamae/pull/354)
|
18
|
+
|
19
|
+
## v1.13.0
|
20
|
+
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.12.6...v1.13.0)
|
21
|
+
|
22
|
+
Improvements
|
23
|
+
|
24
|
+
- [Support repeatable "node_json" and "node_yaml" options](https://github.com/itamae-kitchen/itamae/pull/351)
|
3
25
|
|
4
26
|
## v1.12.6
|
5
27
|
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.12.5...v1.12.6)
|
6
28
|
|
7
29
|
Bugfixes
|
8
30
|
|
9
|
-
- [Support Psych4.x](https://github.com/itamae-kitchen/itamae/pull/
|
31
|
+
- [Support Psych4.x](https://github.com/itamae-kitchen/itamae/pull/347)
|
10
32
|
|
11
33
|
## v1.12.5
|
12
34
|
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.12.4...v1.12.5)
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -21,7 +21,7 @@ namespace :spec do
|
|
21
21
|
namespace :integration do
|
22
22
|
container_name = 'itamae'
|
23
23
|
|
24
|
-
task :all => ['spec:integration:docker' 'spec:integration:local']
|
24
|
+
task :all => ['spec:integration:docker', 'spec:integration:local']
|
25
25
|
|
26
26
|
desc "Run provision and specs"
|
27
27
|
task :docker => ["docker:boot", "docker:provision", "docker:serverspec", 'docker:clean_docker_container']
|
data/itamae.gemspec
CHANGED
@@ -16,6 +16,7 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.metadata["homepage_uri"] = spec.homepage
|
17
17
|
spec.metadata["source_code_uri"] = "https://github.com/itamae-kitchen/itamae"
|
18
18
|
spec.metadata["changelog_uri"] = "https://github.com/itamae-kitchen/itamae/blob/master/CHANGELOG.md"
|
19
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
19
20
|
else
|
20
21
|
raise "RubyGems 2.0 or newer is required to protect against " \
|
21
22
|
"public gem pushes."
|
@@ -26,7 +27,7 @@ Gem::Specification.new do |spec|
|
|
26
27
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
27
28
|
spec.require_paths = ["lib"]
|
28
29
|
|
29
|
-
spec.add_runtime_dependency "thor"
|
30
|
+
spec.add_runtime_dependency "thor", ">= 1.0.0"
|
30
31
|
spec.add_runtime_dependency "specinfra", [">= 2.64.0", "< 3.0.0"]
|
31
32
|
spec.add_runtime_dependency "hashie"
|
32
33
|
spec.add_runtime_dependency "ansi"
|
data/lib/itamae/cli.rb
CHANGED
@@ -14,8 +14,8 @@ module Itamae
|
|
14
14
|
|
15
15
|
def self.define_exec_options
|
16
16
|
option :recipe_graph, type: :string, desc: "[EXPERIMENTAL] Write recipe dependency graph in DOT", banner: "PATH"
|
17
|
-
option :node_json, type: :string, aliases: ['-j']
|
18
|
-
option :node_yaml, type: :string, aliases: ['-y']
|
17
|
+
option :node_json, type: :string, aliases: ['-j'], repeatable: true
|
18
|
+
option :node_yaml, type: :string, aliases: ['-y'], repeatable: true
|
19
19
|
option :dry_run, type: :boolean, aliases: ['-n']
|
20
20
|
option :shell, type: :string, default: "/bin/sh"
|
21
21
|
option :login_shell, type: :boolean, default: false
|
data/lib/itamae/runner.rb
CHANGED
@@ -91,8 +91,10 @@ module Itamae
|
|
91
91
|
end
|
92
92
|
|
93
93
|
private
|
94
|
+
|
94
95
|
def create_node
|
95
96
|
hash = {}
|
97
|
+
hash.extend(Hashie::Extensions::DeepMerge)
|
96
98
|
|
97
99
|
if @options[:ohai]
|
98
100
|
unless @backend.run_command("which ohai", error: false).exit_status == 0
|
@@ -105,20 +107,23 @@ module Itamae
|
|
105
107
|
hash.merge!(JSON.parse(@backend.run_command("ohai 2>/dev/null").stdout))
|
106
108
|
end
|
107
109
|
|
108
|
-
|
109
|
-
path = File.expand_path(
|
110
|
+
@options.fetch(:node_json, []).each do |name|
|
111
|
+
path = File.expand_path(name)
|
110
112
|
Itamae.logger.info "Loading node data from #{path}..."
|
111
|
-
|
113
|
+
|
114
|
+
hash.deep_merge!(JSON.parse(File.read(path)))
|
112
115
|
end
|
113
116
|
|
114
|
-
|
115
|
-
path = File.expand_path(
|
117
|
+
@options.fetch(:node_yaml, []).each do |name|
|
118
|
+
path = File.expand_path(name)
|
116
119
|
Itamae.logger.info "Loading node data from #{path}..."
|
117
|
-
|
118
|
-
|
120
|
+
|
121
|
+
yaml = YAML.respond_to?(:unsafe_load) ? YAML.unsafe_load(File.read(path)) : YAML.load(File.read(path))
|
122
|
+
hash.deep_merge!(yaml || {})
|
119
123
|
end
|
120
124
|
|
121
|
-
|
125
|
+
# 'hash.dup' ensures that we pass a pristine Hash object without Hashie extensions
|
126
|
+
Node.new(hash.dup, @backend)
|
122
127
|
end
|
123
128
|
|
124
129
|
def prepare_handler
|
data/lib/itamae/version.rb
CHANGED
@@ -527,6 +527,15 @@ local_ruby_block 'execute run_command' do
|
|
527
527
|
end
|
528
528
|
end
|
529
529
|
|
530
|
+
local_ruby_block "pwd with cwd attribute" do
|
531
|
+
cwd "/tmp"
|
532
|
+
block do
|
533
|
+
unless `pwd`.chomp == "/tmp"
|
534
|
+
raise "working directory mismatched"
|
535
|
+
end
|
536
|
+
end
|
537
|
+
end
|
538
|
+
|
530
539
|
execute "touch /tmp/subscribed_from_parent" do
|
531
540
|
action :nothing
|
532
541
|
subscribes :run, 'execute[subscribed from parent]'
|
@@ -28,5 +28,49 @@ module Itamae
|
|
28
28
|
described_class.run(recipes, :local, {})
|
29
29
|
end
|
30
30
|
end
|
31
|
+
|
32
|
+
describe "#initialize" do
|
33
|
+
context "with multiple node_json and node_yaml files" do
|
34
|
+
def build_temp_file(data)
|
35
|
+
file = Tempfile.new
|
36
|
+
file.write data
|
37
|
+
file.close
|
38
|
+
file
|
39
|
+
end
|
40
|
+
|
41
|
+
it "merges hashes and overwrites arrays" do
|
42
|
+
json_one = build_temp_file %({ "vars_from_json": { "one": 1 }, "shared": { "foo": true } })
|
43
|
+
json_two = build_temp_file %({ "vars_from_json": { "two": 2 } })
|
44
|
+
yaml_one = build_temp_file %(
|
45
|
+
vars_from_yaml:
|
46
|
+
three: 3
|
47
|
+
array:
|
48
|
+
- 123
|
49
|
+
shared:
|
50
|
+
bar: false
|
51
|
+
)
|
52
|
+
yaml_two = build_temp_file %(
|
53
|
+
vars_from_yaml:
|
54
|
+
four: 4
|
55
|
+
array:
|
56
|
+
- 456
|
57
|
+
)
|
58
|
+
|
59
|
+
runner = described_class.new(
|
60
|
+
spy,
|
61
|
+
node_json: [json_one.path, json_two.path],
|
62
|
+
node_yaml: [yaml_one.path, yaml_two.path]
|
63
|
+
)
|
64
|
+
|
65
|
+
expect(runner.node[:vars_from_json][:one]).to eq 1
|
66
|
+
expect(runner.node[:vars_from_json][:two]).to eq 2
|
67
|
+
expect(runner.node[:vars_from_yaml][:three]).to eq 3
|
68
|
+
expect(runner.node[:vars_from_yaml][:four]).to eq 4
|
69
|
+
expect(runner.node[:array]).to eq [456]
|
70
|
+
expect(runner.node[:shared][:foo]).to eq true
|
71
|
+
expect(runner.node[:shared][:bar]).to eq false
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
31
75
|
end
|
32
76
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: itamae
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryota Arai
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-07-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: thor
|
@@ -18,14 +18,14 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 1.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version:
|
28
|
+
version: 1.0.0
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: specinfra
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -316,6 +316,7 @@ metadata:
|
|
316
316
|
homepage_uri: https://itamae.kitchen/
|
317
317
|
source_code_uri: https://github.com/itamae-kitchen/itamae
|
318
318
|
changelog_uri: https://github.com/itamae-kitchen/itamae/blob/master/CHANGELOG.md
|
319
|
+
rubygems_mfa_required: 'true'
|
319
320
|
post_install_message:
|
320
321
|
rdoc_options: []
|
321
322
|
require_paths:
|