ruby-terraform 0.51.0.pre.1 → 0.51.0.pre.2

Sign up to get free protection for your applications and to get access to all the features.
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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
- ZSWa7xU8G+icnZD3u6nyapT84oP2xt0R+2HtrawuY6xZfcJh8Q+JoEkJZC9B0w3b
5
- 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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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
- kS6f7MhlN/t095J2Mx6I1h3CHu1M/WOCBSqZXyls+O0WBZohZOg5h7QOF1SYV7s1
18
- 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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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
- 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
- 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
- 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
- mYl4HXMMG+F0zyWDysRRr505b5/oql+LcFxXyoIhCjSqO54TixYP3W7cDqkRQPSl
40
- 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
- sI4o0AhWsrUT7vYT0wzcKlwweMOVr6ket/GT/lms1P9gOvbEfo2N0mgms9XfZCMT
42
- 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
- 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
- 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
- kAEqsw933Kk5JZ8YcLIGLok+z9szVAwZCQKCAQAbvhtIGkF6MeFAdqQa1pR6N3Et
46
- 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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