shipit-engine 0.7.0 → 0.8.0

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.
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