exercism-config 0.50.0 → 0.51.0

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: 682ac352cd9846f8485bb5e27ec597871df5c57d227cd3663e60e14c09ec273a
4
- data.tar.gz: 208acd5687549ada0d4ec85bdf2b4ca1015f32ace42c1937bd7f216eaa820409
3
+ metadata.gz: c6e54c12d701536a89b8e382b481dce7e13407e2c98491901b8e711284b8e63a
4
+ data.tar.gz: a69555d9cc2681c780ae0a9395d4483efc961bb1c886de410a26fc42e265bd28
5
5
  SHA512:
6
- metadata.gz: 609b4aa9b5682437fd3ed8e7f1961c2f40121a7ab1bd9ecf8d20aee43c7cc515ede573a244ba1c0534aa35a215a9ebd1f8a516a395559acca09aeafe362609db
7
- data.tar.gz: dbd577ed0ad922c6f8a595d8f8e562470172b419431b5ccd77357d82568218bc75587c050c70b609eaa10d200eea7e1ac53621835ba4ad660c3ea937db0ced4d
6
+ metadata.gz: 516a52a717400357843f5bdcb9a628747dfb3bfddd06a933cb32cb72f401231692248bd2d67d94cff42198ab871f322d0ad4b6564e5556f5f907540708fa2c59
7
+ data.tar.gz: 4b9f8884c5fb26390bece3826c26ff165e7f7f9e74ff89286d9e85cfb1becf4817a3580e2d99666de19d8a16ed57e7d17e36267be8afb1db987a0b24d781d1ee
@@ -14,7 +14,7 @@ jobs:
14
14
  - uses: actions/checkout@v2
15
15
 
16
16
  - name: Set up Ruby
17
- uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
17
+ uses: ruby/setup-ruby@a699edbce608a2c128dedad88e3b6a0e28687b3c
18
18
  with:
19
19
  ruby-version: 2.6.6
20
20
 
@@ -11,10 +11,10 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
 
13
13
  services:
14
- dynamodb:
15
- image: "amazon/dynamodb-local"
14
+ aws:
15
+ image: "localstack/localstack"
16
16
  ports:
17
- - 8000
17
+ - 4566
18
18
 
19
19
  steps:
20
20
  ###
@@ -24,19 +24,10 @@ jobs:
24
24
  ###
25
25
  # Setup Ruby - this needs to match the version in the Gemfile
26
26
  - name: Set up Ruby
27
- uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
27
+ uses: ruby/setup-ruby@a699edbce608a2c128dedad88e3b6a0e28687b3c
28
28
  with:
29
29
  ruby-version: 2.6.6
30
-
31
- ###
32
- # Caching using GitHub's caching action
33
- - name: Cache Bundler
34
- uses: actions/cache@v2
35
- with:
36
- path: vendor/bundle
37
- key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
38
- restore-keys: |
39
- ${{ runner.os }}-gems-
30
+ bundler-cache: true
40
31
 
41
32
  ###
42
33
  # Install bundler and yarn dependencies
@@ -44,10 +35,8 @@ jobs:
44
35
  env:
45
36
  EXERCISM_ENV: test
46
37
  EXERCISM_CI: true
47
- DYNAMODB_PORT: ${{ job.services.dynamodb.ports['8000'] }}
38
+ AWS_PORT: ${{ job.services.aws.ports['4566'] }}
48
39
  run: |
49
- bundle config path vendor/bundle # This is needed for the caching above
50
- bundle install --jobs 4 --retry 3
51
40
  bundle exec setup_exercism_config
52
41
 
53
42
  ###
@@ -64,7 +53,7 @@ jobs:
64
53
  env:
65
54
  EXERCISM_ENV: test
66
55
  EXERCISM_CI: true
67
- DYNAMODB_PORT: ${{ job.services.dynamodb.ports['8000'] }}
56
+ AWS_PORT: ${{ job.services.aws.ports['4566'] }}
68
57
  CAPTURE_CODE_COVERAGE: true
69
58
  run: |
70
59
  bundle exec rake test
data/README.md CHANGED
@@ -5,11 +5,49 @@
5
5
  [![Test Coverage](https://api.codeclimate.com/v1/badges/513edbd6599a2de3218d/test_coverage)](https://codeclimate.com/github/exercism/config/test_coverage)
6
6
  [![Gem Version](https://badge.fury.io/rb/exercism-config.svg)](https://badge.fury.io/rb/exercism-config)
7
7
 
8
+ ## Usage
9
+
10
+ This gem provides you with the following config and secrets:
11
+
12
+ ```ruby
13
+ # Config
14
+
15
+ Exercism.config.anycable_redis_url
16
+ Exercism.config.anycable_rpc_host
17
+ Exercism.config.aws_submissions_bucket
18
+ Exercism.config.aws_tooling_jobs_bucket
19
+ Exercism.config.dynamodb_tooling_jobs_table
20
+ Exercism.config.dynamodb_tooling_language_groups_table
21
+ Exercism.config.mysql_master_endpoint
22
+ Exercism.config.mysql_port
23
+ Exercism.config.spi_url
24
+ Exercism.config.tooling_orchestrator_url
25
+ Exercism.config.language_server_url
26
+
27
+ # Secrets
28
+ Exercism.secrets.github_omniauth_app_id
29
+ Exercism.secrets.github_omniauth_app_secret
30
+ Exercism.secrets.hcaptcha_site_key
31
+ Exercism.secrets.hcaptcha_secret
32
+ ```
33
+
34
+ ## Explaination
35
+
8
36
  When terraform creates Exercism's infrastructure, it writes endpoints and DNS entries to DynamoDB.
9
37
  This gem allows you to trivially retrieve that data.
10
38
 
11
39
  When running on AWS, simply ensure the machine has read-access to the relevant table (currently hardcoded to `config`).
12
- On a local machine specify the AWS_PROFILE environment variable with the relevant profile stored in your `.aws/credentials`.
40
+
41
+ ## Local AWS
42
+
43
+ This requires a local version of AWS to work.
44
+ We use localstack for this.
45
+ If you use the development-environment this will be handled for you.
46
+ If not, to start localstack use the following:
47
+
48
+ ```bash
49
+ docker run -dp 3042:8080 -p 3040:4566 -p 3041:4566 localstack/localstack
50
+ ```
13
51
 
14
52
  ## Usage
15
53
 
@@ -10,8 +10,8 @@ if Exercism.env.production?
10
10
  exit
11
11
  end
12
12
 
13
- def create_table(client)
14
- client.create_table(
13
+ def create_dynamodb_table
14
+ Exercism.dynamodb_client.create_table(
15
15
  table_name: :config,
16
16
  attribute_definitions: [
17
17
  {
@@ -33,13 +33,13 @@ def create_table(client)
33
33
  end
34
34
 
35
35
  def delete_table(client)
36
- client.delete_table(
36
+ Exercism.dynamodb_client.delete_table(
37
37
  table_name: :config
38
38
  )
39
39
  end
40
40
 
41
- def set_config_value(client, id, value)
42
- client.put_item(
41
+ def set_config_value(id, value)
42
+ Exercism.dynamodb_client.put_item(
43
43
  table_name: :config,
44
44
  item: {
45
45
  id: id,
@@ -48,15 +48,13 @@ def set_config_value(client, id, value)
48
48
  )
49
49
  end
50
50
 
51
- client = ExercismConfig::SetupDynamoDBClient.call
52
-
53
51
  begin
54
- create_table(client)
52
+ create_dynamodb_table
55
53
  rescue Aws::DynamoDB::Errors::ResourceInUseException => e
56
54
  if ARGV.include?('--force')
57
55
  puts 'Table exists. Recreating...'
58
- delete_table(client)
59
- create_table(client)
56
+ delete_table
57
+ create_dynamodb_table
60
58
  puts 'Table recreated.'
61
59
  else
62
60
  puts 'Table exists. Not recreating.'
@@ -79,5 +77,16 @@ puts "Using settings file: #{settings_file}"
79
77
  settings = YAML.load(ERB.new(File.read(settings_file)).result)
80
78
 
81
79
  settings.each do |key, value|
82
- set_config_value(client, key, value)
80
+ set_config_value(key, value)
83
81
  end
82
+
83
+ secrets_file = File.expand_path('../settings/secrets.yml', __dir__)
84
+ puts "Using secrets file: #{secrets_file}"
85
+ secrets_json = YAML.load(ERB.new(File.read(secrets_file)).result).to_json
86
+
87
+ secrets_client = Aws::SecretsManager::Client.new(ExercismConfig::GenerateAwsSettings.())
88
+ secrets_client.create_secret(
89
+ description: "Exercism Config used secrets",
90
+ name: "config",
91
+ secret_string: secrets_json
92
+ )
@@ -7,8 +7,6 @@ return if Exercism.env.production?
7
7
 
8
8
  puts "Create AWS/DynamoDB tables..."
9
9
 
10
- Exercism.config.dynamodb_client = ExercismConfig::SetupDynamoDBClient.()
11
-
12
10
  ##################
13
11
  # Setup local s3 #
14
12
  ##################
@@ -19,7 +17,7 @@ unless ENV["EXERCISM_SKIP_S3"]
19
17
  Exercism.config.aws_tooling_jobs_bucket,
20
18
  ].each do |bucket|
21
19
  begin
22
- ExercismConfig::SetupS3Client.().create_bucket(bucket: bucket)
20
+ Exercism.s3_client.create_bucket(bucket: bucket)
23
21
  rescue Seahorse::Client::NetworkingError => e
24
22
  puts "local S3 not up yet..."
25
23
  sleep 2 # slighty retry delaty
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
 
9
9
  spec.summary = 'Retrieves stored config for Exercism'
10
10
  spec.homepage = 'https://exercism.io'
11
- spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
11
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.6.6')
12
12
 
13
13
  spec.metadata['homepage_uri'] = spec.homepage
14
14
  spec.metadata['source_code_uri'] = 'https://github.com/exercism/config'
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.require_paths = ["lib"]
27
27
 
28
28
  spec.add_dependency 'aws-sdk-dynamodb', '~> 1.0'
29
+ spec.add_dependency 'aws-sdk-secretsmanager', '~> 1.0'
29
30
  spec.add_dependency 'mandate'
30
31
  spec.add_dependency 'zeitwerk'
31
32
 
@@ -36,6 +37,7 @@ Gem::Specification.new do |spec|
36
37
 
37
38
  # This isn't a compulsary dependency
38
39
  # but can be used if someone puts it in their
39
- # own gemfile
40
+ # own Gemfile when using this.
40
41
  spec.add_development_dependency 'aws-sdk-s3'
42
+ spec.add_development_dependency 'aws-sdk-ecr'
41
43
  end
@@ -1,4 +1,5 @@
1
1
  require 'aws-sdk-dynamodb'
2
+ require 'aws-sdk-secretsmanager'
2
3
  require 'mandate'
3
4
  require 'ostruct'
4
5
  require 'json'
@@ -9,10 +10,12 @@ require_relative 'exercism_config/generate_aws_settings'
9
10
  require_relative 'exercism_config/setup_dynamodb_client'
10
11
  require_relative 'exercism_config/setup_ecr_client'
11
12
  require_relative 'exercism_config/setup_s3_client'
12
- require_relative 'exercism_config/retrieve'
13
- require_relative 'exercism_config/version'
13
+ require_relative 'exercism_config/retrieve_config'
14
+ require_relative 'exercism_config/retrieve_secrets'
14
15
 
16
+ require_relative 'exercism_config/version'
15
17
  require_relative 'exercism/config'
18
+ require_relative 'exercism/secrets'
16
19
 
17
20
  module Exercism
18
21
  class ConfigError < RuntimeError; end
@@ -21,12 +24,29 @@ module Exercism
21
24
  @env ||= ExercismConfig::DetermineEnvironment.()
22
25
  end
23
26
 
24
- def self.environment
25
- puts "Exercism.environment is deprecated. Use Exercism.env"
26
- env
27
+ def self.config
28
+ @config ||= ExercismConfig::RetrieveConfig.()
27
29
  end
28
30
 
29
- def self.config
30
- @config ||= ExercismConfig::Retrieve.()
31
+ def self.secrets
32
+ @secrets ||= ExercismConfig::RetrieveSecrets.()
33
+ end
34
+
35
+ def self.dynamodb_client
36
+ Aws::DynamoDB::Client.new(ExercismConfig::GenerateAwsSettings.())
37
+ end
38
+
39
+ def self.s3_client
40
+ require 'aws-sdk-s3'
41
+ Aws::S3::Client.new(
42
+ ExercismConfig::GenerateAwsSettings.().merge(
43
+ force_path_style: true
44
+ )
45
+ )
46
+ end
47
+
48
+ def self.ecr_client
49
+ require 'aws-sdk-ecr'
50
+ Aws::ECR::Client.new(ExercismConfig::GenerateAwsSettings.())
31
51
  end
32
52
  end
@@ -0,0 +1,4 @@
1
+ module Exercism
2
+ class Secrets < OpenStruct
3
+ end
4
+ end
@@ -4,9 +4,7 @@ module ExercismConfig
4
4
 
5
5
  def call
6
6
  env = ENV['EXERCISM_ENV'] || ENV['RAILS_ENV'] || ENV['APP_ENV']
7
- unless env
8
- env = Rails.env.to_s if Object.const_defined?(:Rails) && Rails.respond_to?(:env)
9
- end
7
+ env = Rails.env.to_s if !env && Object.const_defined?(:Rails) && Rails.respond_to?(:env)
10
8
 
11
9
  raise Exercism::ConfigError, 'No environment set - set one of EXERCISM_ENV, RAILS_ENV or APP_ENV' unless env
12
10
 
@@ -5,7 +5,7 @@ module ExercismConfig
5
5
  def call
6
6
  {
7
7
  region: 'eu-west-2',
8
- profile: profile,
8
+ endpoint: endpoint,
9
9
  access_key_id: aws_access_key_id,
10
10
  secret_access_key: aws_secret_access_key
11
11
  }.select { |_k, v| v }
@@ -22,8 +22,12 @@ module ExercismConfig
22
22
  end
23
23
 
24
24
  memoize
25
- def profile
26
- Exercism.env.production? ? nil : 'exercism_staging'
25
+ def endpoint
26
+ return nil if Exercism.env.production?
27
+ return "http://127.0.0.1:#{ENV['AWS_PORT']}" if Exercism.env.test? && ENV['EXERCISM_CI']
28
+
29
+ host = ENV['EXERCISM_DOCKER'] ? 'aws:3040' : 'localhost:3040'
30
+ "http://#{host}"
27
31
  end
28
32
  end
29
33
  end
@@ -1,5 +1,5 @@
1
1
  module ExercismConfig
2
- class Retrieve
2
+ class RetrieveConfig
3
3
  include Mandate
4
4
 
5
5
  def call
@@ -13,24 +13,14 @@ module ExercismConfig
13
13
  require 'erb'
14
14
  require 'yaml'
15
15
 
16
- filename = if ENV["EXERCISM_CI"]
17
- 'ci'
18
- elsif ENV["EXERCISM_DOCKER"]
19
- 'docker'
20
- else
21
- 'local'
22
- end
23
-
24
- settings_file = File.expand_path("../../../settings/#{filename}.yml", __FILE__)
16
+ settings_file = File.expand_path("../../../settings/#{settings_filename}.yml", __FILE__)
25
17
  settings = YAML.safe_load(ERB.new(File.read(settings_file)).result)
26
18
 
27
19
  Exercism::Config.new(settings, {})
28
20
  end
29
21
 
30
22
  def retrieve_from_dynamodb
31
- client = SetupDynamoDBClient.()
32
-
33
- resp = client.scan({ table_name: 'config' })
23
+ resp = Exercism.dynamodb_client.scan({ table_name: 'config' })
34
24
  items = resp.to_h[:items]
35
25
  data = items.each_with_object({}) do |item, h|
36
26
  h[item['id']] = item['value']
@@ -44,17 +34,15 @@ module ExercismConfig
44
34
  raise Exercism::ConfigError, "Exercism Config could not be loaded: #{e.message}"
45
35
  end
46
36
 
47
- memoize
48
- def aws_client
49
- config = {
50
- region: 'eu-west-2',
51
- profile: profile,
52
- endpoint: endpoint,
53
- access_key_id: aws_access_key_id,
54
- secret_access_key: aws_secret_access_key
55
- }.select { |_k, v| v }
56
-
57
- Aws::DynamoDB::Client.new(config)
37
+ def settings_filename
38
+ if ENV["EXERCISM_CI"]
39
+ 'ci'
40
+ elsif ENV["EXERCISM_DOCKER"]
41
+ 'docker'
42
+ else
43
+ 'local'
44
+ end
58
45
  end
46
+
59
47
  end
60
48
  end
@@ -0,0 +1,30 @@
1
+ module ExercismConfig
2
+ class RetrieveSecrets
3
+ include Mandate
4
+
5
+ def call
6
+ return generate_mock if Exercism.env.test?
7
+
8
+ retrieve_from_aws
9
+ end
10
+
11
+ private
12
+ def generate_mock
13
+ require 'erb'
14
+ require 'yaml'
15
+
16
+ settings_file = File.expand_path('../../settings/secrets.yml', __dir__)
17
+ settings = YAML.safe_load(ERB.new(File.read(settings_file)).result)
18
+
19
+ Exercism::Settings.new(settings, {})
20
+ end
21
+
22
+ def retrieve_from_aws
23
+ client = Aws::SecretsManager::Client.new(GenerateAwsSettings.())
24
+ json = client.get_secret_value(secret_id: "config").secret_string
25
+ Exercism::Secrets.new(JSON.parse(json))
26
+ rescue StandardError => e
27
+ raise Exercism::ConfigError, "Exercism's secrets could not be loaded: #{e.message}"
28
+ end
29
+ end
30
+ end
@@ -3,25 +3,9 @@ module ExercismConfig
3
3
  include Mandate
4
4
 
5
5
  def call
6
- aws_settings = GenerateAwsSettings.().merge(
7
- endpoint: config_endpoint,
6
+ puts "[DEPRECATION] ExercismConfig::SetupDynamoDBClient.() is deprecated. Please use Exercism.dynamodb_client"
8
7
 
9
- # We don't want a profile for this AWS service
10
- # as we run it locally. But we do normally, so
11
- # we locally override this here.
12
- profile: nil
13
- ).select { |_k, v| v }
14
- Aws::DynamoDB::Client.new(aws_settings)
15
- end
16
-
17
- private
18
- memoize
19
- def config_endpoint
20
- return nil if Exercism.env.production?
21
- return "http://127.0.0.1:#{ENV['DYNAMODB_PORT']}" if Exercism.env.test? && ENV['EXERCISM_CI']
22
-
23
- host = ENV['EXERCISM_DOCKER'] ? 'dynamodb:8000' : 'localhost:3040'
24
- "http://#{host}"
8
+ Exercism.dynamodb_client
25
9
  end
26
10
  end
27
11
  end
@@ -3,16 +3,9 @@ module ExercismConfig
3
3
  include Mandate
4
4
 
5
5
  def call
6
- aws_settings = GenerateAwsSettings.().merge(
7
- # endpoint: config_endpoint,
6
+ puts "[DEPRECATION] ExercismConfig::SetupECRClient.() is deprecated. Please use Exercism.ecr_client"
8
7
 
9
- # We don't want a profile for this AWS service
10
- # as we run it locally. But we do normally, so
11
- # we locally override this here.
12
- profile: nil
13
- ).select { |_k, v| v }
14
-
15
- Aws::ECR::Client.new(aws_settings)
8
+ Exercism.ecr_client
16
9
  end
17
10
  end
18
11
  end
@@ -3,28 +3,9 @@ module ExercismConfig
3
3
  include Mandate
4
4
 
5
5
  def call
6
- require 'aws-sdk-s3'
6
+ puts "[DEPRECATION] ExercismConfig::SetupS3Client.() is deprecated. Please use Exercism.s3_client"
7
7
 
8
- aws_settings = GenerateAwsSettings.().merge(
9
- endpoint: config_endpoint,
10
- force_path_style: true,
11
-
12
- # We don't want a profile for this AWS service
13
- # as we run it locally. But we do normally, so
14
- # we locally override this here.
15
- profile: nil
16
- ).select { |_k, v| v }
17
- Aws::S3::Client.new(aws_settings)
18
- end
19
-
20
- private
21
- memoize
22
- def config_endpoint
23
- return nil if Exercism.env.production?
24
- return "http://127.0.0.1:#{ENV['S3_PORT']}" if Exercism.env.test? && ENV['EXERCISM_CI']
25
-
26
- host = ENV['EXERCISM_DOCKER'] ? 's3:9090' : 'localhost:3041'
27
- "http://#{host}"
8
+ Exercism.s3_client
28
9
  end
29
10
  end
30
11
  end
@@ -1,3 +1,3 @@
1
1
  module ExercismConfig
2
- VERSION = '0.50.0'.freeze
2
+ VERSION = '0.51.0'.freeze
3
3
  end
@@ -0,0 +1,4 @@
1
+ github_omniauth_app_id: "some-github-app-id"
2
+ github_omniauth_app_secret: "some-github-app-exercism-secret"
3
+ hcaptcha_site_key: "some-hcaptcha-site-key"
4
+ hcaptcha_secret: "some-hcaptcha-secret"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exercism-config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.50.0
4
+ version: 0.51.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Walker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-25 00:00:00.000000000 Z
11
+ date: 2020-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-dynamodb
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: aws-sdk-secretsmanager
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: mandate
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,20 @@ dependencies:
122
136
  - - ">="
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: aws-sdk-ecr
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
125
153
  description:
126
154
  email:
127
155
  - jez.walker@gmail.com
@@ -148,10 +176,12 @@ files:
148
176
  - exercism_config.gemspec
149
177
  - lib/exercism-config.rb
150
178
  - lib/exercism/config.rb
179
+ - lib/exercism/secrets.rb
151
180
  - lib/exercism_config/determine_environment.rb
152
181
  - lib/exercism_config/environment.rb
153
182
  - lib/exercism_config/generate_aws_settings.rb
154
- - lib/exercism_config/retrieve.rb
183
+ - lib/exercism_config/retrieve_config.rb
184
+ - lib/exercism_config/retrieve_secrets.rb
155
185
  - lib/exercism_config/setup_dynamodb_client.rb
156
186
  - lib/exercism_config/setup_ecr_client.rb
157
187
  - lib/exercism_config/setup_s3_client.rb
@@ -160,6 +190,7 @@ files:
160
190
  - settings/ci.yml
161
191
  - settings/docker.yml
162
192
  - settings/local.yml
193
+ - settings/secrets.yml
163
194
  - yarn.lock
164
195
  homepage: https://exercism.io
165
196
  licenses: []
@@ -174,7 +205,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
174
205
  requirements:
175
206
  - - ">="
176
207
  - !ruby/object:Gem::Version
177
- version: 2.3.0
208
+ version: 2.6.6
178
209
  required_rubygems_version: !ruby/object:Gem::Requirement
179
210
  requirements:
180
211
  - - ">="