shipit-engine 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +50 -2
  3. data/app/assets/stylesheets/_pages/_deploy.scss +3 -2
  4. data/app/controllers/shipit/api/base_controller.rb +5 -0
  5. data/app/controllers/shipit/api/deploys_controller.rb +2 -1
  6. data/app/controllers/shipit/api/tasks_controller.rb +4 -1
  7. data/app/controllers/shipit/deploys_controller.rb +1 -1
  8. data/app/controllers/shipit/github_authentication_controller.rb +4 -2
  9. data/app/controllers/shipit/rollbacks_controller.rb +1 -1
  10. data/app/controllers/shipit/tasks_controller.rb +14 -2
  11. data/app/helpers/shipit/github_url_helper.rb +4 -2
  12. data/app/helpers/shipit/stacks_helper.rb +3 -3
  13. data/app/jobs/shipit/continuous_delivery_job.rb +12 -0
  14. data/app/jobs/shipit/create_on_github_job.rb +11 -0
  15. data/app/jobs/shipit/fetch_deployed_revision_job.rb +1 -1
  16. data/app/models/shipit/anonymous_user.rb +4 -0
  17. data/app/models/shipit/commit.rb +8 -10
  18. data/app/models/shipit/commit_deployment.rb +56 -0
  19. data/app/models/shipit/commit_deployment_status.rb +57 -0
  20. data/app/models/shipit/deploy.rb +32 -6
  21. data/app/models/shipit/deploy_spec.rb +8 -0
  22. data/app/models/shipit/deploy_spec/rubygems_discovery.rb +1 -1
  23. data/app/models/shipit/rollback.rb +10 -0
  24. data/app/models/shipit/stack.rb +30 -12
  25. data/app/models/shipit/status_group.rb +1 -1
  26. data/app/models/shipit/task.rb +1 -0
  27. data/app/models/shipit/task_definition.rb +20 -1
  28. data/app/models/shipit/user.rb +10 -2
  29. data/app/models/shipit/variable_definition.rb +2 -4
  30. data/app/serializers/shipit/commit_serializer.rb +19 -1
  31. data/app/serializers/shipit/deploy_serializer.rb +7 -1
  32. data/app/serializers/shipit/short_commit_serializer.rb +1 -1
  33. data/app/serializers/shipit/task_serializer.rb +17 -1
  34. data/app/views/shipit/_variables.html.erb +15 -0
  35. data/app/views/shipit/deploys/_concurrent_deploy_warning.html.erb +1 -1
  36. data/app/views/shipit/deploys/_deploy.html.erb +2 -2
  37. data/app/views/shipit/deploys/new.html.erb +3 -17
  38. data/app/views/shipit/deploys/rollback.html.erb +3 -17
  39. data/app/views/shipit/tasks/new.html.erb +12 -4
  40. data/config/locales/en.yml +11 -0
  41. data/db/migrate/20160210183823_add_allow_concurrency_to_tasks.rb +5 -0
  42. data/db/migrate/20160303163611_create_shipit_commit_deployments.rb +14 -0
  43. data/db/migrate/20160303170913_create_shipit_commit_deployment_statuses.rb +12 -0
  44. data/db/migrate/20160303203940_add_encrypted_token_to_users.rb +6 -0
  45. data/lib/shipit.rb +7 -1
  46. data/lib/shipit/engine.rb +3 -1
  47. data/lib/shipit/environment_variables.rb +34 -0
  48. data/lib/shipit/simple_message_verifier.rb +0 -1
  49. data/lib/shipit/task_commands.rb +1 -0
  50. data/lib/shipit/version.rb +1 -1
  51. data/test/controllers/api/deploys_controller_test.rb +15 -0
  52. data/test/controllers/api/tasks_controller_test.rb +15 -0
  53. data/test/controllers/github_authentication_controller_test.rb +23 -5
  54. data/test/controllers/tasks_controller_test.rb +27 -2
  55. data/test/controllers/webhooks_controller_test.rb +8 -2
  56. data/test/dummy/config/database.mysql.yml +1 -1
  57. data/test/dummy/config/secrets.example.yml +2 -2
  58. data/test/dummy/config/secrets.yml +2 -2
  59. data/test/dummy/data/stacks/byroot/junk/production/git/bar.txt +1 -0
  60. data/test/dummy/data/stacks/byroot/junk/production/git/dkfdsf +0 -0
  61. data/test/dummy/data/stacks/byroot/junk/production/git/dskjfsd +0 -0
  62. data/test/dummy/data/stacks/byroot/junk/production/git/dslkjfjsdf +0 -0
  63. data/test/dummy/data/stacks/byroot/junk/production/git/plopfizz +0 -0
  64. data/test/dummy/data/stacks/byroot/junk/production/git/sd +0 -0
  65. data/test/dummy/data/stacks/byroot/junk/production/git/sdkfjsdf +1 -0
  66. data/test/dummy/data/stacks/byroot/junk/production/git/sdlfjsdfdsfj +0 -0
  67. data/test/dummy/data/stacks/byroot/junk/production/git/sdlkfjsdlkfjsdlkfjdsfsdfksdfjsldkfjsdlkfjsdf +0 -0
  68. data/test/dummy/data/stacks/byroot/junk/production/git/shipit.yml +27 -0
  69. data/test/dummy/data/stacks/byroot/junk/production/git/toto.txt +2 -0
  70. data/test/dummy/db/development.sqlite3 +0 -0
  71. data/test/dummy/db/schema.rb +35 -7
  72. data/test/dummy/db/seeds.rb +3 -0
  73. data/test/dummy/db/test.sqlite3 +0 -0
  74. data/test/fixtures/shipit/commit_deployment_statuses.yml +19 -0
  75. data/test/fixtures/shipit/commit_deployments.yml +37 -0
  76. data/test/fixtures/shipit/commits.yml +1 -1
  77. data/test/fixtures/shipit/stacks.yml +12 -0
  78. data/test/fixtures/shipit/tasks.yml +4 -0
  79. data/test/fixtures/shipit/users.yml +2 -0
  80. data/test/jobs/fetch_deployed_revision_job_test.rb +3 -3
  81. data/test/models/commit_deployment_status_test.rb +27 -0
  82. data/test/models/commit_deployment_test.rb +37 -0
  83. data/test/models/commits_test.rb +7 -4
  84. data/test/models/deploys_test.rb +17 -1
  85. data/test/models/stacks_test.rb +13 -13
  86. data/test/models/task_definitions_test.rb +10 -0
  87. data/test/models/team_test.rb +8 -2
  88. data/test/models/users_test.rb +20 -2
  89. data/test/unit/deploy_spec_test.rb +29 -0
  90. data/test/unit/environment_variables_test.rb +36 -0
  91. data/test/unit/github_url_helper_test.rb +0 -8
  92. metadata +76 -20
@@ -1,5 +1,5 @@
1
1
  <section class="warning concurrent-deploy">
2
- <h2><%= render_github_user(@stack.active_deploy.author) %> is already deploying!</h2>
2
+ <h2><%= render_github_user(@stack.active_task.author) %> is already deploying!</h2>
3
3
  <ul>
4
4
  <li>Are you sure you want to deploy concurrently?</li>
5
5
  <li>
@@ -23,12 +23,12 @@
23
23
  <% unless read_only %>
24
24
  <div class="commit-actions">
25
25
  <% if deploy.rollbackable? %>
26
- <% if deploy.stack.deploying? %>
26
+ <% if deploy.stack.active_task? %>
27
27
  <%= link_to 'Deploy in progress...', '#', class: 'btn disabled deploy-action' %>
28
28
  <% else %>
29
29
  <%= link_to 'Rollback to this deploy...', rollback_stack_deploy_path(@stack, deploy), class: 'btn btn--delete deploy-action rollback-action' %>
30
30
  <% end %>
31
- <% elsif deploy.currently_deployed? && !deploy.stack.deploying? %>
31
+ <% elsif deploy.currently_deployed? && !deploy.stack.active_task? %>
32
32
  <%= redeploy_button(deploy.until_commit) %>
33
33
  <% end %>
34
34
  </div>
@@ -28,23 +28,9 @@
28
28
  <%= render_checklist @stack.checklist %>
29
29
 
30
30
  <%= form_for [@stack, @deploy] do |f| %>
31
- <% unless @deploy.variables.empty? %>
32
- <section>
33
- <header class="section-header environment-variables">
34
- <h2>Environment variables</h2>
35
- </header>
36
- <%= f.fields_for :env do |env_fields| %>
37
- <% @deploy.variables.each do |variable| %>
38
- <p class="environment-variable">
39
- <%= env_fields.text_field variable.name, value: variable.default %>
40
- <%= env_fields.label variable.name, variable.title || variable.name %>
41
- </p>
42
- <% end %>
43
- <% end %>
44
- </section>
45
- <% end %>
46
-
47
- <%= render 'concurrent_deploy_warning' if @stack.deploying? %>
31
+ <%= render partial: 'shipit/variables', locals: { variables: @deploy.variables, form: f, header: "Environment Variables", field_name: :env} %>
32
+
33
+ <%= render 'concurrent_deploy_warning' if @stack.active_task? %>
48
34
 
49
35
  <section class="submit-section">
50
36
  <%= f.hidden_field :until_commit_id %>
@@ -24,23 +24,9 @@
24
24
  <%= render_checklist @stack.checklist %>
25
25
 
26
26
  <%= form_for [@stack, @rollback] do |f| %>
27
- <% unless @rollback.variables.empty? %>
28
- <section>
29
- <header class="section-header environment-variables">
30
- <h2>Environment variables</h2>
31
- </header>
32
- <%= f.fields_for :env do |env_fields| %>
33
- <% @rollback.variables.each do |variable| %>
34
- <p class="environment-variable">
35
- <%= env_fields.text_field variable.name, value: variable.default %>
36
- <%= env_fields.label variable.name, variable.title || variable.name %>
37
- </p>
38
- <% end %>
39
- <% end %>
40
- </section>
41
- <% end %>
42
-
43
- <%= render 'concurrent_deploy_warning' if @stack.deploying? %>
27
+ <%= render partial: 'shipit/variables', locals: { variables: @rollback.variables, form: f, header: "Environment Variables", field_name: :env} %>
28
+
29
+ <%= render 'concurrent_deploy_warning' if @stack.active_task? %>
44
30
 
45
31
  <section class="submit-section">
46
32
  <%= f.hidden_field :parent_id %>
@@ -13,9 +13,17 @@
13
13
 
14
14
  <%= render_checklist @task.checklist %>
15
15
 
16
- <section class="submit-section">
17
- <%= form_for @task, url: stack_tasks_path(@stack, definition_id: @task.definition.id) do |f| %>
16
+ <%= form_for @task, url: stack_tasks_path(@stack, definition_id: @task.definition.id) do |f| %>
17
+
18
+ <%= render partial: 'shipit/variables', locals: { variables: @task.definition.variables, form: f, header: "Environment Variables", field_name: :env} %>
19
+
20
+ <section class="submit-section">
21
+ <% if !@task.definition.allow_concurrency? && @stack.active_task? %>
22
+ <%= render 'shipit/deploys/concurrent_deploy_warning' %>
23
+ <% end %>
24
+
18
25
  <%= f.submit @task.definition.action, :class => ['btn', 'primary', 'trigger-deploy'] %>
19
- <% end %>
20
- </section>
26
+ </section>
27
+
28
+ <% end %>
21
29
  </div>
@@ -52,3 +52,14 @@ en:
52
52
  messages:
53
53
  subset: "is not a strict subset of %{of}"
54
54
  ascii: "contains non-ASCII characters"
55
+ deployment_description:
56
+ deploy:
57
+ pending: "%{author} triggered the deploy of %{stack} to %{sha}"
58
+ success: "%{author} deployed %{stack} to %{sha}"
59
+ failure: "Deploy of %{stack} to %{sha} by %{author} failed"
60
+ error: "Deploy of %{stack} to %{sha} by %{author} failed"
61
+ rollback:
62
+ pending: "%{author} triggered the rollback of %{stack} to %{sha}"
63
+ success: "%{author} rolled back %{stack} to %{sha}"
64
+ failure: "Rollback of %{stack} to %{sha} by %{author} failed"
65
+ error: "Rollback of %{stack} to %{sha} by %{author} failed"
@@ -0,0 +1,5 @@
1
+ class AddAllowConcurrencyToTasks < ActiveRecord::Migration
2
+ def change
3
+ add_column :tasks, :allow_concurrency, :boolean, null: false, default: false
4
+ end
5
+ end
@@ -0,0 +1,14 @@
1
+ class CreateShipitCommitDeployments < ActiveRecord::Migration
2
+ def change
3
+ create_table :commit_deployments do |t|
4
+ t.references :commit, foreign_key: true
5
+ t.references :task, index: true, foreign_key: true
6
+ t.integer :github_id, null: true
7
+ t.string :api_url, null: true
8
+
9
+ t.timestamps null: false
10
+
11
+ t.index %i(commit_id task_id), unique: true
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ class CreateShipitCommitDeploymentStatuses < ActiveRecord::Migration
2
+ def change
3
+ create_table :commit_deployment_statuses do |t|
4
+ t.references :commit_deployment, index: true, foreign_key: true
5
+ t.string :status
6
+ t.integer :github_id
7
+ t.string :api_url
8
+
9
+ t.timestamps null: false
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,6 @@
1
+ class AddEncryptedTokenToUsers < ActiveRecord::Migration
2
+ def change
3
+ add_column :users, :encrypted_github_access_token, :string
4
+ add_column :users, :encrypted_github_access_token_iv, :string
5
+ end
6
+ end
data/lib/shipit.rb CHANGED
@@ -4,6 +4,7 @@ require 'state_machines-activerecord'
4
4
  require 'validate_url'
5
5
  require 'responders'
6
6
  require 'explicit-parameters'
7
+ require 'attr_encrypted'
7
8
 
8
9
  require 'sass-rails'
9
10
  require 'coffee-rails'
@@ -37,6 +38,7 @@ require 'shipit/stack_commands'
37
38
  require 'shipit/task_commands'
38
39
  require 'shipit/deploy_commands'
39
40
  require 'shipit/rollback_commands'
41
+ require 'shipit/environment_variables'
40
42
 
41
43
  SafeYAML::OPTIONS[:default_mode] = :safe
42
44
  SafeYAML::OPTIONS[:deserialize_symbols] = false
@@ -96,7 +98,11 @@ module Shipit
96
98
  end
97
99
 
98
100
  def api_clients_secret
99
- secrets.api_clients_secret || ''
101
+ secrets.api_clients_secret.presence || secrets.secret_key_base
102
+ end
103
+
104
+ def user_access_tokens_key
105
+ secrets.user_access_tokens_key.presence || secrets.secret_key_base
100
106
  end
101
107
 
102
108
  def host
data/lib/shipit/engine.rb CHANGED
@@ -18,6 +18,8 @@ module Shipit
18
18
  path =~ /\Aplugins\/[\-\w]+\.(js|css)\Z/
19
19
  end
20
20
 
21
+ ActionDispatch::ExceptionWrapper.rescue_responses[Shipit::TaskDefinition::NotFound.name] = :not_found
22
+
21
23
  ActiveModel::Serializer._root = false
22
24
  ActiveModel::ArraySerializer._root = false
23
25
  ActiveModel::Serializer.include(Engine.routes.url_helpers)
@@ -29,7 +31,7 @@ module Shipit
29
31
  :github,
30
32
  Shipit.github_oauth_id,
31
33
  Shipit.github_oauth_secret,
32
- scope: 'email',
34
+ scope: 'email,repo_deployment',
33
35
  client_options: Shipit.github_oauth_options,
34
36
  )
35
37
  end
@@ -0,0 +1,34 @@
1
+ module Shipit
2
+ class EnvironmentVariables
3
+ NotPermitted = Class.new(StandardError)
4
+
5
+ class << self
6
+ def with(env)
7
+ EnvironmentVariables.new(env)
8
+ end
9
+ end
10
+
11
+ def permit(variable_definitions)
12
+ return {} unless @env
13
+ raise "A whitelist is required to sanitize environment variables" unless variable_definitions
14
+ sanitize_env_vars(variable_definitions)
15
+ end
16
+
17
+ private
18
+
19
+ def initialize(env)
20
+ @env = env
21
+ end
22
+
23
+ def sanitize_env_vars(variable_definitions)
24
+ allowed_variables = variable_definitions.map(&:name)
25
+
26
+ allowed, disallowed = @env.partition { |k, _| allowed_variables.include?(k) }.map(&:to_h)
27
+
28
+ error_message = "Variables #{disallowed.keys.to_sentence} have not been whitelisted"
29
+ raise NotPermitted.new(error_message) unless disallowed.empty?
30
+
31
+ allowed
32
+ end
33
+ end
34
+ end
@@ -2,7 +2,6 @@ module Shipit
2
2
  class SimpleMessageVerifier < ActiveSupport::MessageVerifier
3
3
  def initialize(secret, options = {})
4
4
  options[:serializer] ||= ToS
5
- secret += Rails.application.secrets.secret_key_base
6
5
  super(secret, options)
7
6
  end
8
7
 
@@ -31,6 +31,7 @@ module Shipit
31
31
  normalized_name = ActiveSupport::Inflector.transliterate(@task.author.name)
32
32
  super.merge(
33
33
  'ENVIRONMENT' => @stack.environment,
34
+ 'BRANCH' => @stack.branch,
34
35
  'USER' => "#{@task.author.login} (#{normalized_name}) via Shipit",
35
36
  'EMAIL' => @task.author.email,
36
37
  'BUNDLE_PATH' => Rails.root.join('data', 'bundler').to_s,
@@ -1,3 +1,3 @@
1
1
  module Shipit
2
- VERSION = '0.7.0'
2
+ VERSION = '0.8.0'
3
3
  end
@@ -18,6 +18,21 @@ module Shipit
18
18
  assert_json 'status', 'pending'
19
19
  end
20
20
 
21
+ test "#create triggers a new deploy for whitelisted variables" do
22
+ correct_env = {'SAFETY_DISABLED' => 1}
23
+ post :create, stack_id: @stack.to_param, sha: @commit.sha, env: correct_env
24
+ assert_response :accepted
25
+ assert_json 'type', 'deploy'
26
+ assert_json 'status', 'pending'
27
+ end
28
+
29
+ test "#create refuses to trigger a new deploy with incorrect variables" do
30
+ incorrect_env = {'DANGEROUS_VARIABLE' => 1}
31
+ post :create, stack_id: @stack.to_param, sha: @commit.sha, env: incorrect_env
32
+ assert_response :unprocessable_entity
33
+ assert_json 'message', 'Variables DANGEROUS_VARIABLE have not been whitelisted'
34
+ end
35
+
21
36
  test "#create use the claimed user as author" do
22
37
  request.headers['X-Shipit-User'] = @user.login
23
38
  post :create, stack_id: @stack.to_param, sha: @commit.sha
@@ -31,6 +31,21 @@ module Shipit
31
31
  assert_json 'status', 'pending'
32
32
  end
33
33
 
34
+ test "#trigger refuses to trigger a task with tasks not whitelisted" do
35
+ env = {'DANGEROUS_VARIABLE' => 'bar'}
36
+ post :trigger, stack_id: @stack.to_param, task_name: 'restart', env: env
37
+ assert_response :unprocessable_entity
38
+ assert_json 'message', 'Variables DANGEROUS_VARIABLE have not been whitelisted'
39
+ end
40
+
41
+ test "#trigger triggers a task with only whitelisted env variables" do
42
+ env = {'FOO' => 'bar'}
43
+ post :trigger, stack_id: @stack.to_param, task_name: 'restart', env: env
44
+ assert_response :accepted
45
+ assert_json 'type', 'task'
46
+ assert_json 'status', 'pending'
47
+ end
48
+
34
49
  test "#trigger returns a 404 when the task doesn't exist" do
35
50
  post :trigger, stack_id: @stack.to_param, task_name: 'doesnt_exist'
36
51
  assert_response :not_found
@@ -3,12 +3,30 @@ require 'test_helper'
3
3
  module Shipit
4
4
  class GithubAuthenticationControllerTest < ActionController::TestCase
5
5
  test ":callback can sign in to github" do
6
- @request.env['omniauth.auth'] = {info: {nickname: 'shipit'}}
7
- github_user = mock('Sawyer User')
8
- Shipit.github_api.stubs(:user).returns(github_user)
9
- User.expects(:find_or_create_from_github).with(github_user).returns(stub(id: 44))
6
+ auth = OmniAuth::AuthHash.new(
7
+ credentials: OmniAuth::AuthHash.new(
8
+ token: 's3cr3t',
9
+ ),
10
+ extra: OmniAuth::AuthHash.new(
11
+ raw_info: OmniAuth::AuthHash.new(
12
+ id: 44,
13
+ name: 'Shipit',
14
+ email: 'shipit@example.com',
15
+ login: 'shipit',
16
+ avatar_url: 'https://example.com',
17
+ api_url: 'https://github.com/api/v3/users/shipit',
18
+ ),
19
+ ),
20
+ )
21
+ @request.env['omniauth.auth'] = auth
10
22
 
11
- get :callback
23
+ assert_difference -> { User.count } do
24
+ get :callback
25
+ end
26
+
27
+ user = User.find_by_login('shipit')
28
+ assert_equal 's3cr3t', user.github_access_token
29
+ assert_equal 44, user.github_id
12
30
  end
13
31
  end
14
32
  end
@@ -15,13 +15,38 @@ module Shipit
15
15
  assert_response :ok
16
16
  end
17
17
 
18
- test "tasks defined in the shipit.yml can be triggered" do
19
- assert_difference '@stack.tasks.count', 1 do
18
+ test "tasks defined in the shipit.yml can't be triggered if the stack is being deployed" do
19
+ assert @stack.active_task?
20
+ assert_no_difference -> { @stack.tasks.count } do
21
+ post :create, stack_id: @stack, definition_id: @definition.id
22
+ end
23
+ assert_redirected_to new_stack_tasks_path(@stack, @definition)
24
+ end
25
+
26
+ test "tasks defined in the shipit.yml can be triggered anyway if force apram is present" do
27
+ assert @stack.active_task?
28
+ assert_difference -> { @stack.tasks.count } do
29
+ post :create, stack_id: @stack, definition_id: @definition.id, force: 'true'
30
+ end
31
+ assert_redirected_to stack_task_path(@stack, Task.last)
32
+ end
33
+
34
+ test "tasks defined in the shipit.yml can be triggered while the stack is being deployed if specified as such" do
35
+ @definition = @stack.find_task_definition('flush_cache')
36
+ assert_difference -> { @stack.tasks.count } do
20
37
  post :create, stack_id: @stack, definition_id: @definition.id
21
38
  end
22
39
  assert_redirected_to stack_task_path(@stack, Task.last)
23
40
  end
24
41
 
42
+ test "tasks with variables defined in the shipit.yml can be triggered with their variables set" do
43
+ env = {"FOO" => "0"}
44
+
45
+ post :create, stack_id: @stack, definition_id: @definition.id, task: {env: env}, force: 'true'
46
+
47
+ assert_redirected_to stack_tasks_path(@stack, Task.last)
48
+ end
49
+
25
50
  test "triggered tasks can be observed" do
26
51
  get :show, stack_id: @stack, id: @task.id
27
52
  assert_response :ok
@@ -171,8 +171,14 @@ module Shipit
171
171
  end
172
172
 
173
173
  def george
174
- rels = {self: stub(href: 'https://api.github.com/user/george')}
175
- stub(id: 42, name: 'George Abitbol', login: 'george', email: 'george@cyclim.se', rels: rels)
174
+ stub(
175
+ id: 42,
176
+ name: 'George Abitbol',
177
+ login: 'george',
178
+ email: 'george@cyclim.se',
179
+ avatar_url: 'https://avatars.githubusercontent.com/u/42?v=3',
180
+ url: 'https://api.github.com/user/george',
181
+ )
176
182
  end
177
183
  end
178
184
  end
@@ -1,6 +1,6 @@
1
1
  default: &default
2
2
  adapter: mysql2
3
- encoding: utf8
3
+ encoding: utf8mb4
4
4
  strict: true
5
5
 
6
6
  development:
@@ -1,5 +1,5 @@
1
1
  development:
2
- secret_key_base: s3cr3t
2
+ secret_key_base: s3cr3ts3cr3ts3cr3ts3cr3ts3cr3ts3cr3t
3
3
  github_oauth:
4
4
  # id:
5
5
  # secret:
@@ -15,7 +15,7 @@ development:
15
15
  redis_url: "redis://127.0.0.1:6379/7"
16
16
 
17
17
  test:
18
- secret_key_base: s3cr37
18
+ secret_key_base: s3cr3ts3cr3ts3cr3ts3cr3ts3cr3ts3cr3t
19
19
  host: shipit.com
20
20
  github_api:
21
21
  access_token: t0kEn
@@ -1,5 +1,5 @@
1
1
  development:
2
- secret_key_base: s3cr3t
2
+ secret_key_base: s3cr3ts3cr3ts3cr3ts3cr3ts3cr3ts3cr3t
3
3
  # github_domain: github.shopify.com
4
4
  github_oauth:
5
5
  id: 29f6c9084a8837f337ff
@@ -14,7 +14,7 @@ development:
14
14
  redis_url: "redis://127.0.0.1:6379/7"
15
15
 
16
16
  test:
17
- secret_key_base: s3cr37
17
+ secret_key_base: s3cr3ts3cr3ts3cr3ts3cr3ts3cr3ts3cr3t
18
18
  host: shipit.com
19
19
  github_api:
20
20
  access_token: t0kEn