rake_git_crypt 0.5.0.pre.1 → 0.5.0.pre.1.pr119.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 22420e5ee018db2cc37bc2c26a05c01e33c935d6eae595599f1c6faa758a23fc
4
- data.tar.gz: 0262adccbbf52bf90630ea6912ede59daaa332611e556b471c20be2f6e2a5065
3
+ metadata.gz: 3dae7beebf0f1c4d818c3c35e4036e7db616c835e85398f655f3619003c7a31e
4
+ data.tar.gz: 0e279ace6bc9369e9c41a2a4cc2b0a4928d55e7b7caa4ec35c1f227cedcc261c
5
5
  SHA512:
6
- metadata.gz: 678e16d31a7ea4f2007956f432f907544e5bd3f221efe825a656d5e65901e045c89f3180ce94c981ade4fe766f513b8ebbc24e2d1afc7ece2c2f09d81bfcc2a5
7
- data.tar.gz: feadb2ecf24dd83de326cf9cfccf208ece2bc319e6c0f609185b749308af39081eb7025801fa0512bc4a573193de8539f103c0b0199a0235b264516cfe5c60f6
6
+ metadata.gz: '028272fa0a87a7c81a8fa8b456ab0652ae651411edf80a6a5cb5c994f79f25e46e6b72e91339debeb683e086a7db3ede3a61ff61a2d671d8fce6f4ad4885ee7a'
7
+ data.tar.gz: fd9a6ea68c0b356fa3c6d359465f1dd6de9a4d060125d8319f93be03a7542689a3b7093814243df6cc10e573a908009508d2a087a130777c0768f1ab34475d9e
data/Gemfile CHANGED
@@ -10,11 +10,10 @@ gem 'bundler'
10
10
  gem 'gem-release'
11
11
  gem 'memfs'
12
12
  gem 'rake'
13
- gem 'rake_circle_ci'
14
- gem 'rake_git'
13
+ gem 'rake_git', '~> 0.2.0'
15
14
  gem 'rake_github'
16
15
  gem 'rake_gpg'
17
- gem 'rake_ssh'
16
+ gem 'rake_slack'
18
17
  gem 'rspec'
19
18
  gem 'rubocop'
20
19
  gem 'rubocop-rake'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rake_git_crypt (0.5.0.pre.1)
4
+ rake_git_crypt (0.5.0.pre.1.pr119.3.1)
5
5
  colored2 (~> 3.1)
6
6
  lino (~> 4.1)
7
7
  rake_factory (~> 0.33)
@@ -11,60 +11,63 @@ PATH
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- activesupport (7.2.2.1)
14
+ activesupport (8.1.3)
15
15
  base64
16
- benchmark (>= 0.3)
17
16
  bigdecimal
18
17
  concurrent-ruby (~> 1.0, >= 1.3.1)
19
18
  connection_pool (>= 2.2.5)
20
19
  drb
21
20
  i18n (>= 1.6, < 2)
21
+ json
22
22
  logger (>= 1.4.2)
23
23
  minitest (>= 5.1)
24
24
  securerandom (>= 0.3)
25
25
  tzinfo (~> 2.0, >= 2.0.5)
26
- addressable (2.8.7)
27
- public_suffix (>= 2.0.2, < 7.0)
26
+ uri (>= 0.13.1)
27
+ addressable (2.9.0)
28
+ public_suffix (>= 2.0.2, < 8.0)
28
29
  ast (2.4.3)
29
- base64 (0.2.0)
30
- benchmark (0.4.0)
31
- bigdecimal (3.1.8)
30
+ base64 (0.3.0)
31
+ bigdecimal (4.1.2)
32
32
  childprocess (5.0.0)
33
33
  colored2 (3.1.2)
34
- concurrent-ruby (1.3.4)
35
- connection_pool (2.4.1)
34
+ concurrent-ruby (1.3.8)
35
+ connection_pool (3.0.2)
36
36
  diff-lcs (1.6.2)
37
37
  docile (1.4.0)
38
- drb (2.2.1)
39
- excon (0.111.0)
40
- faraday (2.10.0)
41
- faraday-net_http (>= 2.0, < 3.2)
38
+ drb (2.2.3)
39
+ excon (1.6.0)
42
40
  logger
43
- faraday-net_http (3.1.1)
44
- net-http
41
+ faraday (2.14.3)
42
+ faraday-net_http (>= 2.0, < 3.5)
43
+ json
44
+ logger
45
+ faraday-net_http (3.4.4)
46
+ net-http (~> 0.5)
47
+ ffi (1.17.4)
48
+ ffi (1.17.4-x86_64-linux-gnu)
45
49
  gem-release (2.2.4)
46
50
  git (1.19.1)
47
51
  addressable (~> 2.8)
48
52
  rchardet (~> 1.8)
49
53
  hamster (3.0.0)
50
54
  concurrent-ruby (~> 1.0)
51
- i18n (1.14.6)
55
+ i18n (1.15.2)
52
56
  concurrent-ruby (~> 1.0)
53
57
  immutable-struct (2.4.1)
54
- json (2.12.2)
58
+ json (2.21.1)
55
59
  language_server-protocol (3.17.0.5)
56
60
  lino (4.1.0)
57
61
  childprocess (~> 5.0.0)
58
62
  hamster (~> 3.0)
59
63
  open4 (~> 1.3)
60
64
  lint_roller (1.1.0)
61
- logger (1.6.2)
65
+ logger (1.7.0)
62
66
  memfs (1.0.0)
63
- minitest (5.25.4)
64
- net-http (0.4.1)
65
- uri
66
- octokit (8.1.0)
67
- base64
67
+ minitest (5.27.0)
68
+ net-http (0.9.1)
69
+ uri (>= 0.11.1)
70
+ octokit (10.0.0)
68
71
  faraday (>= 1, < 3)
69
72
  sawyer (~> 0.9)
70
73
  open4 (1.3.4)
@@ -73,35 +76,32 @@ GEM
73
76
  ast (~> 2.4.1)
74
77
  racc
75
78
  prism (1.4.0)
76
- public_suffix (6.0.1)
79
+ public_suffix (7.0.5)
77
80
  racc (1.8.1)
78
81
  rainbow (3.1.1)
79
- rake (13.3.0)
80
- rake_circle_ci (0.13.0)
81
- colored2 (~> 3.1)
82
- excon (~> 0.72)
83
- rake_factory (~> 0.33)
84
- sshkey (~> 2.0)
82
+ rake (13.4.2)
85
83
  rake_factory (0.33.0)
86
84
  activesupport (>= 4)
87
85
  rake (~> 13.0)
88
- rake_git (0.3.0.pre.2)
86
+ rake_git (0.2.0)
89
87
  colored2 (~> 3.1)
90
88
  git (~> 1.13, >= 1.13.2)
91
89
  rake_factory (~> 0.33)
92
- rake_github (0.15.0)
90
+ rake_github (0.17.0)
93
91
  colored2 (~> 3.1)
94
- octokit (>= 4.16, < 9.0)
92
+ octokit (>= 7.0, < 11.0)
95
93
  rake_factory (~> 0.33)
94
+ rbnacl (~> 7.1)
96
95
  sshkey (~> 2.0)
97
96
  rake_gpg (0.20.0)
98
97
  rake_factory (~> 0.33)
99
98
  ruby_gpg2 (~> 0.12)
100
- rake_ssh (0.12.0)
101
- colored2 (~> 3.1)
99
+ rake_slack (0.3.0)
100
+ excon (>= 0.72, < 2.0)
102
101
  rake_factory (~> 0.33)
103
- sshkey (~> 2.0)
104
- rchardet (1.8.0)
102
+ rbnacl (7.1.2)
103
+ ffi (~> 1)
104
+ rchardet (1.10.2)
105
105
  regexp_parser (2.10.0)
106
106
  rspec (3.13.1)
107
107
  rspec-core (~> 3.13.0)
@@ -142,10 +142,10 @@ GEM
142
142
  lino (>= 4.1)
143
143
  ruby_gpg2 (0.12.0)
144
144
  lino (>= 4.1)
145
- sawyer (0.9.2)
145
+ sawyer (0.9.3)
146
146
  addressable (>= 2.3.5)
147
147
  faraday (>= 0.17.3, < 3)
148
- securerandom (0.4.0)
148
+ securerandom (0.4.1)
149
149
  simplecov (0.22.0)
150
150
  docile (~> 1.1)
151
151
  simplecov-html (~> 0.11)
@@ -158,14 +158,10 @@ GEM
158
158
  unicode-display_width (3.1.4)
159
159
  unicode-emoji (~> 4.0, >= 4.0.4)
160
160
  unicode-emoji (4.0.4)
161
- uri (0.13.2)
161
+ uri (1.1.1)
162
162
 
163
163
  PLATFORMS
164
- arm64-darwin-21
165
- arm64-darwin-22
166
164
  ruby
167
- x86_64-darwin-19
168
- x86_64-darwin-21
169
165
  x86_64-linux
170
166
 
171
167
  DEPENDENCIES
@@ -174,12 +170,11 @@ DEPENDENCIES
174
170
  gem-release
175
171
  memfs
176
172
  rake
177
- rake_circle_ci
178
- rake_git
173
+ rake_git (~> 0.2.0)
179
174
  rake_git_crypt!
180
175
  rake_github
181
176
  rake_gpg
182
- rake_ssh
177
+ rake_slack
183
178
  rspec
184
179
  rubocop
185
180
  rubocop-rake
data/README.md CHANGED
@@ -72,16 +72,16 @@ release a new version, update the version number in `version.rb`, and then run
72
72
  git commits and tags, and push the `.gem` file to
73
73
  [rubygems.org](https://rubygems.org).
74
74
 
75
- ### Managing CircleCI keys
75
+ ### Managing CI keys
76
76
 
77
- To encrypt a GPG key for use by CircleCI:
77
+ To encrypt a GPG key for use by CI:
78
78
 
79
79
  ```bash
80
80
  openssl aes-256-cbc \
81
81
  -e \
82
82
  -md sha1 \
83
83
  -in ./config/secrets/ci/gpg.private \
84
- -out ./.circleci/gpg.private.enc \
84
+ -out ./.github/gpg.private.enc \
85
85
  -k "<passphrase>"
86
86
  ```
87
87
 
@@ -91,7 +91,7 @@ To check decryption is working correctly:
91
91
  openssl aes-256-cbc \
92
92
  -d \
93
93
  -md sha1 \
94
- -in ./.circleci/gpg.private.enc \
94
+ -in ./.github/gpg.private.enc \
95
95
  -k "<passphrase>"
96
96
  ```
97
97
 
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
 
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,103 @@ 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_git_crypt.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
- RakeCircleCI.define_project_tasks(
125
- namespace: :circle_ci,
126
- project_slug: 'github/infrablocks/rake_git_crypt'
127
- ) do |t|
128
- circle_ci_config =
129
- YAML.load_file('config/secrets/circle_ci/config.yaml')
130
-
131
- t.api_token = circle_ci_config['circle_ci_api_token']
132
- t.environment_variables = {
133
- ENCRYPTION_PASSPHRASE:
134
- File.read('config/secrets/ci/encryption.passphrase')
135
- .chomp
136
- }
137
- t.checkout_keys = []
138
- t.ssh_keys = [
139
- {
140
- hostname: 'github.com',
141
- private_key: File.read('config/secrets/ci/ssh.private')
142
- }
143
- ]
119
+ # Operator's ambient auth. Resolve once and fail fast: a missing,
120
+ # unauthenticated, or absent gh yields an empty string, which would
121
+ # otherwise surface later as an opaque Octokit 401. An empty or
122
+ # whitespace-only GITHUB_TOKEN is treated as absent so an authenticated
123
+ # operator falls through to `gh auth token` rather than hitting the raise.
124
+ def resolve_github_token
125
+ github_token = ENV['GITHUB_TOKEN'].to_s.strip
126
+ if github_token.empty?
127
+ github_token = begin
128
+ `gh auth token`
129
+ rescue Errno::ENOENT
130
+ ''
131
+ end.strip
132
+ end
133
+ return github_token unless github_token.empty?
134
+
135
+ raise 'No GitHub token available: set GITHUB_TOKEN or run `gh auth login`'
136
+ end
137
+
138
+ # Actions store only: dependabot runs never reach the passphrase — the
139
+ # only pr.yaml job that unlocks git-crypt (prerelease) is guarded to
140
+ # same-repo human PRs. Guard against a locked clone: without it, File.read
141
+ # returns git-crypt ciphertext and github:secrets:ensure silently uploads
142
+ # garbage that only surfaces much later as an opaque GPG unlock failure in
143
+ # the release job.
144
+ def read_ci_passphrase
145
+ passphrase_path = 'config/secrets/ci/encryption.passphrase'
146
+ unless File.exist?(passphrase_path)
147
+ raise "Passphrase not found: #{passphrase_path} (unlock the clone)"
148
+ end
149
+
150
+ passphrase = File.binread(passphrase_path)
151
+ if passphrase.start_with?("\x00GITCRYPT")
152
+ raise 'encryption.passphrase is git-crypt ciphertext; unlock the clone'
153
+ end
154
+
155
+ passphrase.chomp
144
156
  end
145
157
 
146
158
  RakeGithub.define_repository_tasks(
147
159
  namespace: :github,
148
160
  repository: 'infrablocks/rake_git_crypt'
149
161
  ) do |t|
150
- github_config =
151
- YAML.load_file('config/secrets/github/config.yaml')
152
-
153
- t.access_token = github_config['github_personal_access_token']
154
- t.deploy_keys = [
155
- {
156
- title: 'CircleCI',
157
- public_key: File.read('config/secrets/ci/ssh.public')
158
- }
162
+ t.access_token = resolve_github_token
163
+ t.secrets = [
164
+ { name: 'ENCRYPTION_PASSPHRASE', value: read_ci_passphrase }
159
165
  ]
166
+ t.environments = [
167
+ { name: 'release',
168
+ reviewers: [{ team: 'maintainers' }] }
169
+ ]
170
+ end
171
+
172
+ namespace :slack do
173
+ RakeSlack.define_notification_tasks do |t|
174
+ t.bot_token = ENV.fetch('SLACK_BOT_TOKEN', nil)
175
+ t.routing_rules = [
176
+ { when: { type: 'on_hold' },
177
+ channel: 'C038EDCRSQJ', format: :on_hold }, # release
178
+ { when: { actor: 'dependabot[bot]', outcome: 'success' },
179
+ channel: 'C03N711HVDG', format: :success }, # builds-dependabot
180
+ { when: { actor: 'dependabot[bot]' },
181
+ channel: 'C03N711HVDG', format: :failure }, # builds-dependabot
182
+ { when: { outcome: 'success' },
183
+ channel: 'C023XUE76GH', format: :success }, # builds
184
+ # Failures go to builds, not team-dev (org default), to keep noise
185
+ # out of a popular channel while this pipeline beds in.
186
+ { when: {},
187
+ channel: 'C023XUE76GH', format: :failure } # builds
188
+ ]
189
+ end
190
+ end
191
+
192
+ namespace :repository do
193
+ desc 'Set the git author for CI'
194
+ task :set_ci_author do
195
+ sh 'git config --global user.name "InfraBlocks CI"'
196
+ sh 'git config --global user.email "ci@infrablocks.io"'
197
+ end
160
198
  end
161
199
 
162
200
  namespace :pipeline do
163
- desc 'Prepare CircleCI Pipeline'
201
+ desc 'Prepare GitHub Actions pipeline'
164
202
  task prepare: %i[
165
- circle_ci:env_vars:ensure
166
- circle_ci:checkout_keys:ensure
167
- circle_ci:ssh_keys:ensure
168
- github:deploy_keys:ensure
203
+ github:secrets:ensure
204
+ github:environments:ensure
169
205
  ]
170
206
  end
171
207
 
@@ -181,6 +217,38 @@ task :release do
181
217
  sh 'gem release --tag --push'
182
218
  end
183
219
 
220
+ namespace :prerelease do
221
+ desc 'Build and push a namespaced pre-release to RubyGems ' \
222
+ '(PR CI only; no bump, no tag, no commit, no push)'
223
+ task :publish, %i[pr_number run_number run_attempt] do |_, args|
224
+ %i[pr_number run_number run_attempt].each do |name|
225
+ raise "Missing task argument: #{name}" if args[name].to_s.empty?
226
+ end
227
+
228
+ version_file = 'lib/rake_git_crypt/version.rb'
229
+ version_pattern = /(VERSION\s*=\s*')([^']+)(')/
230
+ source = File.read(version_file)
231
+ base = source[version_pattern, 2]
232
+ raise "Could not read VERSION from #{version_file}" unless base
233
+
234
+ version = "#{base}.pr#{args.pr_number}" \
235
+ ".#{args.run_number}.#{args.run_attempt}"
236
+ gem_file = "rake_git_crypt-#{version}.gem"
237
+ begin
238
+ File.write(version_file,
239
+ source.sub(version_pattern, "\\1#{version}\\3"))
240
+ # Build + push directly: `gem release` aborts on the (deliberately)
241
+ # uncommitted version rewrite. PR CI must not tag, commit, or push
242
+ # (contrast the `release` task).
243
+ sh 'gem build rake_git_crypt.gemspec'
244
+ sh "gem push #{gem_file}"
245
+ ensure
246
+ File.write(version_file, source)
247
+ rm_f gem_file
248
+ end
249
+ end
250
+ end
251
+
184
252
  def bump_version_for(version_type)
185
253
  sh "gem bump --version #{version_type} " \
186
254
  '&& bundle install ' \
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RakeGitCrypt
4
- VERSION = '0.5.0.pre.1'
4
+ VERSION = '0.5.0.pre.1.pr119.3.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake_git_crypt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.pre.1
4
+ version: 0.5.0.pre.1.pr119.3.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-10 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: colored2