ruby-terraform 0.51.0.pre.1 → 0.51.0.pre.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 38713cdcc13c8730928709bf5b6f3cb71eb8e4ccfadcad7ba2790cf32084139b
4
- data.tar.gz: 9fd9e64ed1e3e46c4563b693a2710c4cb1352af78b32720ea54fc92d05cabc71
3
+ metadata.gz: cff48b117932b50d1b445d3b16a37667023415fc65e4b8ab2cf9f290cf79484c
4
+ data.tar.gz: 4d95ede4e7f14a6cd9f450a6c09c00168329ae3b7ebcb4b83da5d5adc532647c
5
5
  SHA512:
6
- metadata.gz: 44d4bda94b4b60cda29d977262c699e6d8cd68f7272b35fb7e9d1f28133733ed4e79947b654b40e875ca843ad7da636182bb8037a4ae3619eba53ae604462d48
7
- data.tar.gz: b6894f17a96dcf535ddf3b02ad8d80cf3b43501d7847d30ca0372dc24646dec9e126e95a0c76d23409236f041ba698644975eec03adb713d8189cd6011b17e18
6
+ metadata.gz: 19de637a5acaf2da3d7fdc88b010e12824084d45e264895a060b4005218cf7523c80cbed26bdcadde427fcff15f6883f80fabec5ade0f924523b404b4d0b33f9
7
+ data.tar.gz: e3a1dc2a9381648e8383d1c815e9996786588c7722c08b2749bdf4a7e476763a6f2c6035303d20ccb8d587a2db3a6258de1991348de2b8062dc6f404a13f9b01
data/Gemfile.lock CHANGED
@@ -1,22 +1,31 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-terraform (0.51.0.pre.1)
4
+ ruby-terraform (0.51.0.pre.2)
5
5
  lino (~> 1.1)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
+ addressable (2.7.0)
11
+ public_suffix (>= 2.0.2, < 5.0)
10
12
  concurrent-ruby (1.1.6)
11
13
  diff-lcs (1.3)
12
14
  excon (0.72.0)
15
+ faraday (1.0.0)
16
+ multipart-post (>= 1.2, < 3)
13
17
  gem-release (2.1.1)
14
18
  hamster (3.0.0)
15
19
  concurrent-ruby (~> 1.0)
16
20
  lino (1.1.0)
17
21
  hamster (~> 3.0)
18
22
  open4 (~> 1.3)
23
+ multipart-post (2.1.1)
24
+ octokit (4.16.0)
25
+ faraday (>= 0.9)
26
+ sawyer (~> 0.8.0, >= 0.5.3)
19
27
  open4 (1.3.4)
28
+ public_suffix (4.0.3)
20
29
  rake (13.0.1)
21
30
  rspec (3.9.0)
22
31
  rspec-core (~> 3.9.0)
@@ -31,6 +40,10 @@ GEM
31
40
  diff-lcs (>= 1.2.0, < 2.0)
32
41
  rspec-support (~> 3.9.0)
33
42
  rspec-support (3.9.2)
43
+ sawyer (0.8.2)
44
+ addressable (>= 2.3.5)
45
+ faraday (> 0.8, < 2.0)
46
+ sshkey (2.0.0)
34
47
 
35
48
  PLATFORMS
36
49
  ruby
@@ -39,9 +52,11 @@ DEPENDENCIES
39
52
  bundler (~> 2.0)
40
53
  excon (~> 0.72)
41
54
  gem-release (~> 2.1)
55
+ octokit (~> 4.16)
42
56
  rake (~> 13.0)
43
57
  rspec (~> 3.9)
44
58
  ruby-terraform!
59
+ sshkey (~> 2.0)
45
60
 
46
61
  BUNDLED WITH
47
62
  2.1.4
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ require 'sshkey'
2
+ require 'octokit'
1
3
  require 'rspec/core/rake_task'
2
4
 
3
5
  require_relative 'rake/circleci'
@@ -6,41 +8,130 @@ RSpec::Core::RakeTask.new(:spec)
6
8
 
7
9
  task :default => :spec
8
10
 
9
- namespace :pipeline do
10
- namespace :env_vars do
11
- circle_ci_config = 'config/secrets/circle_ci/config.yaml'
11
+ namespace :ssh_key do
12
+ desc "Generate a new SSH key for CI"
13
+ task :generate do
14
+ print "Generating a new SSH key... "
15
+ key = SSHKey.generate(
16
+ type: "RSA",
17
+ bits: 4096,
18
+ comment: "maintainers@infrablocks.io")
19
+ File.write('config/secrets/ci/ssh.private', key.private_key)
20
+ File.write('config/secrets/ci/ssh.public', key.public_key)
21
+ puts "Done."
22
+ end
23
+ end
24
+
25
+ namespace :circle_ci do
26
+ circle_ci_config_path = 'config/secrets/circle_ci/config.yaml'
12
27
 
28
+ namespace :env_vars do
13
29
  desc "Destroy all environment variables from the CircleCI pipeline"
14
30
  task :destroy do
15
- puts "Deleting all environment variables from pipeline..."
16
- CircleCI.new(circle_ci_config).delete_env_vars
31
+ print "Deleting all environment variables from pipeline... "
32
+ circle_ci = CircleCI.new(circle_ci_config_path)
33
+ circle_ci.delete_env_vars
17
34
  puts "Done."
18
35
  end
19
36
 
20
37
  desc "Provision all environment variables to the CircleCI pipeline"
21
38
  task :provision do
22
- puts "Creating all environment variables in pipeline..."
39
+ puts "Creating all environment variables in the pipeline... "
23
40
  env_vars = {
24
41
  'ENCRYPTION_PASSPHRASE':
25
42
  File.read('config/secrets/ci/encryption.passphrase').chomp
26
43
  }
27
44
 
45
+ circle_ci = CircleCI.new(circle_ci_config_path)
28
46
  env_vars.each do |name, value|
29
- puts "Creating environment variable: #{name}"
30
- CircleCI.new(circle_ci_config).create_env_var(name, value)
47
+ print "Creating environment variable: #{name}... "
48
+ circle_ci.create_env_var(name, value)
31
49
  end
32
50
 
33
51
  puts "Done."
34
52
  end
35
53
 
36
- desc "Ensures all environment variables are configured on the CircleCI " +
54
+ desc "Ensure all environment variables are configured on the CircleCI " +
37
55
  "pipeline"
38
56
  task :ensure => [:'destroy', :'provision']
39
57
  end
58
+
59
+ namespace :ssh_key do
60
+ desc "Destroy SSH key from the CircleCI pipeline"
61
+ task :destroy do
62
+ print "Destroying SSH key in the pipeline... "
63
+ circle_ci = CircleCI.new(circle_ci_config_path)
64
+ circle_ci.delete_ssh_keys
65
+ puts "Done."
66
+ end
67
+
68
+ desc "Provision SSH key to the CircleCI pipeline"
69
+ task :provision do
70
+ print "Creating SSH key in the pipeline... "
71
+ circle_ci = CircleCI.new(circle_ci_config_path)
72
+ circle_ci.create_ssh_key(
73
+ SSHKey.new(
74
+ File.read('config/secrets/ci/ssh.private'),
75
+ comment: 'github.com'))
76
+ puts "Done."
77
+ end
78
+
79
+ desc "Ensure SSH key is configured on the CircleCI pipeline"
80
+ task :ensure => [:'destroy', :'provision']
81
+ end
82
+ end
83
+
84
+ namespace :github do
85
+ namespace :deploy_key do
86
+ desc "Remove deploy key from the Github repository"
87
+ task :destroy do
88
+ print "Removing deploy key from the Github repository... "
89
+ config = YAML.load_file('config/secrets/github/config.yaml')
90
+ access_token = config["github_personal_access_token"]
91
+ repo = config["github_repository"]
92
+ client = Octokit::Client.new(access_token: access_token)
93
+
94
+ deploy_keys = client.list_deploy_keys(repo)
95
+ circle_ci_deploy_key = deploy_keys.find { |k| k[:title] == 'CircleCI' }
96
+ if circle_ci_deploy_key
97
+ client.remove_deploy_key(repo, circle_ci_deploy_key[:id])
98
+ end
99
+ puts "Done."
100
+ end
101
+
102
+ desc "Add deploy key to the Github repository"
103
+ task :provision do
104
+ print "Adding deploy key to the Github repository... "
105
+ config = YAML.load_file('config/secrets/github/config.yaml')
106
+ access_token = config["github_personal_access_token"]
107
+ repo = config["github_repository"]
108
+ client = Octokit::Client.new(access_token: access_token)
109
+
110
+ ssh_key = SSHKey.new(
111
+ File.read('config/secrets/ci/ssh.private'),
112
+ comment: 'CircleCI')
113
+ client.add_deploy_key(repo,
114
+ ssh_key.comment,
115
+ ssh_key.ssh_public_key,
116
+ read_only: false)
117
+ puts "Done."
118
+ end
119
+
120
+ desc "Ensure deploy key is configured on the Github repository"
121
+ task :ensure => [:'destroy', :'provision']
122
+ end
123
+ end
124
+
125
+ namespace :pipeline do
126
+ task :prepare => [
127
+ :'circle_ci:env_vars:ensure',
128
+ :'circle_ci:ssh_key:ensure',
129
+ :'github:deploy_key:ensure'
130
+ ]
40
131
  end
41
132
 
42
133
  namespace :version do
43
- desc "Bump version for specified type (pre, major, minor patch)"
134
+ desc "Bump version for specified type (pre, major, minor, patch)"
44
135
  task :bump, [:type] do |_, args|
45
136
  bump_version_for(args.type)
46
137
  end
@@ -1,51 +1,51 @@
1
1
  -----BEGIN RSA PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- g1crHbXLwMacVaxWNTUCruz2tgFVA1G3gg4DF8s4ERdipbNdvvdEauWGeze/PESA
21
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- JItTLtpiE/s1Pg6pcybaVx6DlPdNk2Xay5/qZMLoMMIf9CMQW/KUA9mYnDoNyMiG
31
- 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
- 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
- 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
- aYwiTHtowcK+akkWpkAIUmq/mGOKdw7nMRe+HgN6PY0CggEABZ53PnG2kaJ2V19U
35
- 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
- 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
- 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
- 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
- mYl4HXMMG+F0zyWDysRRr505b5/oql+LcFxXyoIhCjSqO54TixYP3W7cDqkRQPSl
40
- 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
- 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
- XJ1nm5aS+cIcE+rsDR1xlqBk7aXXx2lp+iL4Vmmfc5WwzTe4qOQlVJzGhvLD3LEw
43
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
51
51
  -----END RSA PRIVATE KEY-----
@@ -1 +1,14 @@
1
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC2qo+TzJzxdRsQ48QdwW4KzKJHrynW+AFJRmP08P/wF6aB/OXXpKwvVV8Ql3CvKU+UuP+fgtw5LeANuX0m5nNSITWhQkwgsgPHSbuPB4Bsv+OWQINlJZrvFTwb6JydkPe7qfJqlPzig/bG3RH7Ye2trC5jrFl9wmHxD4mgSQlkL0HTDdsSwfTA7Or5z+O3xdRJ4KQzHNlugkoHIVb9pjF6nKdGTMcftzikztobfTtdh9B5q/NB7EilgWte//vkcn0sZa6YdNyOXohg8YOb5S1XFNQ7QuGumCCrmFfIARqNBVaLtjLHjW58eyjgrxalQp6rmFeWq7qxxGH7DkAGlo8FMoZsmlGEMJzTKNnETGej37+bkTUYdjQ/faMbURtC0uzFqOQNXcv4QqOgTbrz4mgVkwTm+tcvJWTRt9GXcZRbx5E+qTtbMPdrtCZBzW+8LMjnctv/QBSXow1esN6ffqnvVoASV3ReV6tgpZ59ofdr86xMlXy1MtxSvi3HkhCk3ksEiC5amE5dYQHi9ZSXpTNdLZSLH7S3smqD2K9BDlCtZ2Mf0TeF8mY6CG7czJ2ex10LtuCM4i6lDkiGvPGcm5FZ/eBW6snMZyhihsS27CkBD3oFRciicSlvp27XvbpsFvvMAGR9E/V8MuGOE3nfvGGWADV++mxWn049E4aoJ2Lo1Q== maintainers@infrablocks.io
1
+ -----BEGIN PUBLIC KEY-----
2
+ MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlAor5NjXEpgtJfzyBHlY
3
+ PMLQhactLFTZu3txw8y/jzvdpRC0pkCapzzf2pqG1Ig+MZRfhwoStBqz20TBk1+j
4
+ wyjrlCBd9PzbNYVr1QUpib8X2fPowrTVBSKEYB9TYgutzfi8Ze/On1stMrZ9Gf15
5
+ xzZCyfOyHhUkm+ajS2beArmEA4OxrQ0jO8tgRdvi7zbP/tdYRtyiFCZ2nfofuKpO
6
+ 8Br4pL1LBHz7I8PYuXH0qRDW4zeuAUFpyxFSBhzv8LnkifFUuuhk7TktM9JTDNRs
7
+ 0iuvBf5w1lJNOb6iLZ4C8thoNqE/4V8GKvmpccorvQcRbjrvmIyz8g+TMYgBvi6K
8
+ f1QIlZBBj2AOxew1nSCTWKn4QpTye8j2HUaC+2AuxjQwth6Tp969c/RAJq5zWCuL
9
+ KR58TpdD2X3ODWWgYnucdTzchtVXsIWSwHAjSeRIj7U0b0g7dJL9JSaPLwev9tKz
10
+ rx5Ju7XWh/xhBf7urEly+pCwYnpGwctNBsoWqtPdJuxP3tVAZTCico8gYM3/J6hO
11
+ OCDlop4AGObtdsJSXaLu637+svzZiPoOYdp5jmzJJYiz9Z9XgsaWgkLsDubmfieY
12
+ Gs9MAGSRZytG7OAxgI18tlRmkmJveaK5vzE1d5SlDK0JdnzZ+UFvR9hVeRdUFSUZ
13
+ XJpeOsRAvv+6ahmauvxQFyUCAwEAAQ==
14
+ -----END PUBLIC KEY-----
@@ -0,0 +1,3 @@
1
+ ---
2
+ github_personal_access_token: "6deebdb15c371069618942f48acd76f35880ebb5"
3
+ github_repository: "infrablocks/ruby_terraform"
@@ -1,3 +1,3 @@
1
1
  module RubyTerraform
2
- VERSION = "0.51.0.pre.1"
2
+ VERSION = "0.51.0.pre.2"
3
3
  end
data/rake/circleci.rb CHANGED
@@ -2,7 +2,6 @@ require 'rubygems'
2
2
  require 'excon'
3
3
  require 'yaml'
4
4
  require 'json'
5
- require 'pp'
6
5
 
7
6
  class CircleCI
8
7
  def initialize(config_path)
@@ -22,7 +21,7 @@ class CircleCI
22
21
  end
23
22
 
24
23
  def delete_env_var(name)
25
- assert_successful(Excon.delete(env_var_url(name), headers))
24
+ assert_successful(Excon.delete(env_var_url(name), headers: headers))
26
25
  end
27
26
 
28
27
  def delete_env_vars
@@ -38,6 +37,43 @@ class CircleCI
38
37
  Excon.post(env_vars_url, body: body, headers: headers))
39
38
  end
40
39
 
40
+ def find_ssh_keys
41
+ response = assert_successful(Excon.get(settings_url, headers: headers))
42
+ body = JSON.parse(response.body)
43
+ ssh_keys = body["ssh_keys"].map do |ssh_key|
44
+ {
45
+ fingerprint: ssh_key["fingerprint"],
46
+ hostname: ssh_key["hostname"]
47
+ }
48
+ end
49
+
50
+ ssh_keys
51
+ end
52
+
53
+ def delete_ssh_key(ssh_key_identifier)
54
+ assert_successful(
55
+ Excon.delete(ssh_keys_url,
56
+ body: JSON.dump(ssh_key_identifier),
57
+ headers: headers))
58
+ end
59
+
60
+ def delete_ssh_keys
61
+ ssh_keys = find_ssh_keys
62
+ ssh_keys.each do |ssh_key|
63
+ delete_ssh_key(ssh_key)
64
+ end
65
+ end
66
+
67
+ def create_ssh_key(ssh_key)
68
+ body = JSON.dump({
69
+ fingerprint: ssh_key.sha1_fingerprint,
70
+ hostname: ssh_key.comment,
71
+ private_key: ssh_key.private_key
72
+ })
73
+ assert_successful(
74
+ Excon.post(ssh_keys_url, body: body, headers: headers))
75
+ end
76
+
41
77
  private
42
78
 
43
79
  def headers
@@ -49,7 +85,6 @@ class CircleCI
49
85
  end
50
86
 
51
87
  def assert_successful(response)
52
- pp response
53
88
  unless response.status >= 200 && response.status < 300
54
89
  host = response.data[:host]
55
90
  path = response.data[:path]
@@ -65,7 +100,15 @@ class CircleCI
65
100
  end
66
101
 
67
102
  def env_var_url(name)
68
- "#{@base_url}/v1.1/project/#{@project_slug}/envvar/#{name}?" +
103
+ "#{@base_url}/v2/project/#{@project_slug}/envvar/#{name}"
104
+ end
105
+
106
+ def settings_url
107
+ "#{@base_url}/v1.1/project/#{@project_slug}/settings"
108
+ end
109
+
110
+ def ssh_keys_url
111
+ "#{@base_url}/v1.1/project/#{@project_slug}/ssh-key?" +
69
112
  "circle-token=#{@api_token}"
70
113
  end
71
114
  end
@@ -31,5 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.add_development_dependency 'rake', '~> 13.0'
32
32
  spec.add_development_dependency 'rspec', '~> 3.9'
33
33
  spec.add_development_dependency 'excon', '~> 0.72'
34
+ spec.add_development_dependency 'sshkey', '~> 2.0'
35
+ spec.add_development_dependency 'octokit', '~> 4.16'
34
36
  spec.add_development_dependency 'gem-release', '~> 2.1'
35
37
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-terraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.51.0.pre.1
4
+ version: 0.51.0.pre.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toby Clemson
@@ -80,6 +80,34 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.72'
83
+ - !ruby/object:Gem::Dependency
84
+ name: sshkey
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: octokit
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '4.16'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '4.16'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: gem-release
85
113
  requirement: !ruby/object:Gem::Requirement
@@ -129,6 +157,7 @@ files:
129
157
  - config/secrets/ci/ssh.private
130
158
  - config/secrets/ci/ssh.public
131
159
  - config/secrets/circle_ci/config.yaml
160
+ - config/secrets/github/config.yaml
132
161
  - config/secrets/rubygems/credentials
133
162
  - go
134
163
  - lib/ruby_terraform.rb