shipit-engine 0.29.0 → 0.30.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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +37 -2
  3. data/app/assets/images/archive-solid.svg +1 -0
  4. data/app/assets/stylesheets/_pages/_stacks.scss +76 -0
  5. data/app/controllers/shipit/api/stacks_controller.rb +20 -1
  6. data/app/controllers/shipit/api_clients_controller.rb +49 -0
  7. data/app/controllers/shipit/merge_status_controller.rb +8 -4
  8. data/app/controllers/shipit/stacks_controller.rb +58 -9
  9. data/app/controllers/shipit/webhooks_controller.rb +2 -130
  10. data/app/helpers/shipit/stacks_helper.rb +4 -0
  11. data/app/jobs/shipit/background_job/unique.rb +3 -1
  12. data/app/jobs/shipit/continuous_delivery_job.rb +1 -0
  13. data/app/jobs/shipit/destroy_stack_job.rb +2 -2
  14. data/app/models/shipit/commit.rb +21 -9
  15. data/app/models/shipit/commit_deployment.rb +15 -11
  16. data/app/models/shipit/commit_deployment_status.rb +6 -2
  17. data/app/models/shipit/deploy.rb +48 -7
  18. data/app/models/shipit/deploy_stats.rb +57 -0
  19. data/app/models/shipit/repository.rb +38 -0
  20. data/app/models/shipit/stack.rb +41 -34
  21. data/app/models/shipit/task.rb +26 -4
  22. data/app/models/shipit/webhooks.rb +32 -0
  23. data/app/models/shipit/webhooks/handlers/check_suite_handler.rb +19 -0
  24. data/app/models/shipit/webhooks/handlers/handler.rb +40 -0
  25. data/app/models/shipit/webhooks/handlers/membership_handler.rb +45 -0
  26. data/app/models/shipit/webhooks/handlers/push_handler.rb +20 -0
  27. data/app/models/shipit/webhooks/handlers/status_handler.rb +26 -0
  28. data/app/serializers/shipit/stack_serializer.rb +6 -1
  29. data/app/validators/ascii_only_validator.rb +3 -3
  30. data/app/views/layouts/_head.html.erb +0 -0
  31. data/app/views/layouts/shipit.html.erb +4 -2
  32. data/app/views/shipit/api_clients/index.html.erb +36 -0
  33. data/app/views/shipit/api_clients/new.html.erb +33 -0
  34. data/app/views/shipit/api_clients/show.html.erb +35 -0
  35. data/app/views/shipit/merge_status/logged_out.erb +1 -1
  36. data/app/views/shipit/stacks/_header.html.erb +12 -7
  37. data/app/views/shipit/stacks/_links.html.erb +1 -0
  38. data/app/views/shipit/stacks/index.html.erb +7 -2
  39. data/app/views/shipit/stacks/settings.html.erb +19 -0
  40. data/app/views/shipit/stacks/statistics.html.erb +82 -0
  41. data/config/locales/en.yml +14 -2
  42. data/config/routes.rb +4 -0
  43. data/db/migrate/20191209231045_create_shipit_repositories.rb +12 -0
  44. data/db/migrate/20191209231307_add_repository_reference_to_stacks.rb +15 -0
  45. data/db/migrate/20191216162728_backfill_repository_data.rb +22 -0
  46. data/db/migrate/20191216163010_remove_repository_information_from_stacks.rb +20 -0
  47. data/db/migrate/20191219205202_add_archived_since_to_stacks.rb +6 -0
  48. data/db/migrate/20200102175621_optional_task_commits.rb +6 -0
  49. data/db/migrate/20200109132519_add_sha_to_commit_deployments.rb +5 -0
  50. data/lib/shipit/github_app.rb +32 -3
  51. data/lib/shipit/task_commands.rb +10 -2
  52. data/lib/shipit/version.rb +1 -1
  53. data/test/controllers/api/ccmenu_controller_test.rb +1 -1
  54. data/test/controllers/api/stacks_controller_test.rb +14 -6
  55. data/test/controllers/api_clients_controller_test.rb +103 -0
  56. data/test/controllers/merge_status_controller_test.rb +21 -4
  57. data/test/controllers/stacks_controller_test.rb +35 -0
  58. data/test/controllers/webhooks_controller_test.rb +26 -0
  59. data/test/dummy/config/environments/development.rb +22 -4
  60. data/test/dummy/db/schema.rb +17 -6
  61. data/test/dummy/db/seeds.rb +20 -6
  62. data/test/fixtures/shipit/commit_deployment_statuses.yml +4 -4
  63. data/test/fixtures/shipit/commit_deployments.yml +8 -8
  64. data/test/fixtures/shipit/commits.yml +23 -0
  65. data/test/fixtures/shipit/repositories.yml +23 -0
  66. data/test/fixtures/shipit/stacks.yml +100 -16
  67. data/test/fixtures/shipit/tasks.yml +66 -3
  68. data/test/jobs/destroy_stack_job_test.rb +9 -0
  69. data/test/models/commit_deployment_status_test.rb +33 -4
  70. data/test/models/commit_deployment_test.rb +8 -11
  71. data/test/models/commits_test.rb +22 -2
  72. data/test/models/deploy_stats_test.rb +112 -0
  73. data/test/models/deploys_test.rb +55 -17
  74. data/test/models/pull_request_test.rb +1 -1
  75. data/test/models/shipit/repository_test.rb +76 -0
  76. data/test/models/shipit/wehbooks/handlers_test.rb +26 -0
  77. data/test/models/stacks_test.rb +44 -51
  78. data/test/models/undeployed_commits_test.rb +13 -0
  79. data/test/test_helper.rb +3 -1
  80. data/test/unit/deploy_commands_test.rb +9 -0
  81. data/test/unit/github_app_test.rb +136 -0
  82. metadata +161 -128
@@ -10,6 +10,7 @@ first:
10
10
  additions: 42
11
11
  deletions: 24
12
12
  updated_at: <%= 8.days.ago.to_s(:db) %>
13
+ created_at: <%= 1.day.ago.to_s(:db) %>
13
14
 
14
15
  second:
15
16
  id: 2
@@ -23,6 +24,7 @@ second:
23
24
  additions: 1
24
25
  deletions: 1
25
26
  updated_at: <%= 8.days.ago.to_s(:db) %>
27
+ created_at: <%= 1.day.ago.to_s(:db) %>
26
28
 
27
29
  third:
28
30
  id: 3
@@ -36,6 +38,7 @@ third:
36
38
  additions: 12
37
39
  deletions: 64
38
40
  updated_at: <%= 8.days.ago.to_s(:db) %>
41
+ created_at: <%= 1.day.ago.to_s(:db) %>
39
42
 
40
43
  fourth:
41
44
  id: 4
@@ -49,6 +52,7 @@ fourth:
49
52
  additions: 420
50
53
  deletions: 342
51
54
  updated_at: <%= 8.days.ago.to_s(:db) %>
55
+ created_at: <%= 1.day.ago.to_s(:db) %>
52
56
 
53
57
  fifth:
54
58
  id: 5
@@ -62,6 +66,7 @@ fifth:
62
66
  additions: 1
63
67
  deletions: 24
64
68
  updated_at: <%= 8.days.ago.to_s(:db) %>
69
+ created_at: <%= 1.day.ago.to_s(:db) %>
65
70
 
66
71
  cyclimse_first:
67
72
  id: 6
@@ -194,6 +199,7 @@ canaries_first:
194
199
  additions: 42
195
200
  deletions: 24
196
201
  updated_at: <%= 8.days.ago.to_s(:db) %>
202
+ created_at: <%= 1.day.ago.to_s(:db) %>
197
203
 
198
204
  canaries_second:
199
205
  id: 302
@@ -207,6 +213,7 @@ canaries_second:
207
213
  additions: 1
208
214
  deletions: 1
209
215
  updated_at: <%= 8.days.ago.to_s(:db) %>
216
+ created_at: <%= 1.day.ago.to_s(:db) %>
210
217
 
211
218
  canaries_third:
212
219
  id: 303
@@ -220,6 +227,7 @@ canaries_third:
220
227
  additions: 12
221
228
  deletions: 64
222
229
  updated_at: <%= 8.days.ago.to_s(:db) %>
230
+ created_at: <%= 1.day.ago.to_s(:db) %>
223
231
 
224
232
  canaries_fourth:
225
233
  id: 304
@@ -233,6 +241,7 @@ canaries_fourth:
233
241
  additions: 420
234
242
  deletions: 342
235
243
  updated_at: <%= 8.days.ago.to_s(:db) %>
244
+ created_at: <%= 1.day.ago.to_s(:db) %>
236
245
 
237
246
  canaries_fifth:
238
247
  id: 305
@@ -246,6 +255,7 @@ canaries_fifth:
246
255
  additions: 1
247
256
  deletions: 24
248
257
  updated_at: <%= 8.days.ago.to_s(:db) %>
258
+ created_at: <%= 1.day.ago.to_s(:db) %>
249
259
 
250
260
  undeployed_1:
251
261
  id: 401
@@ -350,3 +360,16 @@ single:
350
360
  additions: 420
351
361
  deletions: 342
352
362
  updated_at: <%= 8.days.ago.to_s(:db) %>
363
+
364
+ task_no_commits:
365
+ id: 601
366
+ sha: 547578b362bf2b4df5903e1c7960929361c3435a
367
+ message: "first commit"
368
+ stack: shipit_task_no_commits
369
+ author: walrus
370
+ committer: walrus
371
+ authored_at: <%= 4.days.ago.to_s(:db) %>
372
+ committed_at: <%= 3.days.ago.to_s(:db) %>
373
+ additions: 420
374
+ deletions: 342
375
+ updated_at: <%= 8.days.ago.to_s(:db) %>
@@ -0,0 +1,23 @@
1
+ shipit:
2
+ owner: shopify
3
+ name: shipit-engine
4
+
5
+ cyclimse:
6
+ owner: george
7
+ name: cyclimse
8
+
9
+ foo-bar:
10
+ owner: shopify
11
+ name: foo-bar
12
+
13
+ soc:
14
+ owner: "shopify"
15
+ name: "soc"
16
+
17
+ check_runs:
18
+ owner: shopify
19
+ name: check_runs
20
+
21
+ rails:
22
+ owner: rails
23
+ name: rails
@@ -1,8 +1,8 @@
1
1
  shipit:
2
- repo_owner: "shopify"
3
- repo_name: "shipit-engine"
2
+ repository: shipit
4
3
  environment: "production"
5
4
  branch: master
5
+ deploy_url: https://shipit.shopify.com
6
6
  ignore_ci: false
7
7
  merge_queue_enabled: true
8
8
  tasks_count: 8
@@ -54,8 +54,7 @@ shipit:
54
54
  updated_at: <%= 8.days.ago.to_s(:db) %>
55
55
 
56
56
  shipit_canaries:
57
- repo_owner: "shopify"
58
- repo_name: "shipit-engine"
57
+ repository: shipit
59
58
  environment: "canaries"
60
59
  branch: master
61
60
  ignore_ci: false
@@ -114,8 +113,7 @@ shipit_canaries:
114
113
  updated_at: <%= 8.days.ago.to_s(:db) %>
115
114
 
116
115
  cyclimse:
117
- repo_owner: george
118
- repo_name: cyclimse
116
+ repository: cyclimse
119
117
  environment: production
120
118
  branch: master
121
119
  ignore_ci: false
@@ -148,8 +146,7 @@ cyclimse:
148
146
  updated_at: <%= 8.days.ago.to_s(:db) %>
149
147
 
150
148
  undeployed_stack:
151
- repo_owner: "shopify"
152
- repo_name: "foo-bar"
149
+ repository: foo-bar
153
150
  environment: "production"
154
151
  branch: master
155
152
  ignore_ci: true
@@ -185,8 +182,7 @@ undeployed_stack:
185
182
  updated_at: <%= 8.days.ago.to_s(:db) %>
186
183
 
187
184
  soc:
188
- repo_owner: "shopify"
189
- repo_name: "soc"
185
+ repository: soc
190
186
  environment: "production"
191
187
  branch: master
192
188
  tasks_count: 0
@@ -220,16 +216,14 @@ soc:
220
216
  updated_at: <%= 8.days.ago.to_s(:db) %>
221
217
 
222
218
  check_runs:
223
- repo_owner: shopify
224
- repo_name: check_runs
219
+ repository: check_runs
225
220
  environment: production
226
221
  branch: master
227
222
  tasks_count: 0
228
223
  undeployed_commits_count: 1
229
224
 
230
225
  shipit_undeployed:
231
- repo_owner: "shopify"
232
- repo_name: "shipit-engine"
226
+ repository: shipit
233
227
  environment: "undeployed"
234
228
  branch: master
235
229
  ignore_ci: true
@@ -284,8 +278,7 @@ shipit_undeployed:
284
278
  updated_at: <%= 8.days.ago.to_s(:db) %>
285
279
 
286
280
  shipit_single:
287
- repo_owner: "shopify"
288
- repo_name: "shipit-engine"
281
+ repository: shipit
289
282
  environment: "single"
290
283
  branch: master
291
284
  ignore_ci: false
@@ -320,3 +313,94 @@ shipit_single:
320
313
  }
321
314
  updated_at: <%= 8.days.ago.to_s(:db) %>
322
315
  last_deployed_at: <%= 8.days.ago.to_s(:db) %>
316
+
317
+ shipit_stats:
318
+ repository: shipit
319
+ environment: "stats"
320
+ branch: master
321
+ ignore_ci: false
322
+ merge_queue_enabled: true
323
+ tasks_count: 4
324
+ undeployed_commits_count: 1
325
+ cached_deploy_spec: >
326
+ {
327
+ "machine": {"environment": {}},
328
+ "review": {
329
+ "checklist": ["foo", "bar", "baz"],
330
+ "monitoring": [
331
+ {"image": "https://example.com/monitor.png", "width": 200, "height": 300}
332
+ ]
333
+ },
334
+ "dependencies": {"override": []},
335
+ "deploy": {"override": null},
336
+ "rollback": {"override": ["echo 'Rollback!'"]},
337
+ "fetch": ["echo '42'"],
338
+ "tasks": {
339
+ "restart": {
340
+ "action": "Restart application",
341
+ "description": "Restart app and job servers",
342
+ "steps": [
343
+ "cap $ENVIRONMENT deploy:restart"
344
+ ]
345
+ }
346
+ },
347
+ "ci": {
348
+ "blocking": ["soc/compliance"]
349
+ }
350
+ }
351
+ updated_at: <%= 8.days.ago.to_s(:db) %>
352
+ last_deployed_at: <%= 8.days.ago.to_s(:db) %>
353
+
354
+ shipit_task_no_commits:
355
+ repository: shipit
356
+ environment: "task_no_commits"
357
+ branch: master
358
+ ignore_ci: true
359
+ merge_queue_enabled: true
360
+ tasks_count: 1
361
+ undeployed_commits_count: 1
362
+ continuous_deployment: true
363
+ cached_deploy_spec: >
364
+ {
365
+ "machine": {"environment": {}},
366
+ "review": {
367
+ "checklist": ["foo", "bar", "baz"],
368
+ "monitoring": [
369
+ {"image": "https://example.com/monitor.png", "width": 200, "height": 300}
370
+ ]
371
+ },
372
+ "dependencies": {"override": []},
373
+ "deploy": {"override": null, "interval": 60, "max_commits": 3, "variables": [{"name": "SAFETY_DISABLED", "title": "Set to 1 to do dangerous things", "default": 0}]},
374
+ "rollback": {"override": ["echo 'Rollback!'"]},
375
+ "fetch": ["echo '42'"],
376
+ "tasks": {
377
+ "restart": {
378
+ "action": "Restart application",
379
+ "description": "Restart app and job servers",
380
+ "variables": [
381
+ {"name": "FOO", "title": "Set to 0 to foo", "default": 1},
382
+ {"name": "BAR", "title": "Set to 1 to bar", "default": 0},
383
+ {"name": "WALRUS", "title": "Walrus without a default value"}
384
+ ],
385
+ "steps": [
386
+ "cap $ENVIRONMENT deploy:restart"
387
+ ]
388
+ },
389
+ "flush_cache": {
390
+ "action": "Flush cache",
391
+ "description": "Flush the application cache",
392
+ "steps": [
393
+ "cap $ENVIRONMENT cache:flush"
394
+ ],
395
+ "allow_concurrency": true
396
+ }
397
+ },
398
+ "merge": {
399
+ "revalidate_after": 900
400
+ },
401
+ "ci": {
402
+ "hide": ["ci/hidden"],
403
+ "allow_failures": ["ci/ok_to_fail"]
404
+ }
405
+ }
406
+ updated_at: <%= 8.days.ago.to_s(:db) %>
@@ -10,7 +10,7 @@ shipit:
10
10
  deletions: 1
11
11
  created_at: <%= (60 - 1).minutes.ago.to_s(:db) %>
12
12
  started_at: <%= (60 - 1).minutes.ago.to_s(:db) %>
13
- ended_at: <%= (60 - 3).minutes.ago.to_s(:db) %>
13
+ ended_at: <%= (60 - 6).minutes.ago.to_s(:db) %>
14
14
 
15
15
  shipit2:
16
16
  id: 2
@@ -29,8 +29,6 @@ shipit2:
29
29
  shipit_restart:
30
30
  id: 3
31
31
  user: walrus
32
- since_commit_id: 2 # second
33
- until_commit_id: 2 # second
34
32
  type: Shipit::Task
35
33
  stack: shipit
36
34
  status: success
@@ -278,3 +276,68 @@ shipit_single:
278
276
  created_at: <%= (60 - 2).minutes.ago.to_s(:db) %>
279
277
  started_at: <%= (60 - 2).minutes.ago.to_s(:db) %>
280
278
  ended_at: <%= (60 - 4).minutes.ago.to_s(:db) %>
279
+
280
+ shipit_stats:
281
+ id: 401
282
+ user: walrus
283
+ since_commit_id: 601
284
+ until_commit_id: 601
285
+ type: Shipit::Deploy
286
+ stack: shipit_stats
287
+ status: success
288
+ additions: 12
289
+ deletions: 64
290
+ created_at: <%= 60.minutes.ago.to_s(:db) %>
291
+ started_at: <%= 60.minutes.ago.to_s(:db) %>
292
+ ended_at: <%= (60 - 4).minutes.ago.to_s(:db) %>
293
+
294
+ shipit_stats_2:
295
+ id: 402
296
+ user: walrus
297
+ since_commit_id: 602
298
+ until_commit_id: 603
299
+ type: Shipit::Deploy
300
+ stack: shipit_stats
301
+ status: failed
302
+ additions: 12
303
+ deletions: 64
304
+ created_at: <%= (60 - 5).minutes.ago.to_s(:db) %>
305
+ started_at: <%= (60 - 5).minutes.ago.to_s(:db) %>
306
+ ended_at: <%= (60 - 11).minutes.ago.to_s(:db) %>
307
+
308
+ shipit_stats_3:
309
+ id: 403
310
+ user: walrus
311
+ since_commit_id: 604
312
+ until_commit_id: 605
313
+ type: Shipit::Deploy
314
+ stack: shipit_stats
315
+ status: success
316
+ additions: 12
317
+ deletions: 64
318
+ created_at: <%= (60 - 10).minutes.ago.to_s(:db) %>
319
+ started_at: <%= (60 - 12).minutes.ago.to_s(:db) %>
320
+ ended_at: <%= (60 - 15).minutes.ago.to_s(:db) %>
321
+
322
+ shipit_stats_4:
323
+ id: 404
324
+ user: walrus
325
+ since_commit_id: 606
326
+ until_commit_id: 608
327
+ type: Shipit::Deploy
328
+ stack: shipit_stats
329
+ status: success
330
+ additions: 12
331
+ deletions: 64
332
+ created_at: <%= (30 - 15).minutes.ago.to_s(:db) %>
333
+ started_at: <%= (30 - 15).minutes.ago.to_s(:db) %>
334
+ ended_at: <%= (30 - 17).minutes.ago.to_s(:db) %>
335
+
336
+ shipit_nocommit_task:
337
+ id: 501
338
+ user: walrus
339
+ type: Shipit::Task
340
+ stack: shipit_task_no_commits
341
+ status: pending
342
+ created_at: <%= (60 - 2).minutes.ago.to_s(:db) %>
343
+ started_at: <%= (60 - 2).minutes.ago.to_s(:db) %>
@@ -14,5 +14,14 @@ module Shipit
14
14
  @job.perform(@stack)
15
15
  end
16
16
  end
17
+
18
+ test "perform destroys the CommitDeployments of the received stack" do
19
+ stack = shipit_stacks(:shipit)
20
+ Shipit.legacy_github_api.stubs(:remove_hook)
21
+
22
+ assert_changes -> { CommitDeployment.count }, 'CommitDeployments not deleted' do
23
+ @job.perform(stack)
24
+ end
25
+ end
17
26
  end
18
27
  end
@@ -3,10 +3,9 @@ require 'test_helper'
3
3
  module Shipit
4
4
  class CommitDeploymentStatusTest < ActiveSupport::TestCase
5
5
  setup do
6
- @status = shipit_commit_deployment_statuses(:shipit2_deploy_third_pending)
6
+ @status = shipit_commit_deployment_statuses(:shipit2_deploy_third_in_progress)
7
7
  @deployment = @status.commit_deployment
8
8
  @task = @deployment.task
9
- @commit = @deployment.commit
10
9
  @author = @deployment.author
11
10
  end
12
11
 
@@ -14,14 +13,44 @@ module Shipit
14
13
  response = stub(id: 44, url: 'https://example.com')
15
14
  @author.github_api.expects(:create_deployment_status).with(
16
15
  @deployment.api_url,
17
- 'pending',
16
+ 'in_progress',
17
+ accept: "application/vnd.github.flash-preview+json",
18
18
  target_url: "http://shipit.com/shopify/shipit-engine/production/deploys/#{@task.id}",
19
- description: "walrus triggered the deploy of shopify/shipit-engine/production to #{@commit.sha}",
19
+ description: "walrus triggered the deploy of shopify/shipit-engine/production to #{@deployment.short_sha}",
20
+ environment_url: "https://shipit.shopify.com",
20
21
  ).returns(response)
21
22
 
22
23
  @status.create_on_github!
23
24
  assert_equal response.id, @status.github_id
24
25
  assert_equal response.url, @status.api_url
25
26
  end
27
+
28
+ test 'description is truncated to character limit' do
29
+ limit = CommitDeploymentStatus::DESCRIPTION_CHARACTER_LIMIT_ON_GITHUB
30
+ deployment = shipit_commit_deployments(:shipit_deploy_second)
31
+
32
+ status = deployment.statuses.create!(status: 'success')
33
+ status.stubs(:description).returns('desc' * limit)
34
+ create_status_response = stub(id: 'abcd', url: 'https://github.com/status/abcd')
35
+ status.author.github_api.expects(:create_deployment_status).with do |*_args, **kwargs|
36
+ kwargs[:description].size <= limit
37
+ end.returns(create_status_response)
38
+
39
+ status.create_on_github!
40
+ end
41
+
42
+ test 'includes deployment url when the deployment succeeds' do
43
+ deployment = shipit_commit_deployments(:shipit_deploy_second)
44
+
45
+ status = deployment.statuses.create!(status: 'success')
46
+ stack = status.stack
47
+ stack.deploy_url = "stack-deploy-url"
48
+ create_status_response = stub(id: 'abcd', url: 'https://github.com/status/abcd')
49
+ status.author.github_api.expects(:create_deployment_status).with do |*_args, **kwargs|
50
+ kwargs[:environment_url] == 'stack-deploy-url'
51
+ end.returns(create_status_response)
52
+
53
+ status.create_on_github!
54
+ end
26
55
  end
27
56
  end
@@ -4,30 +4,27 @@ module Shipit
4
4
  class CommitDeploymentTest < ActiveSupport::TestCase
5
5
  setup do
6
6
  @deployment = shipit_commit_deployments(:shipit_pending_fourth)
7
- @commit = @deployment.commit
8
7
  @task = @deployment.task
9
8
  @stack = @task.stack
10
9
  @author = @deployment.author
11
10
  end
12
11
 
13
- test "there can only be one record per deploy and commit pair" do
14
- assert_raises ActiveRecord::RecordNotUnique do
15
- CommitDeployment.create!(task: @deployment.task, commit: @deployment.commit)
16
- end
17
- end
18
-
19
12
  test "creation on GitHub" do
20
- pull_request_response = stub(head: stub(sha: '6dcb09b5b57875f334f61aebed695e2e4193db5e'))
21
- @author.github_api.expects(:pull_request).with('shopify/shipit-engine', 7).returns(pull_request_response)
22
-
23
13
  deployment_response = stub(id: 42, url: 'https://example.com')
24
14
  @author.github_api.expects(:create_deployment).with(
25
15
  'shopify/shipit-engine',
26
- pull_request_response.head.sha,
16
+ @deployment.sha,
27
17
  auto_merge: false,
28
18
  required_contexts: [],
29
19
  description: "Via Shipit",
30
20
  environment: @stack.environment,
21
+ payload: {
22
+ shipit: {
23
+ task_id: 4,
24
+ from_sha: 'f890fd8b5f2be05d1fedb763a3605ee461c39074',
25
+ to_sha: '467578b362bf2b4df5903e1c7960929361c3435a',
26
+ },
27
+ },
31
28
  ).returns(deployment_response)
32
29
 
33
30
  @deployment.create_on_github!