openvox 8.19.2 → 8.20.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 +4 -4
- data/CHANGELOG.md +30 -13
- data/Gemfile +4 -3
- data/README.md +3 -3
- data/Rakefile +7 -4
- data/lib/puppet/configurer.rb +13 -12
- data/lib/puppet/face/facts.rb +9 -1
- data/lib/puppet/version.rb +1 -1
- data/tasks/vox.rake +23 -0
- metadata +20 -26
- data/tasks/tag.rake +0 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91c67366f80e0f90b53567de5eea991ba6d36d5fa59af42d65a6975c619f119e
|
4
|
+
data.tar.gz: 2c8b8e00d4f6d2d468888e6126ee9bcc5db0f18748164e1c7cf2545cdd27de51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 315686060fd5c3fd1a3df8c7163c5cf737ddd16e2a922175b0dc2901e6bd4763fad7315cbccc06fff944485cfbab6f3d232160e04b72898cdec10076cfbe3474
|
7
|
+
data.tar.gz: 1a5eecd081bc2d6ed326620a01b128056d2336002e0015b0627b0c7789a07be0f25ccc57e03db9f3ffbb35a7ee9e7b55f777bf42acdd03c511211ca11b27ac57
|
data/CHANGELOG.md
CHANGED
@@ -2,36 +2,53 @@
|
|
2
2
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
|
5
|
-
## [8.
|
5
|
+
## [8.20.0](https://github.com/openvoxproject/openvox/tree/8.20.0) (2025-06-27)
|
6
6
|
|
7
|
-
[Full Changelog](https://github.com/openvoxproject/
|
7
|
+
[Full Changelog](https://github.com/openvoxproject/openvox/compare/8.19.2...8.20.0)
|
8
|
+
|
9
|
+
**Implemented enhancements:**
|
10
|
+
|
11
|
+
- Switch from facter to openfact [\#142](https://github.com/OpenVoxProject/openvox/pull/142) ([smortex](https://github.com/smortex))
|
12
|
+
- \(PUP-12083\) Update soft limit warning for fact value & name length [\#137](https://github.com/OpenVoxProject/openvox/pull/137) ([bastelfreak](https://github.com/bastelfreak))
|
13
|
+
|
14
|
+
**Fixed bugs:**
|
15
|
+
|
16
|
+
- Maintain consistent JSON formatting [\#132](https://github.com/OpenVoxProject/openvox/pull/132) ([bastelfreak](https://github.com/bastelfreak))
|
17
|
+
|
18
|
+
**Merged pull requests:**
|
19
|
+
|
20
|
+
- cleanup gem metadata after Perforce-\>OpenVoxProject migration [\#140](https://github.com/OpenVoxProject/openvox/pull/140) ([smortex](https://github.com/smortex))
|
21
|
+
|
22
|
+
## [8.19.2](https://github.com/openvoxproject/openvox/tree/8.19.2) (2025-06-06)
|
23
|
+
|
24
|
+
[Full Changelog](https://github.com/openvoxproject/openvox/compare/8.19.1...8.19.2)
|
8
25
|
|
9
26
|
**Fixed bugs:**
|
10
27
|
|
11
|
-
- server\_facts: Switch implementation-\>serverimplementation [\#107](https://github.com/OpenVoxProject/
|
12
|
-
- Reflect Ruby 3.4 stack trace changes [\#100](https://github.com/OpenVoxProject/
|
13
|
-
- Add base64 as gem dependencies for Ruby 3.4 [\#98](https://github.com/OpenVoxProject/
|
14
|
-
- Add racc gem dependency [\#89](https://github.com/OpenVoxProject/
|
28
|
+
- server\_facts: Switch implementation-\>serverimplementation [\#107](https://github.com/OpenVoxProject/openvox/pull/107) ([binford2k](https://github.com/binford2k))
|
29
|
+
- Reflect Ruby 3.4 stack trace changes [\#100](https://github.com/OpenVoxProject/openvox/pull/100) ([ekohl](https://github.com/ekohl))
|
30
|
+
- Add base64 as gem dependencies for Ruby 3.4 [\#98](https://github.com/OpenVoxProject/openvox/pull/98) ([ekohl](https://github.com/ekohl))
|
31
|
+
- Add racc gem dependency [\#89](https://github.com/OpenVoxProject/openvox/pull/89) ([ekohl](https://github.com/ekohl))
|
15
32
|
|
16
|
-
## [8.19.1](https://github.com/openvoxproject/
|
33
|
+
## [8.19.1](https://github.com/openvoxproject/openvox/tree/8.19.1) (2025-06-03)
|
17
34
|
|
18
|
-
[Full Changelog](https://github.com/openvoxproject/
|
35
|
+
[Full Changelog](https://github.com/openvoxproject/openvox/compare/8.19.0...8.19.1)
|
19
36
|
|
20
37
|
**Fixed bugs:**
|
21
38
|
|
22
|
-
- Fix invalid gemspec in AIO package [\#91](https://github.com/OpenVoxProject/
|
39
|
+
- Fix invalid gemspec in AIO package [\#91](https://github.com/OpenVoxProject/openvox/pull/91) ([smortex](https://github.com/smortex))
|
23
40
|
|
24
|
-
## [8.19.0](https://github.com/openvoxproject/
|
41
|
+
## [8.19.0](https://github.com/openvoxproject/openvox/tree/8.19.0) (2025-05-30)
|
25
42
|
|
26
|
-
[Full Changelog](https://github.com/openvoxproject/
|
43
|
+
[Full Changelog](https://github.com/openvoxproject/openvox/compare/8.18.1...8.19.0)
|
27
44
|
|
28
45
|
**Implemented enhancements:**
|
29
46
|
|
30
|
-
- Add `implementation` fact to agent and server. [\#63](https://github.com/OpenVoxProject/
|
47
|
+
- Add `implementation` fact to agent and server. [\#63](https://github.com/OpenVoxProject/openvox/pull/63) ([ffrank](https://github.com/ffrank))
|
31
48
|
|
32
49
|
**Fixed bugs:**
|
33
50
|
|
34
|
-
- Replace `erase` with `remove`, since it's no longer supported with DNF5 [\#68](https://github.com/OpenVoxProject/
|
51
|
+
- Replace `erase` with `remove`, since it's no longer supported with DNF5 [\#68](https://github.com/OpenVoxProject/openvox/pull/68) ([Stricken1670](https://github.com/Stricken1670))
|
35
52
|
|
36
53
|
|
37
54
|
|
data/Gemfile
CHANGED
@@ -13,10 +13,10 @@ def location_for(place, fake_version = nil)
|
|
13
13
|
end
|
14
14
|
|
15
15
|
# Make sure these gem requirements are in sync with the gempspec. Specifically,
|
16
|
-
# the runtime_dependencies in
|
17
|
-
# (like
|
16
|
+
# the runtime_dependencies in openvox.gemspec match the runtime dependencies here
|
17
|
+
# (like openfact, semantic_puppet, and puppet-resource_api)
|
18
18
|
|
19
|
-
gem "
|
19
|
+
gem "openfact", *location_for(ENV['OPENFACT_LOCATION'] || ["~> 5.0"])
|
20
20
|
gem "semantic_puppet", *location_for(ENV['SEMANTIC_PUPPET_LOCATION'] || ["~> 1.0"])
|
21
21
|
gem "puppet-resource_api", *location_for(ENV['RESOURCE_API_LOCATION'] || ["~> 1.5"])
|
22
22
|
|
@@ -47,6 +47,7 @@ group(:test) do
|
|
47
47
|
gem "rspec", "~> 3.1", require: false
|
48
48
|
gem "rspec-expectations", ["~> 3.9", "!= 3.9.3"]
|
49
49
|
gem "rspec-its", "~> 1.1", require: false
|
50
|
+
gem 'rspec-mocks', '< 3.13.3', require: false # breaking change afterwards: https://github.com/rspec/rspec-mocks/pull/1596
|
50
51
|
gem 'vcr', '~> 6.1', require: false
|
51
52
|
gem 'webmock', '~> 3.0', require: false
|
52
53
|
gem 'webrick', '~> 1.7', require: false
|
data/README.md
CHANGED
@@ -36,9 +36,9 @@ rest of the [developer documents](docs/index.md).
|
|
36
36
|
|
37
37
|
## Licensing
|
38
38
|
|
39
|
-
See [LICENSE](LICENSE) file. OpenVox is licensed by
|
40
|
-
implementation of Puppet.
|
41
|
-
Puppet itself is licensed by Puppet, Inc. under the Apache license. Puppet, Inc. can be contacted at: info@puppet.com
|
39
|
+
See [LICENSE](LICENSE) file. OpenVox is licensed by the OpenVox Project as a community maintained
|
40
|
+
implementation of Puppet. The OpenVox Project can be contacted at: openvox@voxpupuli.org.
|
41
|
+
Puppet itself is licensed by Puppet, Inc. under the Apache license. Puppet, Inc. can be contacted at: info@puppet.com.
|
42
42
|
|
43
43
|
## Support
|
44
44
|
|
data/Rakefile
CHANGED
@@ -59,7 +59,7 @@ end
|
|
59
59
|
namespace :pl_ci do
|
60
60
|
desc 'Build puppet gems'
|
61
61
|
task :gem_build, [:gemspec] do |t, args|
|
62
|
-
args.with_defaults(gemspec: '
|
62
|
+
args.with_defaults(gemspec: 'openvox.gemspec')
|
63
63
|
stdout, stderr, status = Open3.capture3(<<~END)
|
64
64
|
gem build #{args.gemspec} --platform x86-mingw32 && \
|
65
65
|
gem build #{args.gemspec} --platform x64-mingw32 && \
|
@@ -79,11 +79,11 @@ namespace :pl_ci do
|
|
79
79
|
# this is taken from `rake package:nightly_gem`
|
80
80
|
extended_dot_version = %x{git describe --tags --dirty --abbrev=7}.chomp.tr('-', '.')
|
81
81
|
|
82
|
-
# we must create tempfile in the same directory as
|
82
|
+
# we must create tempfile in the same directory as openvox.gemspec, since
|
83
83
|
# it uses __dir__ to determine which files to include
|
84
84
|
require 'tempfile'
|
85
85
|
Tempfile.create('gemspec', __dir__) do |dst|
|
86
|
-
File.open('
|
86
|
+
File.open('openvox.gemspec', 'r') do |src|
|
87
87
|
src.readlines.each do |line|
|
88
88
|
if line.match?(/version\s*=\s*['"][0-9.]+['"]/)
|
89
89
|
line = "spec.version = '#{extended_dot_version}'"
|
@@ -158,7 +158,7 @@ begin
|
|
158
158
|
All notable changes to this project will be documented in this file.
|
159
159
|
HEADER
|
160
160
|
config.user = "openvoxproject"
|
161
|
-
config.project = "
|
161
|
+
config.project = "openvox"
|
162
162
|
config.exclude_labels = %w[dependencies duplicate question invalid wontfix wont-fix modulesync skip-changelog]
|
163
163
|
config.since_tag = "8.18.1"
|
164
164
|
config.future_release = Puppet::PUPPETVERSION
|
@@ -169,3 +169,6 @@ rescue LoadError
|
|
169
169
|
abort("Run `bundle install --with release` to install the `github_changelog_generator` gem.")
|
170
170
|
end
|
171
171
|
end
|
172
|
+
|
173
|
+
desc 'Prepare for a release'
|
174
|
+
task 'release:prepare' => [:changelog]
|
data/lib/puppet/configurer.rb
CHANGED
@@ -135,36 +135,37 @@ class Puppet::Configurer
|
|
135
135
|
Puppet.warning _("The current total number of fact values: %{size} exceeds the fact values limit: %{max_size}") % { size: size, max_size: max_number }
|
136
136
|
end
|
137
137
|
|
138
|
-
def warn_fact_name_length(name, max_length)
|
139
|
-
Puppet.warning _("Fact %{name} with length:
|
138
|
+
def warn_fact_name_length(name, max_length, fact_name_length)
|
139
|
+
Puppet.warning _("Fact %{name} with length: %{length} exceeds the fact name length limit: %{limit}") % { name: name, length: fact_name_length, limit: max_length }
|
140
140
|
end
|
141
141
|
|
142
142
|
def warn_number_of_top_level_facts(size, max_number)
|
143
143
|
Puppet.warning _("The current number of top level facts: %{size} exceeds the top facts limit: %{max_size}") % { size: size, max_size: max_number }
|
144
144
|
end
|
145
145
|
|
146
|
-
def warn_fact_value_length(value, max_length)
|
147
|
-
Puppet.warning _("Fact value
|
146
|
+
def warn_fact_value_length(name, value, max_length)
|
147
|
+
Puppet.warning _("Fact %{name} with value %{value} with the value length: %{length} exceeds the value length limit: %{max_length}") % { name: name, value: value, length: value.to_s.bytesize, max_length: max_length }
|
148
148
|
end
|
149
149
|
|
150
150
|
def warn_fact_payload_size(payload, max_size)
|
151
|
-
Puppet.warning _("Payload with the current size of:
|
151
|
+
Puppet.warning _("Payload with the current size of: %{payload} exceeds the payload size limit: %{max_size}") % { payload: payload, max_size: max_size }
|
152
152
|
end
|
153
153
|
|
154
|
-
def check_fact_name_length(
|
154
|
+
def check_fact_name_length(fact_path, number_of_dots)
|
155
155
|
max_length = Puppet[:fact_name_length_soft_limit]
|
156
156
|
return if max_length.zero?
|
157
157
|
|
158
|
+
name_without_dots = fact_path.join()
|
158
159
|
# rough byte size estimations of fact path as a postgresql btree index
|
159
|
-
size_as_btree_index = 8 + (number_of_dots * 2) +
|
160
|
-
warn_fact_name_length(
|
160
|
+
size_as_btree_index = 8 + (number_of_dots * 2) + name_without_dots.to_s.bytesize
|
161
|
+
warn_fact_name_length(fact_path.join('.'), max_length, size_as_btree_index) if size_as_btree_index > max_length
|
161
162
|
end
|
162
163
|
|
163
|
-
def check_fact_values_length(values)
|
164
|
+
def check_fact_values_length(name, values)
|
164
165
|
max_length = Puppet[:fact_value_length_soft_limit]
|
165
166
|
return if max_length.zero?
|
166
167
|
|
167
|
-
warn_fact_value_length(values, max_length) if values.to_s.bytesize > max_length
|
168
|
+
warn_fact_value_length(name, values, max_length) if values.to_s.bytesize > max_length
|
168
169
|
end
|
169
170
|
|
170
171
|
def check_top_level_number_limit(size)
|
@@ -204,8 +205,8 @@ class Puppet::Configurer
|
|
204
205
|
path.pop
|
205
206
|
end
|
206
207
|
else
|
207
|
-
check_fact_name_length(path
|
208
|
-
check_fact_values_length(object)
|
208
|
+
check_fact_name_length(path, path.size)
|
209
|
+
check_fact_values_length(path.join('.'), object)
|
209
210
|
@number_of_facts += 1
|
210
211
|
end
|
211
212
|
end
|
data/lib/puppet/face/facts.rb
CHANGED
@@ -167,7 +167,15 @@ Puppet::Indirector::Face.define(:facts, '0.0.1') do
|
|
167
167
|
|
168
168
|
case result
|
169
169
|
when Array, Hash
|
170
|
-
|
170
|
+
# JSON < 2.8.0 would pretty print empty arrays and hashes with newlines
|
171
|
+
# Maintain that behavior for our users for now
|
172
|
+
if result.is_a?(Array) && result.empty?
|
173
|
+
"[\n\n]"
|
174
|
+
elsif result.is_a?(Hash) && result.empty?
|
175
|
+
"{\n}"
|
176
|
+
else
|
177
|
+
Puppet::Util::Json.dump(result, :pretty => true)
|
178
|
+
end
|
171
179
|
else # one of VALID_TYPES above
|
172
180
|
result
|
173
181
|
end
|
data/lib/puppet/version.rb
CHANGED
data/tasks/vox.rake
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
namespace :vox do
|
2
|
+
desc 'Update the version in preparation for a release'
|
3
|
+
task 'version:bump:full', [:version] do |_, args|
|
4
|
+
abort 'You must provide a tag.' if args[:version].nil? || args[:version].empty?
|
5
|
+
version = args[:version]
|
6
|
+
abort "#{version} does not appear to be a valid version string in x.y.z format" unless Gem::Version.correct?(version)
|
7
|
+
|
8
|
+
# Update lib/puppet/version.rb and openvox.gemspec
|
9
|
+
puts "Setting version to #{version}"
|
10
|
+
|
11
|
+
data = File.read('lib/puppet/version.rb')
|
12
|
+
new_data = data.sub(/PUPPETVERSION = '\d+\.\d+\.\d+(\.rc\d+)?'/, "PUPPETVERSION = '#{version}'")
|
13
|
+
warn 'Failed to update version in lib/puppet/version.rb' if data == new_data
|
14
|
+
|
15
|
+
File.write('lib/puppet/version.rb', new_data)
|
16
|
+
|
17
|
+
data = File.read('openvox.gemspec')
|
18
|
+
new_data = data.sub(/spec.version = "\d+\.\d+\.\d+(\.rc\d+)?"/, "spec.version = \"#{version}\"")
|
19
|
+
warn 'Failed to update version in openvox.gemspec' if data == new_data
|
20
|
+
|
21
|
+
File.write('openvox.gemspec', new_data)
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openvox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.
|
4
|
+
version: 8.20.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- OpenVox Project
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
10
|
date: 2012-08-17 00:00:00.000000000 Z
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
version: '0.1'
|
19
19
|
- - "<"
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '0.
|
21
|
+
version: '0.4'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -28,7 +28,7 @@ dependencies:
|
|
28
28
|
version: '0.1'
|
29
29
|
- - "<"
|
30
30
|
- !ruby/object:Gem::Version
|
31
|
-
version: '0.
|
31
|
+
version: '0.4'
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: benchmark
|
34
34
|
requirement: !ruby/object:Gem::Requirement
|
@@ -77,26 +77,6 @@ dependencies:
|
|
77
77
|
- - "~>"
|
78
78
|
- !ruby/object:Gem::Version
|
79
79
|
version: '1.0'
|
80
|
-
- !ruby/object:Gem::Dependency
|
81
|
-
name: facter
|
82
|
-
requirement: !ruby/object:Gem::Requirement
|
83
|
-
requirements:
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: 4.3.0
|
87
|
-
- - "<"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '5'
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 4.3.0
|
97
|
-
- - "<"
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: '5'
|
100
80
|
- !ruby/object:Gem::Dependency
|
101
81
|
name: fast_gettext
|
102
82
|
requirement: !ruby/object:Gem::Requirement
|
@@ -159,6 +139,20 @@ dependencies:
|
|
159
139
|
- - "~>"
|
160
140
|
- !ruby/object:Gem::Version
|
161
141
|
version: '1.13'
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: openfact
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - "~>"
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '5.0'
|
149
|
+
type: :runtime
|
150
|
+
prerelease: false
|
151
|
+
version_requirements: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - "~>"
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '5.0'
|
162
156
|
- !ruby/object:Gem::Dependency
|
163
157
|
name: ostruct
|
164
158
|
requirement: !ruby/object:Gem::Requirement
|
@@ -232,7 +226,7 @@ dependencies:
|
|
232
226
|
description: |
|
233
227
|
OpenVox is a community implementation of Puppet, an automated administrative engine for your Linux, Unix, and Windows systems, performs administrative tasks
|
234
228
|
(such as adding users, installing packages, and updating server configurations) based on a centralized specification.
|
235
|
-
email: openvox@voxpupuli.org
|
229
|
+
email: openvox@voxpupuli.org
|
236
230
|
executables:
|
237
231
|
- puppet
|
238
232
|
extensions: []
|
@@ -1339,7 +1333,7 @@ files:
|
|
1339
1333
|
- man/man8/puppet-script.8
|
1340
1334
|
- man/man8/puppet-ssl.8
|
1341
1335
|
- man/man8/puppet.8
|
1342
|
-
- tasks/
|
1336
|
+
- tasks/vox.rake
|
1343
1337
|
homepage: https://github.com/OpenVoxProject/puppet
|
1344
1338
|
licenses:
|
1345
1339
|
- Apache-2.0
|
data/tasks/tag.rake
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
namespace :vox do
|
2
|
-
desc 'Update version, create tag, and push to origin'
|
3
|
-
task :tag, [:tag] do |_, args|
|
4
|
-
abort 'You must provide a tag.' if args[:tag].nil? || args[:tag].empty?
|
5
|
-
version = args[:tag]
|
6
|
-
abort "#{version} does not appear to be a valid version string in x.y.z format" unless Gem::Version.correct?(version)
|
7
|
-
|
8
|
-
# Update lib/puppet/version.rb and puppet.gemspec
|
9
|
-
puts "Setting version to #{version}"
|
10
|
-
data = File.read('lib/puppet/version.rb')
|
11
|
-
data = data.sub(/PUPPETVERSION = '\d+\.\d+\.\d+'/, "PUPPETVERSION = '#{version}'")
|
12
|
-
File.write('lib/puppet/version.rb', data)
|
13
|
-
data = File.read('puppet.gemspec')
|
14
|
-
data = data.sub(/spec.version = "\d+\.\d+\.\d+"/, "spec.version = \"#{version}\"")
|
15
|
-
File.write('puppet.gemspec', data)
|
16
|
-
run_command("git add lib/puppet/version.rb && git add puppet.gemspec && git commit -m 'Set version to #{version}'")
|
17
|
-
|
18
|
-
# Run git command to get short SHA and one line description of the commit on HEAD
|
19
|
-
branch = run_command('git rev-parse --abbrev-ref HEAD')
|
20
|
-
sha = run_command('git rev-parse --short HEAD')
|
21
|
-
msg = run_command('git log -n 1 --pretty=%B')
|
22
|
-
|
23
|
-
puts "Branch: #{branch}"
|
24
|
-
puts "SHA: #{sha}"
|
25
|
-
puts "Commit: #{msg}"
|
26
|
-
|
27
|
-
run_command("git tag -a #{version} -m '#{version}'")
|
28
|
-
|
29
|
-
unless !ENV['NOPUSH'].nil?
|
30
|
-
puts "Pushing to origin"
|
31
|
-
run_command("git push origin && git push origin #{version}")
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|