shivers 0.6.0.pre.15 → 0.6.0.pre.15.pr147.2.1
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/Gemfile +8 -0
- data/Gemfile.lock +89 -85
- data/Rakefile +110 -47
- data/lib/shivers/library_version.rb +1 -1
- data/shivers.gemspec +2 -3
- metadata +10 -24
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3aa2a02ad282c56d2b012ddcb134dc840f29e15f3600e35b42f1c85038057a6c
|
|
4
|
+
data.tar.gz: 48a5f321e76929bb583629a55565e83adec0b2f79c4b420653bd63e667b2796f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 18c86c43477717cd54735d82e0e4bb436abe62bea84293d5d9ed4b1f9798d512503236bf3c1e995cec4eb3b57742031a38ffd7b24ef0b16f0f7c8c175a790ec2
|
|
7
|
+
data.tar.gz: 8c7253c9bf1795f9bab365d08ef69fb531032f4962c324e52b2fd75aaf9e04dee4197d7bf3c1d5a8b1f21aeb0f1905c389a529085297d55317cdb579ad214a16
|
data/Gemfile
CHANGED
|
@@ -4,3 +4,11 @@ source 'https://rubygems.org'
|
|
|
4
4
|
|
|
5
5
|
# Specify dependencies in shivers.gemspec
|
|
6
6
|
gemspec
|
|
7
|
+
|
|
8
|
+
# Hold these to their stable lines: a floor-only requirement lets bundler
|
|
9
|
+
# prefer a prerelease build even when a stable release satisfies every
|
|
10
|
+
# dependant.
|
|
11
|
+
gem 'rake_factory', '~> 0.33.0'
|
|
12
|
+
gem 'rake_git', '~> 0.2.0'
|
|
13
|
+
gem 'rake_git_crypt', '~> 0.4.0'
|
|
14
|
+
gem 'ruby_git_crypt', '~> 0.1.0'
|
data/Gemfile.lock
CHANGED
|
@@ -1,146 +1,153 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
shivers (0.6.0.pre.15)
|
|
4
|
+
shivers (0.6.0.pre.15.pr147.2.1)
|
|
5
5
|
semantic (~> 1.6)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
activesupport (
|
|
10
|
+
activesupport (8.1.3)
|
|
11
11
|
base64
|
|
12
12
|
bigdecimal
|
|
13
|
-
concurrent-ruby (~> 1.0, >= 1.
|
|
13
|
+
concurrent-ruby (~> 1.0, >= 1.3.1)
|
|
14
14
|
connection_pool (>= 2.2.5)
|
|
15
15
|
drb
|
|
16
16
|
i18n (>= 1.6, < 2)
|
|
17
|
+
json
|
|
18
|
+
logger (>= 1.4.2)
|
|
17
19
|
minitest (>= 5.1)
|
|
18
|
-
|
|
19
|
-
tzinfo (~> 2.0)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
securerandom (>= 0.3)
|
|
21
|
+
tzinfo (~> 2.0, >= 2.0.5)
|
|
22
|
+
uri (>= 0.13.1)
|
|
23
|
+
addressable (2.9.0)
|
|
24
|
+
public_suffix (>= 2.0.2, < 8.0)
|
|
25
|
+
ast (2.4.3)
|
|
26
|
+
base64 (0.3.0)
|
|
27
|
+
bigdecimal (4.1.2)
|
|
25
28
|
childprocess (5.0.0)
|
|
26
29
|
colored2 (3.1.2)
|
|
27
|
-
concurrent-ruby (1.3.
|
|
28
|
-
connection_pool (
|
|
29
|
-
diff-lcs (1.
|
|
30
|
+
concurrent-ruby (1.3.8)
|
|
31
|
+
connection_pool (3.0.2)
|
|
32
|
+
diff-lcs (1.6.2)
|
|
30
33
|
docile (1.4.1)
|
|
31
|
-
drb (2.2.
|
|
32
|
-
excon (
|
|
33
|
-
fakefs (2.5.0)
|
|
34
|
-
faraday (2.10.0)
|
|
35
|
-
faraday-net_http (>= 2.0, < 3.2)
|
|
34
|
+
drb (2.2.3)
|
|
35
|
+
excon (1.6.0)
|
|
36
36
|
logger
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
fakefs (3.0.0)
|
|
38
|
+
faraday (2.14.3)
|
|
39
|
+
faraday-net_http (>= 2.0, < 3.5)
|
|
40
|
+
json
|
|
41
|
+
logger
|
|
42
|
+
faraday-net_http (3.4.4)
|
|
43
|
+
net-http (~> 0.5)
|
|
44
|
+
ffi (1.17.4)
|
|
45
|
+
ffi (1.17.4-x86_64-linux-gnu)
|
|
46
|
+
gem-release (2.2.4)
|
|
40
47
|
git (1.19.1)
|
|
41
48
|
addressable (~> 2.8)
|
|
42
49
|
rchardet (~> 1.8)
|
|
43
50
|
hamster (3.0.0)
|
|
44
51
|
concurrent-ruby (~> 1.0)
|
|
45
|
-
i18n (1.
|
|
52
|
+
i18n (1.15.2)
|
|
46
53
|
concurrent-ruby (~> 1.0)
|
|
47
|
-
immutable-struct (2.
|
|
48
|
-
json (2.
|
|
49
|
-
language_server-protocol (3.17.0.
|
|
54
|
+
immutable-struct (2.5.0)
|
|
55
|
+
json (2.21.1)
|
|
56
|
+
language_server-protocol (3.17.0.5)
|
|
50
57
|
lino (4.1.0)
|
|
51
58
|
childprocess (~> 5.0.0)
|
|
52
59
|
hamster (~> 3.0)
|
|
53
60
|
open4 (~> 1.3)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
net-http (0.
|
|
58
|
-
uri
|
|
59
|
-
octokit (
|
|
60
|
-
base64
|
|
61
|
+
lint_roller (1.1.0)
|
|
62
|
+
logger (1.7.0)
|
|
63
|
+
minitest (5.27.0)
|
|
64
|
+
net-http (0.9.1)
|
|
65
|
+
uri (>= 0.11.1)
|
|
66
|
+
octokit (10.0.0)
|
|
61
67
|
faraday (>= 1, < 3)
|
|
62
68
|
sawyer (~> 0.9)
|
|
63
69
|
open4 (1.3.4)
|
|
64
|
-
parallel (1.
|
|
65
|
-
parser (3.3.
|
|
70
|
+
parallel (1.27.0)
|
|
71
|
+
parser (3.3.8.0)
|
|
66
72
|
ast (~> 2.4.1)
|
|
67
73
|
racc
|
|
68
|
-
|
|
69
|
-
|
|
74
|
+
prism (1.4.0)
|
|
75
|
+
public_suffix (7.0.5)
|
|
76
|
+
racc (1.8.1)
|
|
70
77
|
rainbow (3.1.1)
|
|
71
|
-
rake (13.2
|
|
72
|
-
|
|
73
|
-
colored2 (~> 3.1)
|
|
74
|
-
excon (~> 0.72)
|
|
75
|
-
rake_factory (~> 0.33)
|
|
76
|
-
sshkey (~> 2.0)
|
|
77
|
-
rake_factory (0.34.0.pre.2)
|
|
78
|
+
rake (13.4.2)
|
|
79
|
+
rake_factory (0.33.0)
|
|
78
80
|
activesupport (>= 4)
|
|
79
81
|
rake (~> 13.0)
|
|
80
|
-
rake_git (0.
|
|
82
|
+
rake_git (0.2.0)
|
|
81
83
|
colored2 (~> 3.1)
|
|
82
84
|
git (~> 1.13, >= 1.13.2)
|
|
83
85
|
rake_factory (~> 0.33)
|
|
84
|
-
rake_git_crypt (0.
|
|
86
|
+
rake_git_crypt (0.4.0)
|
|
85
87
|
colored2 (~> 3.1)
|
|
88
|
+
lino (~> 4.1)
|
|
86
89
|
rake_factory (~> 0.33)
|
|
87
90
|
ruby_git_crypt (~> 0.1)
|
|
88
91
|
ruby_gpg2 (~> 0.12)
|
|
89
|
-
rake_github (0.
|
|
92
|
+
rake_github (0.17.0)
|
|
90
93
|
colored2 (~> 3.1)
|
|
91
|
-
octokit (>=
|
|
94
|
+
octokit (>= 7.0, < 11.0)
|
|
92
95
|
rake_factory (~> 0.33)
|
|
96
|
+
rbnacl (~> 7.1)
|
|
93
97
|
sshkey (~> 2.0)
|
|
94
98
|
rake_gpg (0.20.0)
|
|
95
99
|
rake_factory (~> 0.33)
|
|
96
100
|
ruby_gpg2 (~> 0.12)
|
|
97
|
-
|
|
98
|
-
|
|
101
|
+
rake_slack (0.3.0)
|
|
102
|
+
excon (>= 0.72, < 2.0)
|
|
99
103
|
rake_factory (~> 0.33)
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
rspec (3.13.0)
|
|
104
|
+
rbnacl (7.1.2)
|
|
105
|
+
ffi (~> 1)
|
|
106
|
+
rchardet (1.10.2)
|
|
107
|
+
regexp_parser (2.10.0)
|
|
108
|
+
rspec (3.13.1)
|
|
106
109
|
rspec-core (~> 3.13.0)
|
|
107
110
|
rspec-expectations (~> 3.13.0)
|
|
108
111
|
rspec-mocks (~> 3.13.0)
|
|
109
|
-
rspec-core (3.13.
|
|
112
|
+
rspec-core (3.13.4)
|
|
110
113
|
rspec-support (~> 3.13.0)
|
|
111
|
-
rspec-expectations (3.13.
|
|
114
|
+
rspec-expectations (3.13.5)
|
|
112
115
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
113
116
|
rspec-support (~> 3.13.0)
|
|
114
|
-
rspec-mocks (3.13.
|
|
117
|
+
rspec-mocks (3.13.5)
|
|
115
118
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
116
119
|
rspec-support (~> 3.13.0)
|
|
117
|
-
rspec-support (3.13.
|
|
118
|
-
rubocop (1.
|
|
120
|
+
rspec-support (3.13.4)
|
|
121
|
+
rubocop (1.76.0)
|
|
119
122
|
json (~> 2.3)
|
|
120
|
-
language_server-protocol (
|
|
123
|
+
language_server-protocol (~> 3.17.0.2)
|
|
124
|
+
lint_roller (~> 1.1.0)
|
|
121
125
|
parallel (~> 1.10)
|
|
122
126
|
parser (>= 3.3.0.2)
|
|
123
127
|
rainbow (>= 2.2.2, < 4.0)
|
|
124
|
-
regexp_parser (>= 2.
|
|
125
|
-
|
|
126
|
-
rubocop-ast (>= 1.31.1, < 2.0)
|
|
128
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
|
129
|
+
rubocop-ast (>= 1.45.0, < 2.0)
|
|
127
130
|
ruby-progressbar (~> 1.7)
|
|
128
|
-
unicode-display_width (>= 2.4.0, <
|
|
129
|
-
rubocop-ast (1.
|
|
130
|
-
parser (>= 3.3.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
rubocop (
|
|
131
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
|
132
|
+
rubocop-ast (1.45.0)
|
|
133
|
+
parser (>= 3.3.7.2)
|
|
134
|
+
prism (~> 1.4)
|
|
135
|
+
rubocop-rake (0.7.1)
|
|
136
|
+
lint_roller (~> 1.1)
|
|
137
|
+
rubocop (>= 1.72.1)
|
|
138
|
+
rubocop-rspec (3.6.0)
|
|
139
|
+
lint_roller (~> 1.1)
|
|
140
|
+
rubocop (~> 1.72, >= 1.72.1)
|
|
135
141
|
ruby-progressbar (1.13.0)
|
|
136
|
-
ruby_git_crypt (0.
|
|
142
|
+
ruby_git_crypt (0.1.0)
|
|
137
143
|
immutable-struct (~> 2.4)
|
|
138
144
|
lino (>= 4.1)
|
|
139
145
|
ruby_gpg2 (0.12.0)
|
|
140
146
|
lino (>= 4.1)
|
|
141
|
-
sawyer (0.9.
|
|
147
|
+
sawyer (0.9.3)
|
|
142
148
|
addressable (>= 2.3.5)
|
|
143
149
|
faraday (>= 0.17.3, < 3)
|
|
150
|
+
securerandom (0.4.1)
|
|
144
151
|
semantic (1.6.1)
|
|
145
152
|
simplecov (0.22.0)
|
|
146
153
|
docile (~> 1.1)
|
|
@@ -149,19 +156,15 @@ GEM
|
|
|
149
156
|
simplecov-html (0.12.3)
|
|
150
157
|
simplecov_json_formatter (0.1.4)
|
|
151
158
|
sshkey (2.0.0)
|
|
152
|
-
strscan (3.1.0)
|
|
153
159
|
tzinfo (2.0.6)
|
|
154
160
|
concurrent-ruby (~> 1.0)
|
|
155
|
-
unicode-display_width (
|
|
156
|
-
|
|
161
|
+
unicode-display_width (3.1.4)
|
|
162
|
+
unicode-emoji (~> 4.0, >= 4.0.4)
|
|
163
|
+
unicode-emoji (4.0.4)
|
|
164
|
+
uri (1.1.1)
|
|
157
165
|
|
|
158
166
|
PLATFORMS
|
|
159
|
-
arm64-darwin-21
|
|
160
|
-
arm64-darwin-22
|
|
161
167
|
ruby
|
|
162
|
-
x86_64-darwin-19
|
|
163
|
-
x86_64-darwin-20
|
|
164
|
-
x86_64-darwin-21
|
|
165
168
|
x86_64-linux
|
|
166
169
|
|
|
167
170
|
DEPENDENCIES
|
|
@@ -169,16 +172,17 @@ DEPENDENCIES
|
|
|
169
172
|
fakefs
|
|
170
173
|
gem-release
|
|
171
174
|
rake
|
|
172
|
-
|
|
173
|
-
rake_git
|
|
174
|
-
rake_git_crypt
|
|
175
|
+
rake_factory (~> 0.33.0)
|
|
176
|
+
rake_git (~> 0.2.0)
|
|
177
|
+
rake_git_crypt (~> 0.4.0)
|
|
175
178
|
rake_github
|
|
176
179
|
rake_gpg
|
|
177
|
-
|
|
180
|
+
rake_slack
|
|
178
181
|
rspec
|
|
179
182
|
rubocop
|
|
180
183
|
rubocop-rake
|
|
181
184
|
rubocop-rspec
|
|
185
|
+
ruby_git_crypt (~> 0.1.0)
|
|
182
186
|
shivers!
|
|
183
187
|
simplecov
|
|
184
188
|
|
data/Rakefile
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'fileutils'
|
|
4
|
-
require 'rake_circle_ci'
|
|
5
4
|
require 'rake_git'
|
|
6
5
|
require 'rake_git_crypt'
|
|
7
6
|
require 'rake_github'
|
|
8
7
|
require 'rake_gpg'
|
|
9
|
-
require '
|
|
8
|
+
require 'rake_slack'
|
|
10
9
|
require 'rspec/core/rake_task'
|
|
11
10
|
require 'rubocop/rake_task'
|
|
12
11
|
require 'securerandom'
|
|
13
|
-
require 'yaml'
|
|
14
12
|
|
|
15
13
|
task default: %i[
|
|
16
14
|
library:fix
|
|
@@ -60,13 +58,6 @@ namespace :encryption do
|
|
|
60
58
|
end
|
|
61
59
|
|
|
62
60
|
namespace :keys do
|
|
63
|
-
namespace :deploy do
|
|
64
|
-
RakeSSH.define_key_tasks(
|
|
65
|
-
path: 'config/secrets/ci/',
|
|
66
|
-
comment: 'maintainers@infrablocks.io'
|
|
67
|
-
)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
61
|
namespace :gpg do
|
|
71
62
|
RakeGPG.define_generate_key_task(
|
|
72
63
|
output_directory: 'config/secrets/ci',
|
|
@@ -92,7 +83,6 @@ namespace :secrets do
|
|
|
92
83
|
desc 'Generate all generatable secrets.'
|
|
93
84
|
task generate: %w[
|
|
94
85
|
encryption:passphrase:generate
|
|
95
|
-
keys:deploy:generate
|
|
96
86
|
keys:gpg:generate
|
|
97
87
|
]
|
|
98
88
|
|
|
@@ -116,57 +106,98 @@ namespace :library do
|
|
|
116
106
|
|
|
117
107
|
desc 'Attempt to automatically fix issues with the library'
|
|
118
108
|
task fix: [:'rubocop:autocorrect_all']
|
|
109
|
+
|
|
110
|
+
desc 'Build the library'
|
|
111
|
+
task :build do
|
|
112
|
+
sh 'gem build shivers.gemspec'
|
|
113
|
+
end
|
|
119
114
|
end
|
|
120
115
|
|
|
121
116
|
namespace :test do
|
|
122
117
|
RSpec::Core::RakeTask.new(:unit)
|
|
123
118
|
end
|
|
124
119
|
|
|
125
|
-
RakeCircleCI.define_project_tasks(
|
|
126
|
-
namespace: :circle_ci,
|
|
127
|
-
project_slug: 'github/infrablocks/shivers'
|
|
128
|
-
) do |t|
|
|
129
|
-
circle_ci_config =
|
|
130
|
-
YAML.load_file('config/secrets/circle_ci/config.yaml')
|
|
131
|
-
|
|
132
|
-
t.api_token = circle_ci_config['circle_ci_api_token']
|
|
133
|
-
t.environment_variables = {
|
|
134
|
-
ENCRYPTION_PASSPHRASE:
|
|
135
|
-
File.read('config/secrets/ci/encryption.passphrase')
|
|
136
|
-
.chomp
|
|
137
|
-
}
|
|
138
|
-
t.checkout_keys = []
|
|
139
|
-
t.ssh_keys = [
|
|
140
|
-
{
|
|
141
|
-
hostname: 'github.com',
|
|
142
|
-
private_key: File.read('config/secrets/ci/ssh.private')
|
|
143
|
-
}
|
|
144
|
-
]
|
|
145
|
-
end
|
|
146
|
-
|
|
147
120
|
RakeGithub.define_repository_tasks(
|
|
148
121
|
namespace: :github,
|
|
149
122
|
repository: 'infrablocks/shivers'
|
|
150
123
|
) do |t|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
124
|
+
# Operator's ambient auth. Resolve once and fail fast: a missing,
|
|
125
|
+
# unauthenticated, or absent gh yields an empty string, which would
|
|
126
|
+
# otherwise surface later as an opaque Octokit 401. An empty or
|
|
127
|
+
# whitespace-only GITHUB_TOKEN is treated as absent so an authenticated
|
|
128
|
+
# operator falls through to `gh auth token` rather than hitting the raise.
|
|
129
|
+
github_token = ENV['GITHUB_TOKEN'].to_s.strip
|
|
130
|
+
if github_token.empty?
|
|
131
|
+
github_token = begin
|
|
132
|
+
`gh auth token`
|
|
133
|
+
rescue Errno::ENOENT
|
|
134
|
+
''
|
|
135
|
+
end.strip
|
|
136
|
+
end
|
|
137
|
+
if github_token.empty?
|
|
138
|
+
raise 'No GitHub token available: set GITHUB_TOKEN or run `gh auth login`'
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
t.access_token = github_token
|
|
142
|
+
|
|
143
|
+
# Actions store only: dependabot runs never reach the passphrase — the
|
|
144
|
+
# only pr.yaml job that unlocks git-crypt (prerelease) is guarded to
|
|
145
|
+
# same-repo human PRs. Guard against a locked clone: without
|
|
146
|
+
# it, File.read returns git-crypt ciphertext and github:secrets:ensure
|
|
147
|
+
# silently uploads garbage that only surfaces much later as an opaque
|
|
148
|
+
# GPG unlock failure in the release job.
|
|
149
|
+
passphrase_path = 'config/secrets/ci/encryption.passphrase'
|
|
150
|
+
unless File.exist?(passphrase_path)
|
|
151
|
+
raise "Passphrase file not found: #{passphrase_path} — expected a " \
|
|
152
|
+
'git-crypt-unlocked clone with the CI secrets present'
|
|
153
|
+
end
|
|
154
|
+
passphrase = File.binread(passphrase_path)
|
|
155
|
+
if passphrase.start_with?("\x00GITCRYPT")
|
|
156
|
+
raise 'encryption.passphrase is git-crypt ciphertext — unlock the ' \
|
|
157
|
+
'clone before provisioning'
|
|
158
|
+
end
|
|
159
|
+
t.secrets = [
|
|
160
|
+
{ name: 'ENCRYPTION_PASSPHRASE', value: passphrase.chomp }
|
|
160
161
|
]
|
|
162
|
+
t.environments = [
|
|
163
|
+
{ name: 'release',
|
|
164
|
+
reviewers: [{ team: 'maintainers' }] }
|
|
165
|
+
]
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
namespace :slack do
|
|
169
|
+
RakeSlack.define_notification_tasks do |t|
|
|
170
|
+
t.bot_token = ENV.fetch('SLACK_BOT_TOKEN', nil)
|
|
171
|
+
t.routing_rules = [
|
|
172
|
+
{ when: { type: 'on_hold' },
|
|
173
|
+
channel: 'C038EDCRSQJ', format: :on_hold }, # release
|
|
174
|
+
{ when: { actor: 'dependabot[bot]', outcome: 'success' },
|
|
175
|
+
channel: 'C03N711HVDG', format: :success }, # builds-dependabot
|
|
176
|
+
{ when: { actor: 'dependabot[bot]' },
|
|
177
|
+
channel: 'C03N711HVDG', format: :failure }, # builds-dependabot
|
|
178
|
+
{ when: { outcome: 'success' },
|
|
179
|
+
channel: 'C023XUE76GH', format: :success }, # builds
|
|
180
|
+
# Failures go to builds, not team-dev (org default), to keep noise
|
|
181
|
+
# out of a popular channel while this pipeline beds in.
|
|
182
|
+
{ when: {},
|
|
183
|
+
channel: 'C023XUE76GH', format: :failure } # builds
|
|
184
|
+
]
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
namespace :repository do
|
|
189
|
+
desc 'Set the git author for CI'
|
|
190
|
+
task :set_ci_author do
|
|
191
|
+
sh 'git config --global user.name "InfraBlocks CI"'
|
|
192
|
+
sh 'git config --global user.email "ci@infrablocks.io"'
|
|
193
|
+
end
|
|
161
194
|
end
|
|
162
195
|
|
|
163
196
|
namespace :pipeline do
|
|
164
|
-
desc 'Prepare
|
|
197
|
+
desc 'Prepare GitHub Actions pipeline'
|
|
165
198
|
task prepare: %i[
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
circle_ci:ssh_keys:ensure
|
|
169
|
-
github:deploy_keys:ensure
|
|
199
|
+
github:secrets:ensure
|
|
200
|
+
github:environments:ensure
|
|
170
201
|
]
|
|
171
202
|
end
|
|
172
203
|
|
|
@@ -182,6 +213,38 @@ task :release do
|
|
|
182
213
|
sh 'gem release --tag --push'
|
|
183
214
|
end
|
|
184
215
|
|
|
216
|
+
namespace :prerelease do
|
|
217
|
+
desc 'Build and push a namespaced pre-release to RubyGems ' \
|
|
218
|
+
'(PR CI only; no bump, no tag, no commit, no push)'
|
|
219
|
+
task :publish, %i[pr_number run_number run_attempt] do |_, args|
|
|
220
|
+
%i[pr_number run_number run_attempt].each do |name|
|
|
221
|
+
raise "Missing task argument: #{name}" if args[name].to_s.empty?
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
version_file = 'lib/shivers/library_version.rb'
|
|
225
|
+
version_pattern = /(VERSION\s*=\s*')([^']+)(')/
|
|
226
|
+
source = File.read(version_file)
|
|
227
|
+
base = source[version_pattern, 2]
|
|
228
|
+
raise "Could not read VERSION from #{version_file}" unless base
|
|
229
|
+
|
|
230
|
+
version = "#{base}.pr#{args.pr_number}" \
|
|
231
|
+
".#{args.run_number}.#{args.run_attempt}"
|
|
232
|
+
gem_file = "shivers-#{version}.gem"
|
|
233
|
+
begin
|
|
234
|
+
File.write(version_file,
|
|
235
|
+
source.sub(version_pattern, "\\1#{version}\\3"))
|
|
236
|
+
# Build + push directly: `gem release` aborts on the (deliberately)
|
|
237
|
+
# uncommitted version rewrite. PR CI must not tag, commit, or push
|
|
238
|
+
# (contrast the `release` task).
|
|
239
|
+
sh 'gem build shivers.gemspec'
|
|
240
|
+
sh "gem push #{gem_file}"
|
|
241
|
+
ensure
|
|
242
|
+
File.write(version_file, source)
|
|
243
|
+
rm_f gem_file
|
|
244
|
+
end
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
|
|
185
248
|
def bump_version_for(version_type)
|
|
186
249
|
version_file = 'lib/shivers/library_version.rb'
|
|
187
250
|
|
data/shivers.gemspec
CHANGED
|
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
|
|
|
34
34
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
35
35
|
spec.require_paths = ['lib']
|
|
36
36
|
|
|
37
|
-
spec.required_ruby_version = '>= 3.
|
|
37
|
+
spec.required_ruby_version = '>= 3.3'
|
|
38
38
|
|
|
39
39
|
spec.add_dependency 'semantic', '~> 1.6'
|
|
40
40
|
|
|
@@ -42,12 +42,11 @@ Gem::Specification.new do |spec|
|
|
|
42
42
|
spec.add_development_dependency 'fakefs'
|
|
43
43
|
spec.add_development_dependency 'gem-release'
|
|
44
44
|
spec.add_development_dependency 'rake'
|
|
45
|
-
spec.add_development_dependency 'rake_circle_ci'
|
|
46
45
|
spec.add_development_dependency 'rake_git'
|
|
47
46
|
spec.add_development_dependency 'rake_git_crypt'
|
|
48
47
|
spec.add_development_dependency 'rake_github'
|
|
49
48
|
spec.add_development_dependency 'rake_gpg'
|
|
50
|
-
spec.add_development_dependency '
|
|
49
|
+
spec.add_development_dependency 'rake_slack'
|
|
51
50
|
spec.add_development_dependency 'rspec'
|
|
52
51
|
spec.add_development_dependency 'rubocop'
|
|
53
52
|
spec.add_development_dependency 'rubocop-rake'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: shivers
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.0.pre.15
|
|
4
|
+
version: 0.6.0.pre.15.pr147.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- InfraBlocks Maintainers
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-07-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: semantic
|
|
@@ -80,20 +80,6 @@ dependencies:
|
|
|
80
80
|
- - ">="
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: rake_circle_ci
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - ">="
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '0'
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - ">="
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '0'
|
|
97
83
|
- !ruby/object:Gem::Dependency
|
|
98
84
|
name: rake_git
|
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -151,7 +137,7 @@ dependencies:
|
|
|
151
137
|
- !ruby/object:Gem::Version
|
|
152
138
|
version: '0'
|
|
153
139
|
- !ruby/object:Gem::Dependency
|
|
154
|
-
name:
|
|
140
|
+
name: rake_slack
|
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
|
156
142
|
requirements:
|
|
157
143
|
- - ">="
|
|
@@ -275,7 +261,7 @@ licenses:
|
|
|
275
261
|
- MIT
|
|
276
262
|
metadata:
|
|
277
263
|
rubygems_mfa_required: 'false'
|
|
278
|
-
post_install_message:
|
|
264
|
+
post_install_message:
|
|
279
265
|
rdoc_options: []
|
|
280
266
|
require_paths:
|
|
281
267
|
- lib
|
|
@@ -283,15 +269,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
283
269
|
requirements:
|
|
284
270
|
- - ">="
|
|
285
271
|
- !ruby/object:Gem::Version
|
|
286
|
-
version: '3.
|
|
272
|
+
version: '3.3'
|
|
287
273
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
288
274
|
requirements:
|
|
289
|
-
- - "
|
|
275
|
+
- - ">="
|
|
290
276
|
- !ruby/object:Gem::Version
|
|
291
|
-
version:
|
|
277
|
+
version: '0'
|
|
292
278
|
requirements: []
|
|
293
|
-
rubygems_version: 3.
|
|
294
|
-
signing_key:
|
|
279
|
+
rubygems_version: 3.5.22
|
|
280
|
+
signing_key:
|
|
295
281
|
specification_version: 4
|
|
296
282
|
summary: Semantic version numbers for CI pipelines.
|
|
297
283
|
test_files: []
|