harrison 0.8.0 → 0.9.2
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/.github/workflows/ruby-spec.yml +30 -0
- data/.gitignore +0 -1
- data/CHANGELOG +13 -0
- data/CODEOWNERS +1 -0
- data/Gemfile.lock +79 -0
- data/README.md +0 -2
- data/harrison.gemspec +4 -4
- data/lib/harrison/package.rb +128 -0
- data/lib/harrison/version.rb +1 -1
- metadata +13 -11
- data/.travis.yml +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a145afbc3b9cbd07594d187e9152eb774003e8117587c2d016f7ed05fb16b4c
|
4
|
+
data.tar.gz: 486fb39b730ce546a2fd0721dfb846daf259f9fe04df950bb4882f634a4d7933
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca4e5c1faa31d7c11e12d0ac6c41ba409a5f6796dac19c91b86798ba0db0b34d10effecd724e74873049e9ceed312c055b17fec7a17bd42d481879bfb2be41dd
|
7
|
+
data.tar.gz: 5ade0469ba48eca21d5e2a863c1d554bcf48327996929ecf845a0d1348d0de2fd98b8a220e722ef6c415b7fd40a18c63672265e689147542e10cf0211a57ffd2
|
@@ -0,0 +1,30 @@
|
|
1
|
+
name: ruby-rspec
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- main
|
7
|
+
pull_request:
|
8
|
+
branches:
|
9
|
+
- main
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
test:
|
13
|
+
name: Test with Ruby ${{ matrix.ruby_version }}
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
strategy:
|
16
|
+
matrix:
|
17
|
+
ruby: [2.7, 2.6]
|
18
|
+
|
19
|
+
steps:
|
20
|
+
- uses: actions/checkout@v1
|
21
|
+
- name: Set up Ruby ${{ matrix.ruby }}
|
22
|
+
uses: ruby/setup-ruby@v1
|
23
|
+
with:
|
24
|
+
ruby-version: ${{ matrix.ruby }}
|
25
|
+
|
26
|
+
- name: Build and test with Rspec
|
27
|
+
run: |
|
28
|
+
gem install bundler
|
29
|
+
bundle install --jobs 4 --retry 3
|
30
|
+
bundle exec rspec
|
data/.gitignore
CHANGED
data/CHANGELOG
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
0.9.2
|
2
|
+
-------------------
|
3
|
+
- Bumped dependencies on highline and bundler to latest majors
|
4
|
+
|
5
|
+
0.9.1
|
6
|
+
-------------------
|
7
|
+
- Bumped dependencies on net-ssh and net-scp to latest majors
|
8
|
+
|
9
|
+
0.9.0
|
10
|
+
-------------------
|
11
|
+
- Added ability to package via Docker
|
12
|
+
- Added ability to generate multiple builds from a single invocation (when building via Docker)
|
13
|
+
|
1
14
|
0.8.0
|
2
15
|
-------------------
|
3
16
|
- BREAKING: Bumped required Ruby version to >= 2.3.1
|
data/CODEOWNERS
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
* @puppetlabs/forge-team
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
harrison (0.9.2)
|
5
|
+
highline (~> 2.0.3)
|
6
|
+
net-scp (~> 3.0)
|
7
|
+
net-ssh (~> 6.1)
|
8
|
+
trollop (~> 2.1.2)
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: https://rubygems.org/
|
12
|
+
specs:
|
13
|
+
byebug (11.1.3)
|
14
|
+
coderay (1.1.3)
|
15
|
+
diff-lcs (1.5.0)
|
16
|
+
docile (1.4.0)
|
17
|
+
file-tail (1.2.0)
|
18
|
+
tins (~> 1.0)
|
19
|
+
highline (2.0.3)
|
20
|
+
method_source (1.0.0)
|
21
|
+
net-scp (3.0.0)
|
22
|
+
net-ssh (>= 2.6.5, < 7.0.0)
|
23
|
+
net-ssh (6.1.0)
|
24
|
+
pry (0.13.1)
|
25
|
+
coderay (~> 1.1)
|
26
|
+
method_source (~> 1.0)
|
27
|
+
pry-byebug (3.9.0)
|
28
|
+
byebug (~> 11.0)
|
29
|
+
pry (~> 0.13.0)
|
30
|
+
rake (13.0.6)
|
31
|
+
rspec (3.11.0)
|
32
|
+
rspec-core (~> 3.11.0)
|
33
|
+
rspec-expectations (~> 3.11.0)
|
34
|
+
rspec-mocks (~> 3.11.0)
|
35
|
+
rspec-core (3.11.0)
|
36
|
+
rspec-support (~> 3.11.0)
|
37
|
+
rspec-expectations (3.11.0)
|
38
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
39
|
+
rspec-support (~> 3.11.0)
|
40
|
+
rspec-mocks (3.11.0)
|
41
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
42
|
+
rspec-support (~> 3.11.0)
|
43
|
+
rspec-support (3.11.0)
|
44
|
+
ruby2ruby (2.4.4)
|
45
|
+
ruby_parser (~> 3.1)
|
46
|
+
sexp_processor (~> 4.6)
|
47
|
+
ruby_parser (3.18.1)
|
48
|
+
sexp_processor (~> 4.16)
|
49
|
+
sexp_processor (4.16.0)
|
50
|
+
simplecov (0.21.2)
|
51
|
+
docile (~> 1.1)
|
52
|
+
simplecov-html (~> 0.11)
|
53
|
+
simplecov_json_formatter (~> 0.1)
|
54
|
+
simplecov-html (0.12.3)
|
55
|
+
simplecov_json_formatter (0.1.4)
|
56
|
+
sourcify (0.5.0)
|
57
|
+
file-tail (>= 1.0.5)
|
58
|
+
ruby2ruby (>= 1.2.5)
|
59
|
+
ruby_parser (>= 2.0.5)
|
60
|
+
sexp_processor (>= 3.0.5)
|
61
|
+
sync (0.5.0)
|
62
|
+
tins (1.31.0)
|
63
|
+
sync
|
64
|
+
trollop (2.1.3)
|
65
|
+
|
66
|
+
PLATFORMS
|
67
|
+
x86_64-darwin-18
|
68
|
+
|
69
|
+
DEPENDENCIES
|
70
|
+
bundler (~> 2.3)
|
71
|
+
harrison!
|
72
|
+
pry-byebug
|
73
|
+
rake
|
74
|
+
rspec (~> 3.0)
|
75
|
+
simplecov
|
76
|
+
sourcify
|
77
|
+
|
78
|
+
BUNDLED WITH
|
79
|
+
2.3.7
|
data/README.md
CHANGED
data/harrison.gemspec
CHANGED
@@ -20,11 +20,11 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.required_ruby_version = '>= 2.3.1'
|
21
21
|
|
22
22
|
spec.add_runtime_dependency "trollop", "~> 2.1.2"
|
23
|
-
spec.add_runtime_dependency "net-ssh", "~>
|
24
|
-
spec.add_runtime_dependency "net-scp", "~>
|
25
|
-
spec.add_runtime_dependency "highline", "~>
|
23
|
+
spec.add_runtime_dependency "net-ssh", "~> 6.1"
|
24
|
+
spec.add_runtime_dependency "net-scp", "~> 3.0"
|
25
|
+
spec.add_runtime_dependency "highline", "~> 2.0.3"
|
26
26
|
|
27
|
-
spec.add_development_dependency "bundler", "~>
|
27
|
+
spec.add_development_dependency "bundler", "~> 2.3"
|
28
28
|
spec.add_development_dependency "rake"
|
29
29
|
spec.add_development_dependency "rspec", "~> 3.0"
|
30
30
|
spec.add_development_dependency "simplecov"
|
data/lib/harrison/package.rb
CHANGED
@@ -2,6 +2,8 @@ module Harrison
|
|
2
2
|
class Package < Base
|
3
3
|
def initialize(opts={})
|
4
4
|
# Config helpers for Harrisonfile.
|
5
|
+
self.class.option_helper(:via)
|
6
|
+
self.class.option_helper(:dockerfiles)
|
5
7
|
self.class.option_helper(:host)
|
6
8
|
self.class.option_helper(:commit)
|
7
9
|
self.class.option_helper(:purge)
|
@@ -39,6 +41,8 @@ module Harrison
|
|
39
41
|
# Resolve commit ref to an actual short SHA.
|
40
42
|
resolve_commit!
|
41
43
|
|
44
|
+
return run_docker if self.via == :docker
|
45
|
+
|
42
46
|
if self.host.respond_to?(:call)
|
43
47
|
resolved_host = self.host.call(self)
|
44
48
|
self.host = resolved_host
|
@@ -122,6 +126,130 @@ module Harrison
|
|
122
126
|
|
123
127
|
protected
|
124
128
|
|
129
|
+
def run_docker
|
130
|
+
require 'open3'
|
131
|
+
|
132
|
+
packages = []
|
133
|
+
|
134
|
+
git_worktree_prune_argv = [
|
135
|
+
"git",
|
136
|
+
"worktree",
|
137
|
+
"prune",
|
138
|
+
].join(' ')
|
139
|
+
|
140
|
+
if Harrison::DEBUG
|
141
|
+
system(git_worktree_prune_argv) || (throw :failure)
|
142
|
+
else
|
143
|
+
_, gwtp_err, gwtp_status = Open3.capture3(git_worktree_prune_argv)
|
144
|
+
|
145
|
+
if gwtp_status != 0
|
146
|
+
puts gwtp_err
|
147
|
+
throw :failure
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
begin
|
152
|
+
tmp_dir = Dir.mktmpdir("harrison-#{project}", "/tmp")
|
153
|
+
tmp_src_dir = File.join(tmp_dir, 'src')
|
154
|
+
|
155
|
+
git_worktree_add_argv = [
|
156
|
+
"git",
|
157
|
+
"worktree",
|
158
|
+
"add",
|
159
|
+
"--force", # allow new worktree to check out duplicate branch
|
160
|
+
tmp_src_dir,
|
161
|
+
commit,
|
162
|
+
].join(' ')
|
163
|
+
|
164
|
+
git_worktree_add_env = {
|
165
|
+
"OVERCOMMIT_DISABLE" => "1",
|
166
|
+
}
|
167
|
+
|
168
|
+
if Harrison::DEBUG
|
169
|
+
system(git_worktree_add_env, git_worktree_add_argv) || (throw :failure)
|
170
|
+
else
|
171
|
+
_, gwta_err, gwta_status = Open3.capture3(git_worktree_add_env, git_worktree_add_argv)
|
172
|
+
|
173
|
+
if gwta_status != 0
|
174
|
+
puts gwta_err
|
175
|
+
throw :failure
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
self.dockerfiles.each do |df|
|
180
|
+
df_basename = File.basename(df, '.Dockerfile')
|
181
|
+
docker_image_tag = "#{project}-harrison-#{df_basename}:latest"
|
182
|
+
|
183
|
+
docker_build_argv = [
|
184
|
+
'docker', 'build',
|
185
|
+
'--file', df,
|
186
|
+
'--tag', docker_image_tag,
|
187
|
+
'.',
|
188
|
+
].join(' ')
|
189
|
+
|
190
|
+
puts "Running: #{docker_build_argv}"
|
191
|
+
|
192
|
+
if Harrison::DEBUG
|
193
|
+
system(docker_build_argv) || (throw :failure)
|
194
|
+
else
|
195
|
+
_, build_err, build_status = Open3.capture3(docker_build_argv)
|
196
|
+
|
197
|
+
if build_status != 0
|
198
|
+
puts build_err
|
199
|
+
throw :failure
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
docker_run_argv = [
|
204
|
+
"docker", "run",
|
205
|
+
"--mount", "type=bind,source=#{tmp_src_dir},target=/src,readonly",
|
206
|
+
"--mount", "type=bind,source=\"$(pwd)/pkg\",target=/pkg",
|
207
|
+
docker_image_tag,
|
208
|
+
commit,
|
209
|
+
].join(' ')
|
210
|
+
|
211
|
+
puts "Running: #{docker_run_argv}"
|
212
|
+
|
213
|
+
if Harrison::DEBUG
|
214
|
+
system(docker_run_argv) || (throw :failure)
|
215
|
+
else
|
216
|
+
pkg_out, pkg_err, pkg_status = Open3.capture3(docker_run_argv)
|
217
|
+
|
218
|
+
if pkg_status != 0
|
219
|
+
puts pkg_err
|
220
|
+
throw :failure
|
221
|
+
end
|
222
|
+
pkg_out_lines = pkg_out.split("\n")
|
223
|
+
|
224
|
+
packages << pkg_out_lines[-1]
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
git_worktree_remove_argv = [
|
229
|
+
"git",
|
230
|
+
"worktree",
|
231
|
+
"remove",
|
232
|
+
"--force", # don't care if worktree is unclean
|
233
|
+
tmp_src_dir,
|
234
|
+
].join(' ')
|
235
|
+
|
236
|
+
if Harrison::DEBUG
|
237
|
+
system(git_worktree_remove_argv) || (throw :failure)
|
238
|
+
else
|
239
|
+
_, gwtr_err, gwtr_status = Open3.capture3(git_worktree_remove_argv)
|
240
|
+
|
241
|
+
if gwtr_status != 0
|
242
|
+
puts gwtr_err
|
243
|
+
throw :failure
|
244
|
+
end
|
245
|
+
end
|
246
|
+
ensure
|
247
|
+
FileUtils.rm_rf(tmp_dir, secure: true)
|
248
|
+
end
|
249
|
+
|
250
|
+
puts "\n#{packages.join("\n")}"
|
251
|
+
end
|
252
|
+
|
125
253
|
def remote_project_dir
|
126
254
|
"#{remote_dir}/#{project}"
|
127
255
|
end
|
data/lib/harrison/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: harrison
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jesse Scott
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: trollop
|
@@ -30,56 +30,56 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '6.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '6.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: net-scp
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '3.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '3.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: highline
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 2.0.3
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 2.0.3
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '2.3'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '2.3'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,11 +158,13 @@ executables:
|
|
158
158
|
extensions: []
|
159
159
|
extra_rdoc_files: []
|
160
160
|
files:
|
161
|
+
- ".github/workflows/ruby-spec.yml"
|
161
162
|
- ".gitignore"
|
162
163
|
- ".rspec"
|
163
|
-
- ".travis.yml"
|
164
164
|
- CHANGELOG
|
165
|
+
- CODEOWNERS
|
165
166
|
- Gemfile
|
167
|
+
- Gemfile.lock
|
166
168
|
- IDEAS
|
167
169
|
- LICENSE.txt
|
168
170
|
- README.md
|