ruby-terraform 1.10.0.pre.3 → 1.10.0.pre.3.pr275.9.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 229f08cba1fa518f900a7acbc81ccefd6977896824a9518cf505a30710fe2cee
4
- data.tar.gz: 6a261730cd8062261afe466315890be6734293a15352d97d88490dfdc4dc5731
3
+ metadata.gz: 309e246964b3d9b6918f4fc622ebd659bade5a5020442af290dcae4176ad0f04
4
+ data.tar.gz: 27ef40487c20eec3fe9ad1cd3d50fbcf85081db844ffb2844be0436038120720
5
5
  SHA512:
6
- metadata.gz: 29ec0bc8a48833e71b6ce3c42493599b237bfa299b7ea181a6517eddf9b30b6d32151f1499838081ded2d8b67ebb650ece90a08f09ac6f965729dd9dc74867ce
7
- data.tar.gz: aaa455080b36b25fd5e022eeb7aeed81ebcc4a3080886b4ce05f4b6bf2d39823ae2e5e904cad63935e2dfcaa7fe7aba2178ae703328c3051022d25eb0202f14a
6
+ metadata.gz: 33bb718de3e3254d0700271b91d009f03920f6ef964f2640a2c35cd4f313c4899a9aec41f18c3f37c2bd745e91925549458682c1a3dd82cd144a241fe3679113
7
+ data.tar.gz: 64c27efce2a278cc164b3c99d5b6d69145cdbf2440d06295e1ea1f410584b51366faf14d3249437f02084f8008c206a4bd174af4cb3043fa52c99fab6d7ce833
data/Gemfile.lock CHANGED
@@ -1,40 +1,41 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-terraform (1.10.0.pre.3)
4
+ ruby-terraform (1.10.0.pre.3.pr275.9.1)
5
5
  immutable-struct (~> 2.4)
6
6
  lino (>= 4.1)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activesupport (7.2.3.1)
11
+ activesupport (8.1.3)
12
12
  base64
13
- benchmark (>= 0.3)
14
13
  bigdecimal
15
14
  concurrent-ruby (~> 1.0, >= 1.3.1)
16
15
  connection_pool (>= 2.2.5)
17
16
  drb
18
17
  i18n (>= 1.6, < 2)
18
+ json
19
19
  logger (>= 1.4.2)
20
- minitest (>= 5.1, < 6)
20
+ minitest (>= 5.1)
21
21
  securerandom (>= 0.3)
22
22
  tzinfo (~> 2.0, >= 2.0.5)
23
+ uri (>= 0.13.1)
23
24
  addressable (2.9.0)
24
25
  public_suffix (>= 2.0.2, < 8.0)
25
26
  ast (2.4.3)
26
27
  base64 (0.3.0)
27
- benchmark (0.5.0)
28
28
  bigdecimal (4.1.2)
29
29
  childprocess (5.0.0)
30
30
  coderay (1.1.3)
31
31
  colored2 (3.1.2)
32
- concurrent-ruby (1.3.7)
33
- connection_pool (2.5.5)
32
+ concurrent-ruby (1.3.8)
33
+ connection_pool (3.0.2)
34
34
  diff-lcs (1.6.2)
35
35
  docile (1.4.0)
36
36
  drb (2.2.3)
37
- excon (0.111.0)
37
+ excon (1.6.0)
38
+ logger
38
39
  faker (3.6.1)
39
40
  i18n (>= 1.8.11, < 2)
40
41
  faraday (2.14.3)
@@ -43,10 +44,10 @@ GEM
43
44
  logger
44
45
  faraday-net_http (3.4.4)
45
46
  net-http (~> 0.5)
46
- ffi (1.17.3)
47
- ffi (1.17.3-arm64-darwin)
48
- ffi (1.17.3-x86_64-darwin)
49
- ffi (1.17.3-x86_64-linux-gnu)
47
+ ffi (1.17.4)
48
+ ffi (1.17.4-arm64-darwin)
49
+ ffi (1.17.4-x86_64-darwin)
50
+ ffi (1.17.4-x86_64-linux-gnu)
50
51
  formatador (1.2.3)
51
52
  reline
52
53
  gem-release (2.2.4)
@@ -74,7 +75,7 @@ GEM
74
75
  concurrent-ruby (~> 1.0)
75
76
  immutable-struct (2.5.0)
76
77
  io-console (0.8.2)
77
- json (2.20.0)
78
+ json (2.21.1)
78
79
  language_server-protocol (3.17.0.5)
79
80
  lino (4.1.0)
80
81
  childprocess (~> 5.0.0)
@@ -88,7 +89,9 @@ GEM
88
89
  logger (1.7.0)
89
90
  lumberjack (1.4.2)
90
91
  method_source (1.1.0)
91
- minitest (5.27.0)
92
+ minitest (6.0.6)
93
+ drb (~> 2.0)
94
+ prism (~> 1.5)
92
95
  nenv (0.3.0)
93
96
  net-http (0.9.1)
94
97
  uri (>= 0.11.1)
@@ -108,15 +111,10 @@ GEM
108
111
  coderay (~> 1.1)
109
112
  method_source (~> 1.0)
110
113
  reline (>= 0.6.0)
111
- public_suffix (6.0.2)
114
+ public_suffix (7.0.5)
112
115
  racc (1.8.1)
113
116
  rainbow (3.1.1)
114
117
  rake (13.4.2)
115
- rake_circle_ci (0.13.0)
116
- colored2 (~> 3.1)
117
- excon (~> 0.72)
118
- rake_factory (~> 0.33)
119
- sshkey (~> 2.0)
120
118
  rake_factory (0.33.0)
121
119
  activesupport (>= 4)
122
120
  rake (~> 13.0)
@@ -124,8 +122,9 @@ GEM
124
122
  colored2 (~> 3.1)
125
123
  git (~> 1.13, >= 1.13.2)
126
124
  rake_factory (~> 0.33)
127
- rake_git_crypt (0.2.0)
125
+ rake_git_crypt (0.4.0)
128
126
  colored2 (~> 3.1)
127
+ lino (~> 4.1)
129
128
  rake_factory (~> 0.33)
130
129
  ruby_git_crypt (~> 0.1)
131
130
  ruby_gpg2 (~> 0.12)
@@ -138,10 +137,9 @@ GEM
138
137
  rake_gpg (0.20.0)
139
138
  rake_factory (~> 0.33)
140
139
  ruby_gpg2 (~> 0.12)
141
- rake_ssh (0.12.0)
142
- colored2 (~> 3.1)
140
+ rake_slack (0.3.0)
141
+ excon (>= 0.72, < 2.0)
143
142
  rake_factory (~> 0.33)
144
- sshkey (~> 2.0)
145
143
  rb-fsevent (0.11.2)
146
144
  rb-inotify (0.11.1)
147
145
  ffi (~> 1.0)
@@ -227,12 +225,11 @@ DEPENDENCIES
227
225
  guard
228
226
  guard-rspec
229
227
  rake
230
- rake_circle_ci
231
228
  rake_git
232
229
  rake_git_crypt
233
230
  rake_github
234
231
  rake_gpg
235
- rake_ssh
232
+ rake_slack
236
233
  rspec
237
234
  rubocop
238
235
  rubocop-rake
data/README.md CHANGED
@@ -348,16 +348,16 @@ To check for code linting / formatting issues without fixing:
348
348
  You can also run `bin/console` for an interactive prompt that will allow you to
349
349
  experiment.
350
350
 
351
- ### Managing CircleCI keys
351
+ ### Managing CI keys
352
352
 
353
- To encrypt a GPG key for use by CircleCI:
353
+ To encrypt a GPG key for use by CI:
354
354
 
355
355
  ```bash
356
356
  openssl aes-256-cbc \
357
357
  -e \
358
358
  -md sha1 \
359
359
  -in ./config/secrets/ci/gpg.private \
360
- -out ./.circleci/gpg.private.enc \
360
+ -out ./.github/gpg.private.enc \
361
361
  -k "<passphrase>"
362
362
  ```
363
363
 
@@ -367,7 +367,7 @@ To check decryption is working correctly:
367
367
  openssl aes-256-cbc \
368
368
  -d \
369
369
  -md sha1 \
370
- -in ./.circleci/gpg.private.enc \
370
+ -in ./.github/gpg.private.enc \
371
371
  -k "<passphrase>"
372
372
  ```
373
373
 
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 'rake_ssh'
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
  require 'yard'
14
12
 
15
13
  task default: %i[
@@ -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
 
@@ -121,6 +111,11 @@ namespace :library do
121
111
 
122
112
  desc 'Attempt to automatically fix issues with the library'
123
113
  task fix: [:'rubocop:autocorrect_all']
114
+
115
+ desc 'Build the library'
116
+ task :build do
117
+ sh 'gem build ruby_terraform.gemspec'
118
+ end
124
119
  end
125
120
 
126
121
  namespace :documentation do
@@ -146,51 +141,87 @@ namespace :test do
146
141
  RSpec::Core::RakeTask.new(:unit)
147
142
  end
148
143
 
149
- RakeCircleCI.define_project_tasks(
150
- namespace: :circle_ci,
151
- project_slug: 'github/infrablocks/ruby_terraform'
152
- ) do |t|
153
- circle_ci_config =
154
- YAML.load_file('config/secrets/circle_ci/config.yaml')
155
-
156
- t.api_token = circle_ci_config['circle_ci_api_token']
157
- t.environment_variables = {
158
- ENCRYPTION_PASSPHRASE:
159
- File.read('config/secrets/ci/encryption.passphrase')
160
- .chomp
161
- }
162
- t.checkout_keys = []
163
- t.ssh_keys = [
164
- {
165
- hostname: 'github.com',
166
- private_key: File.read('config/secrets/ci/ssh.private')
167
- }
168
- ]
169
- end
170
-
171
- RakeGithub.define_repository_tasks(
144
+ RakeGithub.define_repository_tasks( # rubocop:disable Metrics/BlockLength
172
145
  namespace: :github,
173
146
  repository: 'infrablocks/ruby_terraform'
174
147
  ) do |t|
175
- github_config =
176
- YAML.load_file('config/secrets/github/config.yaml')
177
-
178
- t.access_token = github_config['github_personal_access_token']
179
- t.deploy_keys = [
180
- {
181
- title: 'CircleCI',
182
- public_key: File.read('config/secrets/ci/ssh.public')
183
- }
148
+ # Operator's ambient auth. Resolve once and fail fast: a missing,
149
+ # unauthenticated, or absent gh yields an empty string, which would
150
+ # otherwise surface later as an opaque Octokit 401. An empty or
151
+ # whitespace-only GITHUB_TOKEN is treated as absent so an authenticated
152
+ # operator falls through to `gh auth token` rather than hitting the raise.
153
+ github_token = ENV['GITHUB_TOKEN'].to_s.strip
154
+ if github_token.empty?
155
+ github_token = begin
156
+ `gh auth token`
157
+ rescue Errno::ENOENT
158
+ ''
159
+ end.strip
160
+ end
161
+ if github_token.empty?
162
+ raise 'No GitHub token available: set GITHUB_TOKEN or run `gh auth login`'
163
+ end
164
+
165
+ t.access_token = github_token
166
+
167
+ # Actions store only: dependabot runs never reach the passphrase — the
168
+ # only pr.yaml job that unlocks git-crypt (prerelease) is guarded to
169
+ # same-repo human PRs. Guard against a locked clone: without
170
+ # it, File.read returns git-crypt ciphertext and github:secrets:ensure
171
+ # silently uploads garbage that only surfaces much later as an opaque
172
+ # GPG unlock failure in the release job.
173
+ passphrase_path = 'config/secrets/ci/encryption.passphrase'
174
+ unless File.exist?(passphrase_path)
175
+ raise "Passphrase file not found: #{passphrase_path} — expected a " \
176
+ 'git-crypt-unlocked clone with the CI secrets present'
177
+ end
178
+ passphrase = File.binread(passphrase_path)
179
+ if passphrase.start_with?("\x00GITCRYPT")
180
+ raise 'encryption.passphrase is git-crypt ciphertext — unlock the ' \
181
+ 'clone before provisioning'
182
+ end
183
+ t.secrets = [
184
+ { name: 'ENCRYPTION_PASSPHRASE', value: passphrase.chomp }
184
185
  ]
186
+ t.environments = [
187
+ { name: 'release',
188
+ reviewers: [{ team: 'maintainers' }] }
189
+ ]
190
+ end
191
+
192
+ namespace :slack do
193
+ RakeSlack.define_notification_tasks do |t|
194
+ t.bot_token = ENV.fetch('SLACK_BOT_TOKEN', nil)
195
+ t.routing_rules = [
196
+ { when: { type: 'on_hold' },
197
+ channel: 'C038EDCRSQJ', format: :on_hold }, # release
198
+ { when: { actor: 'dependabot[bot]', outcome: 'success' },
199
+ channel: 'C03N711HVDG', format: :success }, # builds-dependabot
200
+ { when: { actor: 'dependabot[bot]' },
201
+ channel: 'C03N711HVDG', format: :failure }, # builds-dependabot
202
+ { when: { outcome: 'success' },
203
+ channel: 'C023XUE76GH', format: :success }, # builds
204
+ # Failures go to builds, not team-dev (org default), to keep noise
205
+ # out of a popular channel while this pipeline beds in.
206
+ { when: {},
207
+ channel: 'C023XUE76GH', format: :failure } # builds
208
+ ]
209
+ end
210
+ end
211
+
212
+ namespace :repository do
213
+ desc 'Set the git author for CI'
214
+ task :set_ci_author do
215
+ sh 'git config --global user.name "InfraBlocks CI"'
216
+ sh 'git config --global user.email "ci@infrablocks.io"'
217
+ end
185
218
  end
186
219
 
187
220
  namespace :pipeline do
188
- desc 'Prepare CircleCI Pipeline'
221
+ desc 'Prepare GitHub Actions pipeline'
189
222
  task prepare: %i[
190
- circle_ci:env_vars:ensure
191
- circle_ci:checkout_keys:ensure
192
- circle_ci:ssh_keys:ensure
193
- github:deploy_keys:ensure
223
+ github:secrets:ensure
224
+ github:environments:ensure
194
225
  ]
195
226
  end
196
227
 
@@ -206,6 +237,38 @@ task :release do
206
237
  sh 'gem release --tag --push'
207
238
  end
208
239
 
240
+ namespace :prerelease do
241
+ desc 'Build and push a namespaced pre-release to RubyGems ' \
242
+ '(PR CI only; no bump, no tag, no commit, no push)'
243
+ task :publish, %i[pr_number run_number run_attempt] do |_, args|
244
+ %i[pr_number run_number run_attempt].each do |name|
245
+ raise "Missing task argument: #{name}" if args[name].to_s.empty?
246
+ end
247
+
248
+ version_file = 'lib/ruby_terraform/version.rb'
249
+ version_pattern = /(VERSION\s*=\s*')([^']+)(')/
250
+ source = File.read(version_file)
251
+ base = source[version_pattern, 2]
252
+ raise "Could not read VERSION from #{version_file}" unless base
253
+
254
+ version = "#{base}.pr#{args.pr_number}" \
255
+ ".#{args.run_number}.#{args.run_attempt}"
256
+ gem_file = "ruby-terraform-#{version}.gem"
257
+ begin
258
+ File.write(version_file,
259
+ source.sub(version_pattern, "\\1#{version}\\3"))
260
+ # Build + push directly: `gem release` aborts on the (deliberately)
261
+ # uncommitted version rewrite. PR CI must not tag, commit, or push
262
+ # (contrast the `release` task).
263
+ sh 'gem build ruby_terraform.gemspec'
264
+ sh "gem push #{gem_file}"
265
+ ensure
266
+ File.write(version_file, source)
267
+ rm_f gem_file
268
+ end
269
+ end
270
+ end
271
+
209
272
  def bump_version_for(version_type)
210
273
  sh "gem bump --version #{version_type} " \
211
274
  '&& bundle install ' \
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyTerraform
4
- VERSION = '1.10.0.pre.3'
4
+ VERSION = '1.10.0.pre.3.pr275.9.1'
5
5
  end
@@ -47,12 +47,11 @@ Gem::Specification.new do |spec|
47
47
  spec.add_development_dependency 'guard'
48
48
  spec.add_development_dependency 'guard-rspec'
49
49
  spec.add_development_dependency 'rake'
50
- spec.add_development_dependency 'rake_circle_ci'
51
50
  spec.add_development_dependency 'rake_git'
52
51
  spec.add_development_dependency 'rake_git_crypt'
53
52
  spec.add_development_dependency 'rake_github'
54
53
  spec.add_development_dependency 'rake_gpg'
55
- spec.add_development_dependency 'rake_ssh'
54
+ spec.add_development_dependency 'rake_slack'
56
55
  spec.add_development_dependency 'rspec'
57
56
  spec.add_development_dependency 'rubocop'
58
57
  spec.add_development_dependency 'rubocop-rake'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-terraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.10.0.pre.3
4
+ version: 1.10.0.pre.3.pr275.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - InfraBlocks Maintainers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-07-14 00:00:00.000000000 Z
11
+ date: 2026-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: immutable-struct
@@ -122,20 +122,6 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: rake_circle_ci
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
125
  - !ruby/object:Gem::Dependency
140
126
  name: rake_git
141
127
  requirement: !ruby/object:Gem::Requirement
@@ -193,7 +179,7 @@ dependencies:
193
179
  - !ruby/object:Gem::Version
194
180
  version: '0'
195
181
  - !ruby/object:Gem::Dependency
196
- name: rake_ssh
182
+ name: rake_slack
197
183
  requirement: !ruby/object:Gem::Requirement
198
184
  requirements:
199
185
  - - ">="