rake_dependencies 3.14.0.pre.1 → 3.14.0.pre.1.pr228.3.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.lock +6 -12
- data/README.md +4 -4
- data/Rakefile +116 -45
- data/lib/rake_dependencies/version.rb +1 -1
- data/rake_dependencies.gemspec +1 -2
- metadata +2 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 896ce75eff64aad976e72f15eb66aae855fae3e5715768a7e986b422d33214b7
|
|
4
|
+
data.tar.gz: 7f36f8599a472a91d3750f89e2e43f1566de940ee27cac87b83320429d1e2aad
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fbbd02d4dbce1848a86a7ba9711af58cf947e95bb101d6c49905bdda62614accf00701048c02f474ec4dbc4302f5a417f80d9d4c6f530624e9d423b4561b3bd8
|
|
7
|
+
data.tar.gz: a15ea14a360137aa61671ec40e2028ec96cdc900ea79897ff5725a92f1dccf622b612f2b904db282f03f1573da68415bdaddb908d7604dc463fad22560e96bc4
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
rake_dependencies (3.14.0.pre.1)
|
|
4
|
+
rake_dependencies (3.14.0.pre.1.pr228.3.1)
|
|
5
5
|
down (~> 5.3)
|
|
6
6
|
hamster (~> 3.0)
|
|
7
7
|
minitar (>= 1.0, < 2.0)
|
|
@@ -39,7 +39,8 @@ GEM
|
|
|
39
39
|
addressable (~> 2.8)
|
|
40
40
|
base64 (~> 0.3)
|
|
41
41
|
drb (2.2.3)
|
|
42
|
-
excon (
|
|
42
|
+
excon (1.6.0)
|
|
43
|
+
logger
|
|
43
44
|
fakefs (3.0.1)
|
|
44
45
|
faraday (2.14.3)
|
|
45
46
|
faraday-net_http (>= 2.0, < 3.5)
|
|
@@ -82,11 +83,6 @@ GEM
|
|
|
82
83
|
racc (1.8.1)
|
|
83
84
|
rainbow (3.1.1)
|
|
84
85
|
rake (13.4.2)
|
|
85
|
-
rake_circle_ci (0.13.0)
|
|
86
|
-
colored2 (~> 3.1)
|
|
87
|
-
excon (~> 0.72)
|
|
88
|
-
rake_factory (~> 0.33)
|
|
89
|
-
sshkey (~> 2.0)
|
|
90
86
|
rake_factory (0.33.0)
|
|
91
87
|
activesupport (>= 4)
|
|
92
88
|
rake (~> 13.0)
|
|
@@ -109,10 +105,9 @@ GEM
|
|
|
109
105
|
rake_gpg (0.20.0)
|
|
110
106
|
rake_factory (~> 0.33)
|
|
111
107
|
ruby_gpg2 (~> 0.12)
|
|
112
|
-
|
|
113
|
-
|
|
108
|
+
rake_slack (0.3.0)
|
|
109
|
+
excon (>= 0.72, < 2.0)
|
|
114
110
|
rake_factory (~> 0.33)
|
|
115
|
-
sshkey (~> 2.0)
|
|
116
111
|
rbnacl (7.1.2)
|
|
117
112
|
ffi (~> 1)
|
|
118
113
|
rchardet (1.8.0)
|
|
@@ -183,13 +178,12 @@ DEPENDENCIES
|
|
|
183
178
|
fakefs
|
|
184
179
|
gem-release
|
|
185
180
|
rake
|
|
186
|
-
rake_circle_ci
|
|
187
181
|
rake_dependencies!
|
|
188
182
|
rake_git
|
|
189
183
|
rake_git_crypt
|
|
190
184
|
rake_github
|
|
191
185
|
rake_gpg
|
|
192
|
-
|
|
186
|
+
rake_slack
|
|
193
187
|
rspec
|
|
194
188
|
rubocop
|
|
195
189
|
rubocop-rake
|
data/README.md
CHANGED
|
@@ -310,16 +310,16 @@ release a new version, update the version number in `version.rb`, and then run
|
|
|
310
310
|
git commits and tags, and push the `.gem` file to
|
|
311
311
|
[rubygems.org](https://rubygems.org).
|
|
312
312
|
|
|
313
|
-
### Managing
|
|
313
|
+
### Managing CI keys
|
|
314
314
|
|
|
315
|
-
To encrypt a GPG key for use by
|
|
315
|
+
To encrypt a GPG key for use by CI:
|
|
316
316
|
|
|
317
317
|
```bash
|
|
318
318
|
openssl aes-256-cbc \
|
|
319
319
|
-e \
|
|
320
320
|
-md sha1 \
|
|
321
321
|
-in ./config/secrets/ci/gpg.private \
|
|
322
|
-
-out ./.
|
|
322
|
+
-out ./.github/gpg.private.enc \
|
|
323
323
|
-k "<passphrase>"
|
|
324
324
|
```
|
|
325
325
|
|
|
@@ -329,7 +329,7 @@ To check decryption is working correctly:
|
|
|
329
329
|
openssl aes-256-cbc \
|
|
330
330
|
-d \
|
|
331
331
|
-md sha1 \
|
|
332
|
-
-in ./.
|
|
332
|
+
-in ./.github/gpg.private.enc \
|
|
333
333
|
-k "<passphrase>"
|
|
334
334
|
```
|
|
335
335
|
|
data/Rakefile
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'rake_circle_ci'
|
|
4
3
|
require 'rake_git'
|
|
5
4
|
require 'rake_git_crypt'
|
|
6
5
|
require 'rake_github'
|
|
7
6
|
require 'rake_gpg'
|
|
8
|
-
require '
|
|
7
|
+
require 'rake_slack'
|
|
9
8
|
require 'rspec/core/rake_task'
|
|
10
9
|
require 'rubocop/rake_task'
|
|
11
10
|
require 'securerandom'
|
|
12
|
-
require 'yaml'
|
|
13
11
|
|
|
14
12
|
task default: %i[
|
|
15
13
|
library:fix
|
|
@@ -59,13 +57,6 @@ namespace :encryption do
|
|
|
59
57
|
end
|
|
60
58
|
|
|
61
59
|
namespace :keys do
|
|
62
|
-
namespace :deploy do
|
|
63
|
-
RakeSSH.define_key_tasks(
|
|
64
|
-
path: 'config/secrets/ci/',
|
|
65
|
-
comment: 'maintainers@infrablocks.io'
|
|
66
|
-
)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
60
|
namespace :gpg do
|
|
70
61
|
RakeGPG.define_generate_key_task(
|
|
71
62
|
output_directory: 'config/secrets/ci',
|
|
@@ -91,7 +82,6 @@ namespace :secrets do
|
|
|
91
82
|
desc 'Generate all generatable secrets.'
|
|
92
83
|
task generate: %w[
|
|
93
84
|
encryption:passphrase:generate
|
|
94
|
-
keys:deploy:generate
|
|
95
85
|
keys:gpg:generate
|
|
96
86
|
]
|
|
97
87
|
|
|
@@ -115,57 +105,106 @@ namespace :library do
|
|
|
115
105
|
|
|
116
106
|
desc 'Attempt to automatically fix issues with the library'
|
|
117
107
|
task fix: [:'rubocop:autocorrect_all']
|
|
108
|
+
|
|
109
|
+
desc 'Build the library'
|
|
110
|
+
task :build do
|
|
111
|
+
sh 'gem build rake_dependencies.gemspec'
|
|
112
|
+
end
|
|
118
113
|
end
|
|
119
114
|
|
|
120
115
|
namespace :test do
|
|
121
116
|
RSpec::Core::RakeTask.new(:unit)
|
|
122
117
|
end
|
|
123
118
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
119
|
+
namespace :slack do
|
|
120
|
+
RakeSlack.define_notification_tasks do |t|
|
|
121
|
+
t.bot_token = ENV.fetch('SLACK_BOT_TOKEN', nil)
|
|
122
|
+
t.routing_rules = [
|
|
123
|
+
{ when: { type: 'on_hold' },
|
|
124
|
+
channel: 'C038EDCRSQJ', format: :on_hold }, # release
|
|
125
|
+
{ when: { actor: 'dependabot[bot]', outcome: 'success' },
|
|
126
|
+
channel: 'C03N711HVDG', format: :success }, # builds-dependabot
|
|
127
|
+
{ when: { actor: 'dependabot[bot]' },
|
|
128
|
+
channel: 'C03N711HVDG', format: :failure }, # builds-dependabot
|
|
129
|
+
{ when: { outcome: 'success' },
|
|
130
|
+
channel: 'C023XUE76GH', format: :success }, # builds
|
|
131
|
+
# Failures go to builds, not team-dev (org default), to keep noise
|
|
132
|
+
# out of a popular channel while this pipeline beds in.
|
|
133
|
+
{ when: {},
|
|
134
|
+
channel: 'C023XUE76GH', format: :failure } # builds
|
|
135
|
+
]
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
namespace :repository do
|
|
140
|
+
desc 'Set the git author for CI'
|
|
141
|
+
task :set_ci_author do
|
|
142
|
+
sh 'git config --global user.name "InfraBlocks CI"'
|
|
143
|
+
sh 'git config --global user.email "ci@infrablocks.io"'
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# Operator's ambient auth. Resolve once and fail fast: a missing,
|
|
148
|
+
# unauthenticated, or absent gh yields an empty string, which would
|
|
149
|
+
# otherwise surface later as an opaque Octokit 401. An empty or
|
|
150
|
+
# whitespace-only GITHUB_TOKEN is treated as absent so an authenticated
|
|
151
|
+
# operator falls through to `gh auth token` rather than hitting the raise.
|
|
152
|
+
def github_access_token
|
|
153
|
+
token = ENV['GITHUB_TOKEN'].to_s.strip
|
|
154
|
+
token = gh_auth_token if token.empty?
|
|
155
|
+
return token unless token.empty?
|
|
156
|
+
|
|
157
|
+
raise 'No GitHub token available: set GITHUB_TOKEN or run `gh auth login`'
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def gh_auth_token
|
|
161
|
+
`gh auth token`.strip
|
|
162
|
+
rescue Errno::ENOENT
|
|
163
|
+
''
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# Actions store only: dependabot runs never reach the passphrase — the
|
|
167
|
+
# only pr.yaml job that unlocks git-crypt (prerelease) is guarded to
|
|
168
|
+
# same-repo human PRs. Guard against a locked clone: without it, File.read
|
|
169
|
+
# returns git-crypt ciphertext and github:secrets:ensure silently uploads
|
|
170
|
+
# garbage that only surfaces much later as an opaque GPG unlock failure in
|
|
171
|
+
# the release job.
|
|
172
|
+
def ci_encryption_passphrase
|
|
173
|
+
path = 'config/secrets/ci/encryption.passphrase'
|
|
174
|
+
unless File.exist?(path)
|
|
175
|
+
raise "Passphrase file not found: #{path} — expected a " \
|
|
176
|
+
'git-crypt-unlocked clone with the CI secrets present'
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
ensure_unlocked(File.binread(path)).chomp
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def ensure_unlocked(passphrase)
|
|
183
|
+
return passphrase unless passphrase.start_with?("\x00GITCRYPT")
|
|
184
|
+
|
|
185
|
+
raise 'encryption.passphrase is git-crypt ciphertext — unlock the ' \
|
|
186
|
+
'clone before provisioning'
|
|
144
187
|
end
|
|
145
188
|
|
|
146
189
|
RakeGithub.define_repository_tasks(
|
|
147
190
|
namespace: :github,
|
|
148
191
|
repository: 'infrablocks/rake_dependencies'
|
|
149
192
|
) do |t|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
t.
|
|
155
|
-
{
|
|
156
|
-
|
|
157
|
-
public_key: File.read('config/secrets/ci/ssh.public')
|
|
158
|
-
}
|
|
193
|
+
t.access_token = github_access_token
|
|
194
|
+
t.secrets = [
|
|
195
|
+
{ name: 'ENCRYPTION_PASSPHRASE', value: ci_encryption_passphrase }
|
|
196
|
+
]
|
|
197
|
+
t.environments = [
|
|
198
|
+
{ name: 'release',
|
|
199
|
+
reviewers: [{ team: 'maintainers' }] }
|
|
159
200
|
]
|
|
160
201
|
end
|
|
161
202
|
|
|
162
203
|
namespace :pipeline do
|
|
163
|
-
desc 'Prepare
|
|
204
|
+
desc 'Prepare GitHub Actions pipeline'
|
|
164
205
|
task prepare: %i[
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
circle_ci:ssh_keys:ensure
|
|
168
|
-
github:deploy_keys:ensure
|
|
206
|
+
github:secrets:ensure
|
|
207
|
+
github:environments:ensure
|
|
169
208
|
]
|
|
170
209
|
end
|
|
171
210
|
|
|
@@ -176,6 +215,38 @@ namespace :version do
|
|
|
176
215
|
end
|
|
177
216
|
end
|
|
178
217
|
|
|
218
|
+
namespace :prerelease do
|
|
219
|
+
desc 'Build and push a namespaced pre-release to RubyGems ' \
|
|
220
|
+
'(PR CI only; no bump, no tag, no commit, no push)'
|
|
221
|
+
task :publish, %i[pr_number run_number run_attempt] do |_, args|
|
|
222
|
+
%i[pr_number run_number run_attempt].each do |name|
|
|
223
|
+
raise "Missing task argument: #{name}" if args[name].to_s.empty?
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
version_file = 'lib/rake_dependencies/version.rb'
|
|
227
|
+
version_pattern = /(VERSION\s*=\s*')([^']+)(')/
|
|
228
|
+
source = File.read(version_file)
|
|
229
|
+
base = source[version_pattern, 2]
|
|
230
|
+
raise "Could not read VERSION from #{version_file}" unless base
|
|
231
|
+
|
|
232
|
+
version = "#{base}.pr#{args.pr_number}" \
|
|
233
|
+
".#{args.run_number}.#{args.run_attempt}"
|
|
234
|
+
gem_file = "rake_dependencies-#{version}.gem"
|
|
235
|
+
begin
|
|
236
|
+
File.write(version_file,
|
|
237
|
+
source.sub(version_pattern, "\\1#{version}\\3"))
|
|
238
|
+
# Build + push directly: `gem release` aborts on the (deliberately)
|
|
239
|
+
# uncommitted version rewrite. PR CI must not tag, commit, or push
|
|
240
|
+
# (contrast the `release` task).
|
|
241
|
+
sh 'gem build rake_dependencies.gemspec'
|
|
242
|
+
sh "gem push #{gem_file}"
|
|
243
|
+
ensure
|
|
244
|
+
File.write(version_file, source)
|
|
245
|
+
rm_f gem_file
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
|
|
179
250
|
desc 'Release gem'
|
|
180
251
|
task :release do
|
|
181
252
|
sh 'gem release --tag --push'
|
data/rake_dependencies.gemspec
CHANGED
|
@@ -46,12 +46,11 @@ Gem::Specification.new do |spec|
|
|
|
46
46
|
spec.add_development_dependency 'fakefs'
|
|
47
47
|
spec.add_development_dependency 'gem-release'
|
|
48
48
|
spec.add_development_dependency 'rake'
|
|
49
|
-
spec.add_development_dependency 'rake_circle_ci'
|
|
50
49
|
spec.add_development_dependency 'rake_git'
|
|
51
50
|
spec.add_development_dependency 'rake_git_crypt'
|
|
52
51
|
spec.add_development_dependency 'rake_github'
|
|
53
52
|
spec.add_development_dependency 'rake_gpg'
|
|
54
|
-
spec.add_development_dependency '
|
|
53
|
+
spec.add_development_dependency 'rake_slack'
|
|
55
54
|
spec.add_development_dependency 'rspec'
|
|
56
55
|
spec.add_development_dependency 'rubocop'
|
|
57
56
|
spec.add_development_dependency 'rubocop-rake'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rake_dependencies
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.14.0.pre.1
|
|
4
|
+
version: 3.14.0.pre.1.pr228.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- InfraBlocks Maintainers
|
|
@@ -141,20 +141,6 @@ dependencies:
|
|
|
141
141
|
- - ">="
|
|
142
142
|
- !ruby/object:Gem::Version
|
|
143
143
|
version: '0'
|
|
144
|
-
- !ruby/object:Gem::Dependency
|
|
145
|
-
name: rake_circle_ci
|
|
146
|
-
requirement: !ruby/object:Gem::Requirement
|
|
147
|
-
requirements:
|
|
148
|
-
- - ">="
|
|
149
|
-
- !ruby/object:Gem::Version
|
|
150
|
-
version: '0'
|
|
151
|
-
type: :development
|
|
152
|
-
prerelease: false
|
|
153
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
154
|
-
requirements:
|
|
155
|
-
- - ">="
|
|
156
|
-
- !ruby/object:Gem::Version
|
|
157
|
-
version: '0'
|
|
158
144
|
- !ruby/object:Gem::Dependency
|
|
159
145
|
name: rake_git
|
|
160
146
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -212,7 +198,7 @@ dependencies:
|
|
|
212
198
|
- !ruby/object:Gem::Version
|
|
213
199
|
version: '0'
|
|
214
200
|
- !ruby/object:Gem::Dependency
|
|
215
|
-
name:
|
|
201
|
+
name: rake_slack
|
|
216
202
|
requirement: !ruby/object:Gem::Requirement
|
|
217
203
|
requirements:
|
|
218
204
|
- - ">="
|