shipit-engine 0.15.0 → 0.16.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +34 -1
- data/app/assets/javascripts/shipit/page_updater.js.coffee +63 -0
- data/app/assets/javascripts/shipit/stacks.js.coffee +9 -21
- data/app/assets/stylesheets/_base/_base.scss +2 -2
- data/app/assets/stylesheets/_base/_colors.scss +0 -1
- data/app/assets/stylesheets/_base/_forms.scss +14 -0
- data/app/assets/stylesheets/_pages/_commits.scss +16 -6
- data/app/assets/stylesheets/_pages/_settings.scss +8 -0
- data/app/assets/stylesheets/_pages/_stacks.scss +1 -1
- data/app/controllers/shipit/api/base_controller.rb +7 -3
- data/app/controllers/shipit/api/ccmenu_controller.rb +33 -0
- data/app/controllers/shipit/api/pull_requests_controller.rb +36 -0
- data/app/controllers/shipit/api/stacks_controller.rb +1 -0
- data/app/controllers/shipit/ccmenu_url_controller.rb +22 -0
- data/app/controllers/shipit/pull_requests_controller.rb +30 -0
- data/app/controllers/shipit/stacks_controller.rb +7 -2
- data/app/controllers/shipit/webhooks_controller.rb +1 -2
- data/app/helpers/shipit/github_url_helper.rb +8 -2
- data/app/helpers/shipit/shipit_helper.rb +9 -0
- data/app/helpers/shipit/stacks_helper.rb +22 -7
- data/app/jobs/shipit/background_job/unique.rb +19 -1
- data/app/jobs/shipit/cache_deploy_spec_job.rb +1 -1
- data/app/jobs/shipit/merge_pull_requests_job.rb +26 -0
- data/app/jobs/shipit/perform_task_job.rb +1 -1
- data/app/jobs/shipit/refresh_pull_request_job.rb +8 -0
- data/app/models/concerns/shipit/deferred_touch.rb +6 -1
- data/app/models/shipit/anonymous_user.rb +4 -0
- data/app/models/shipit/application_record.rb +5 -0
- data/app/models/shipit/commit.rb +51 -49
- data/app/models/shipit/commit_message.rb +32 -0
- data/app/models/shipit/deploy.rb +5 -0
- data/app/models/shipit/deploy_spec.rb +26 -1
- data/app/models/shipit/deploy_spec/file_system.rb +6 -1
- data/app/models/shipit/deploy_spec/kubernetes_discovery.rb +10 -13
- data/app/models/shipit/deploy_spec/npm_discovery.rb +2 -1
- data/app/models/shipit/duration.rb +3 -1
- data/app/models/shipit/hook.rb +1 -0
- data/app/models/shipit/pull_request.rb +252 -0
- data/app/models/shipit/stack.rb +33 -17
- data/app/models/shipit/status.rb +1 -16
- data/app/models/shipit/status/common.rb +45 -0
- data/app/models/shipit/status/group.rb +82 -0
- data/app/models/shipit/status/missing.rb +30 -0
- data/app/models/shipit/status/unknown.rb +33 -0
- data/app/models/shipit/unlimited_api_client.rb +10 -0
- data/app/serializers/shipit/commit_serializer.rb +1 -1
- data/app/serializers/shipit/pull_request_serializer.rb +20 -0
- data/app/serializers/shipit/stack_serializer.rb +6 -2
- data/app/views/layouts/shipit.html.erb +41 -39
- data/app/views/shipit/ccmenu/project.xml.builder +13 -0
- data/app/views/shipit/commits/_commit.html.erb +1 -1
- data/app/views/shipit/deploys/_deploy.html.erb +1 -1
- data/app/views/shipit/pull_requests/_pull_request.html.erb +29 -0
- data/app/views/shipit/pull_requests/index.html.erb +20 -0
- data/app/views/shipit/shared/_author.html.erb +7 -0
- data/app/views/shipit/stacks/_header.html.erb +5 -0
- data/app/views/shipit/stacks/settings.html.erb +13 -0
- data/app/views/shipit/stacks/show.html.erb +3 -2
- data/app/views/shipit/statuses/_group.html.erb +1 -1
- data/app/views/shipit/tasks/_task.html.erb +1 -1
- data/config/initializers/inflections.rb +3 -0
- data/config/locales/en.yml +1 -3
- data/config/routes.rb +8 -0
- data/db/migrate/20170130113633_create_shipit_pull_requests.rb +25 -0
- data/db/migrate/20170208143657_add_pull_request_number_and_title_to_commits.rb +7 -0
- data/db/migrate/20170208154609_backfill_merge_commits.rb +13 -0
- data/db/migrate/20170209160355_add_branch_to_pull_requests.rb +5 -0
- data/db/migrate/20170215123538_add_merge_queue_enabled_to_stacks.rb +5 -0
- data/db/migrate/20170220152410_improve_users_indexing.rb +6 -0
- data/db/migrate/20170221102128_improve_tasks_indexing.rb +8 -0
- data/db/migrate/20170221130336_add_last_revalidated_at_on_pull_requests.rb +10 -0
- data/lib/shipit.rb +2 -0
- data/lib/shipit/version.rb +1 -1
- data/lib/tasks/cron.rake +1 -0
- data/test/controllers/api/ccmenu_controller_test.rb +57 -0
- data/test/controllers/api/commits_controller_test.rb +1 -1
- data/test/controllers/api/pull_requests_controller_test.rb +59 -0
- data/test/controllers/ccmenu_controller_test.rb +33 -0
- data/test/controllers/pull_requests_controller_test.rb +31 -0
- data/test/controllers/webhooks_controller_test.rb +3 -4
- data/test/dummy/config/environments/development.rb +3 -1
- data/test/dummy/data/stacks/shopify/junk/production/git/README.md +8 -0
- data/test/dummy/data/stacks/shopify/junk/production/git/circle.yml +4 -0
- data/test/dummy/data/stacks/shopify/junk/production/git/shipit.yml +4 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/schema.rb +45 -11
- data/test/dummy/db/seeds.rb +33 -10
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/fixtures/shipit/commits.yml +14 -0
- data/test/fixtures/shipit/pull_requests.yml +56 -0
- data/test/fixtures/shipit/stacks.yml +5 -1
- data/test/fixtures/shipit/statuses.yml +8 -0
- data/test/helpers/json_helper.rb +16 -14
- data/test/jobs/merge_pull_requests_job_test.rb +59 -0
- data/test/models/commits_test.rb +104 -49
- data/test/{unit → models}/deploy_spec_test.rb +138 -12
- data/test/models/deploys_test.rb +10 -4
- data/test/models/pull_request_test.rb +197 -0
- data/test/models/stacks_test.rb +46 -53
- data/test/models/status/group_test.rb +44 -0
- data/test/models/status/missing_test.rb +23 -0
- data/test/models/status_test.rb +3 -6
- data/test/unit/csv_serializer_test.rb +10 -2
- metadata +57 -12
- data/app/models/shipit/missing_status.rb +0 -21
- data/app/models/shipit/status_group.rb +0 -35
- data/app/models/shipit/unknown_status.rb +0 -48
- data/app/views/shipit/commits/_commit_author.html.erb +0 -7
- data/test/models/missing_status_test.rb +0 -23
- data/test/models/status_group_test.rb +0 -26
data/test/models/stacks_test.rb
CHANGED
@@ -216,7 +216,7 @@ module Shipit
|
|
216
216
|
end
|
217
217
|
|
218
218
|
test "#destroy also destroy associated Commits" do
|
219
|
-
assert_difference -> { Commit.count }, -
|
219
|
+
assert_difference -> { Commit.count }, -shipit_stacks(:shipit).commits.count do
|
220
220
|
shipit_stacks(:shipit).destroy
|
221
221
|
end
|
222
222
|
end
|
@@ -258,19 +258,38 @@ module Shipit
|
|
258
258
|
end
|
259
259
|
end
|
260
260
|
|
261
|
-
test "#deployable? returns true if stack is not locked and is not deploying" do
|
261
|
+
test "#deployable? returns true if the stack is not locked and is not deploying" do
|
262
262
|
@stack.deploys.destroy_all
|
263
|
-
|
263
|
+
assert_predicate @stack, :deployable?
|
264
264
|
end
|
265
265
|
|
266
|
-
test "#deployable? returns false if stack is locked" do
|
266
|
+
test "#deployable? returns false if the stack is locked" do
|
267
267
|
@stack.update!(lock_reason: 'Maintenance operation')
|
268
|
-
|
268
|
+
refute_predicate @stack, :deployable?
|
269
269
|
end
|
270
270
|
|
271
|
-
test "#deployable? returns false if stack is deploying" do
|
271
|
+
test "#deployable? returns false if the stack is deploying" do
|
272
272
|
@stack.trigger_deploy(shipit_commits(:third), AnonymousUser.new)
|
273
|
-
|
273
|
+
refute_predicate @stack, :deployable?
|
274
|
+
end
|
275
|
+
|
276
|
+
test "#allows_merges? returns true if the stack is not locked and the branch is green" do
|
277
|
+
assert_predicate @stack, :allows_merges?
|
278
|
+
end
|
279
|
+
|
280
|
+
test "#allows_merges? returns false if the stack is locked" do
|
281
|
+
@stack.update!(lock_reason: 'Maintenance operation')
|
282
|
+
refute_predicate @stack, :allows_merges?
|
283
|
+
end
|
284
|
+
|
285
|
+
test "#allows_merges? returns false if the merge queue is disabled" do
|
286
|
+
@stack.update!(merge_queue_enabled: false)
|
287
|
+
refute_predicate @stack, :allows_merges?
|
288
|
+
end
|
289
|
+
|
290
|
+
test "#allows_merges? returns false if the branch is failing" do
|
291
|
+
@stack.undeployed_commits.last.statuses.create!(context: 'ci/travis', state: 'failure', stack: @stack)
|
292
|
+
refute_predicate @stack, :allows_merges?
|
274
293
|
end
|
275
294
|
|
276
295
|
test "#monitoring is empty if cached_deploy_spec is blank" do
|
@@ -313,6 +332,16 @@ module Shipit
|
|
313
332
|
end
|
314
333
|
end
|
315
334
|
|
335
|
+
test "unlocking the stack triggers a MergePullRequests job" do
|
336
|
+
assert_no_enqueued_jobs(only: MergePullRequestsJob) do
|
337
|
+
@stack.update(lock_reason: "Just for fun", lock_author: shipit_users(:walrus))
|
338
|
+
end
|
339
|
+
|
340
|
+
assert_enqueued_with(job: MergePullRequestsJob, args: [@stack]) do
|
341
|
+
@stack.update(lock_reason: nil)
|
342
|
+
end
|
343
|
+
end
|
344
|
+
|
316
345
|
test "the git cache lock prevent concurrent access to the git cache" do
|
317
346
|
@stack.acquire_git_cache_lock do
|
318
347
|
assert_raises Redis::Lock::LockTimeout do
|
@@ -346,26 +375,6 @@ module Shipit
|
|
346
375
|
end
|
347
376
|
end
|
348
377
|
|
349
|
-
test "#filter_visible_statuses removes statuses from hidden contexts" do
|
350
|
-
stack = shipit_stacks(:cyclimse)
|
351
|
-
stack.stubs(hidden_statuses: ['ci/hidden'])
|
352
|
-
commit1 = Status.new(state: 'pending', context: 'ci/valid')
|
353
|
-
commit2 = Status.new(state: 'pending', context: 'ci/valid')
|
354
|
-
hidden = Status.new(state: 'pending', context: 'ci/hidden')
|
355
|
-
|
356
|
-
assert_equal [commit1, commit2], stack.filter_visible_statuses([hidden, commit1, commit2])
|
357
|
-
end
|
358
|
-
|
359
|
-
test "#filter_meaningful_statuses removes statuses from soft-failing contexts" do
|
360
|
-
stack = shipit_stacks(:cyclimse)
|
361
|
-
stack.stubs(soft_failing_statuses: ['ci/soft-fail'])
|
362
|
-
commit1 = Status.new(state: 'pending', context: 'ci/valid')
|
363
|
-
commit2 = Status.new(state: 'pending', context: 'ci/valid')
|
364
|
-
soft_fail = Status.new(state: 'pending', context: 'ci/soft-fail')
|
365
|
-
|
366
|
-
assert_equal [commit1, commit2], stack.filter_meaningful_statuses([soft_fail, commit1, commit2])
|
367
|
-
end
|
368
|
-
|
369
378
|
test "updating the stack emit a hook" do
|
370
379
|
expect_hook(:stack, @stack, action: :updated, stack: @stack) do
|
371
380
|
@stack.update(repo_name: 'foo')
|
@@ -397,42 +406,26 @@ module Shipit
|
|
397
406
|
assert_equal 'success', @stack.merge_status
|
398
407
|
end
|
399
408
|
|
400
|
-
test "#merge_status returns
|
409
|
+
test "#merge_status returns success if all undeployed commits and last deployed commit are in pending or unknown state" do
|
401
410
|
shipit_commits(:fifth).statuses.destroy_all
|
402
411
|
shipit_commits(:fourth).statuses.update_all(state: 'pending')
|
403
412
|
shipit_commits(:third).statuses.update_all(state: 'pending')
|
404
413
|
@stack.deploys_and_rollbacks.last.update!(status: 'success', until_commit: shipit_commits(:third))
|
405
414
|
|
406
|
-
assert_equal '
|
415
|
+
assert_equal 'success', @stack.merge_status
|
407
416
|
end
|
408
417
|
|
409
|
-
test "#merge_status returns
|
418
|
+
test "#merge_status returns success if there are no undeployed commits and no deployed commits" do
|
410
419
|
@stack.deploys_and_rollbacks.last.update(status: 'success', until_commit: shipit_commits(:fifth))
|
411
420
|
|
412
|
-
assert_equal 'pending', @stack.merge_status
|
413
|
-
end
|
414
|
-
|
415
|
-
test "#merge_status returns state of last deployed commit if there are no undeployed commits waiting" do
|
416
|
-
shipit_commits(:fifth).statuses.destroy_all
|
417
|
-
@stack.deploys_and_rollbacks.last.update!(status: 'success', until_commit: shipit_commits(:fourth))
|
418
|
-
|
419
|
-
shipit_commits(:fourth).statuses.update_all(state: 'success')
|
420
421
|
assert_equal 'success', @stack.merge_status
|
421
|
-
|
422
|
-
shipit_commits(:fourth).statuses.last.update(state: 'failure')
|
423
|
-
assert_equal 'failure', @stack.merge_status
|
424
422
|
end
|
425
423
|
|
426
|
-
test "#merge_status returns
|
427
|
-
|
428
|
-
|
429
|
-
@stack.
|
430
|
-
|
431
|
-
shipit_commits(:third).statuses.update_all(state: 'success')
|
432
|
-
assert_equal 'success', @stack.merge_status
|
433
|
-
|
434
|
-
shipit_commits(:third).statuses.last.update(state: 'failure')
|
435
|
-
assert_equal 'failure', @stack.merge_status
|
424
|
+
test "#merge_status returns backlogged if there are too many undeployed commits" do
|
425
|
+
@stack.deploys_and_rollbacks.destroy_all
|
426
|
+
@stack.update_undeployed_commits_count
|
427
|
+
@stack.reload
|
428
|
+
assert_equal 'backlogged', @stack.merge_status
|
436
429
|
end
|
437
430
|
|
438
431
|
test "#handle_github_redirections update the stack if the repository was renamed" do
|
@@ -547,11 +540,11 @@ module Shipit
|
|
547
540
|
test "#next_commit_to_deploy respects the deploy.max_commits directive" do
|
548
541
|
@stack.tasks.destroy_all
|
549
542
|
|
550
|
-
fifth_commit = shipit_commits(:
|
543
|
+
fifth_commit = shipit_commits(:third)
|
551
544
|
fifth_commit.statuses.create!(stack_id: @stack.id, state: 'success', context: 'ci/travis')
|
552
545
|
assert_predicate fifth_commit, :deployable?
|
553
546
|
|
554
|
-
assert_equal shipit_commits(:
|
547
|
+
assert_equal shipit_commits(:third), @stack.next_commit_to_deploy
|
555
548
|
|
556
549
|
@stack.expects(:maximum_commits_per_deploy).returns(3).at_least_once
|
557
550
|
assert_equal shipit_commits(:third), @stack.next_commit_to_deploy
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Shipit
|
4
|
+
class StatusGroupTest < ActiveSupport::TestCase
|
5
|
+
setup do
|
6
|
+
@commit = shipit_commits(:second)
|
7
|
+
@group = Status::Group.new(@commit, @commit.statuses)
|
8
|
+
end
|
9
|
+
|
10
|
+
test "#description is a summary of the statuses" do
|
11
|
+
assert_equal '1 / 2 checks OK', @group.description
|
12
|
+
end
|
13
|
+
|
14
|
+
test "#group? returns true" do
|
15
|
+
assert_equal true, @group.group?
|
16
|
+
end
|
17
|
+
|
18
|
+
test "#target_url returns nil" do
|
19
|
+
assert_nil @group.target_url
|
20
|
+
end
|
21
|
+
|
22
|
+
test "#state is significant's status state" do
|
23
|
+
assert_equal %w(success failure), @group.statuses.map(&:state)
|
24
|
+
assert_equal 'failure', @group.state
|
25
|
+
end
|
26
|
+
|
27
|
+
test ".compact returns a regular status if there is only one visible status" do
|
28
|
+
status = Status::Group.compact(@commit, @commit.statuses.where(context: 'ci/travis'))
|
29
|
+
assert_instance_of Status, status
|
30
|
+
end
|
31
|
+
|
32
|
+
test ".compact returns an unknown status if there is no visible status" do
|
33
|
+
status = Status::Group.compact(@commit, @commit.statuses.where(context: 'ci/none'))
|
34
|
+
assert_instance_of Status::Unknown, status
|
35
|
+
end
|
36
|
+
|
37
|
+
test "missing required status will have MissingRequiredStatus as placeholder" do
|
38
|
+
@commit.stubs(:required_statuses).returns(%w(ci/very-important))
|
39
|
+
status = Status::Group.compact(@commit, [])
|
40
|
+
assert_instance_of Status::Missing, status
|
41
|
+
assert_predicate status, :pending?
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Shipit
|
4
|
+
class MissingStatusTest < ActiveSupport::TestCase
|
5
|
+
setup do
|
6
|
+
@commit = @commit = shipit_commits(:second)
|
7
|
+
@status = Status::Missing.new(@commit, 'ci/very-important')
|
8
|
+
end
|
9
|
+
|
10
|
+
test "#state is 'pending'" do
|
11
|
+
assert_equal 'pending', @status.state
|
12
|
+
end
|
13
|
+
|
14
|
+
test "#description explains the situation" do
|
15
|
+
message = 'ci/very-important is required for deploy but was not sent yet.'
|
16
|
+
assert_equal message, @status.description
|
17
|
+
end
|
18
|
+
|
19
|
+
test "#success? is false" do
|
20
|
+
refute_predicate @status, :success?
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/test/models/status_test.rb
CHANGED
@@ -54,12 +54,9 @@ module Shipit
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def expect_event(stack)
|
57
|
-
Pubsubstub
|
58
|
-
Pubsubstub
|
59
|
-
|
60
|
-
event.name == 'stack.update' &&
|
61
|
-
channel == "stack.#{stack.id}" &&
|
62
|
-
data['url'] == "/#{stack.to_param}"
|
57
|
+
Pubsubstub.expects(:publish).at_least_once
|
58
|
+
Pubsubstub.expects(:publish).with do |channel, _payload, options = {}|
|
59
|
+
options[:name] == 'update' && channel == "stack.#{stack.id}"
|
63
60
|
end
|
64
61
|
end
|
65
62
|
end
|
@@ -27,12 +27,20 @@ module Shipit
|
|
27
27
|
|
28
28
|
def assert_dumped(expected, object)
|
29
29
|
message = "Expected CSVSerializer.dump(#{object.inspect}) to eq #{expected.inspect}"
|
30
|
-
|
30
|
+
if expected.nil?
|
31
|
+
assert_nil Shipit::CSVSerializer.dump(object), message
|
32
|
+
else
|
33
|
+
assert_equal(expected, Shipit::CSVSerializer.dump(object), message)
|
34
|
+
end
|
31
35
|
end
|
32
36
|
|
33
37
|
def assert_loaded(expected, payload)
|
34
38
|
message = "Expected CSVSerializer.load(#{payload.inspect}) to eq #{expected.inspect}"
|
35
|
-
|
39
|
+
if expected.nil?
|
40
|
+
assert_nil Shipit::CSVSerializer.load(payload), message
|
41
|
+
else
|
42
|
+
assert_equal(expected, Shipit::CSVSerializer.load(payload), message)
|
43
|
+
end
|
36
44
|
end
|
37
45
|
end
|
38
46
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shipit-engine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jean Boussier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -531,6 +531,7 @@ files:
|
|
531
531
|
- app/assets/javascripts/shipit/checklist.js.coffee
|
532
532
|
- app/assets/javascripts/shipit/deploy.js.coffee
|
533
533
|
- app/assets/javascripts/shipit/flash.js.coffee
|
534
|
+
- app/assets/javascripts/shipit/page_updater.js.coffee
|
534
535
|
- app/assets/javascripts/shipit/search.js.coffee
|
535
536
|
- app/assets/javascripts/shipit/stacks.js.coffee
|
536
537
|
- app/assets/javascripts/shipit_bs.js.coffee
|
@@ -568,16 +569,20 @@ files:
|
|
568
569
|
- app/controllers/concerns/shipit/authentication.rb
|
569
570
|
- app/controllers/concerns/shipit/pagination.rb
|
570
571
|
- app/controllers/shipit/api/base_controller.rb
|
572
|
+
- app/controllers/shipit/api/ccmenu_controller.rb
|
571
573
|
- app/controllers/shipit/api/commits_controller.rb
|
572
574
|
- app/controllers/shipit/api/deploys_controller.rb
|
573
575
|
- app/controllers/shipit/api/hooks_controller.rb
|
574
576
|
- app/controllers/shipit/api/locks_controller.rb
|
575
577
|
- app/controllers/shipit/api/outputs_controller.rb
|
578
|
+
- app/controllers/shipit/api/pull_requests_controller.rb
|
576
579
|
- app/controllers/shipit/api/stacks_controller.rb
|
577
580
|
- app/controllers/shipit/api/tasks_controller.rb
|
581
|
+
- app/controllers/shipit/ccmenu_url_controller.rb
|
578
582
|
- app/controllers/shipit/commit_checks_controller.rb
|
579
583
|
- app/controllers/shipit/deploys_controller.rb
|
580
584
|
- app/controllers/shipit/github_authentication_controller.rb
|
585
|
+
- app/controllers/shipit/pull_requests_controller.rb
|
581
586
|
- app/controllers/shipit/rollbacks_controller.rb
|
582
587
|
- app/controllers/shipit/shipit_controller.rb
|
583
588
|
- app/controllers/shipit/stacks_controller.rb
|
@@ -604,19 +609,23 @@ files:
|
|
604
609
|
- app/jobs/shipit/fetch_commit_stats_job.rb
|
605
610
|
- app/jobs/shipit/fetch_deployed_revision_job.rb
|
606
611
|
- app/jobs/shipit/github_sync_job.rb
|
612
|
+
- app/jobs/shipit/merge_pull_requests_job.rb
|
607
613
|
- app/jobs/shipit/perform_commit_checks_job.rb
|
608
614
|
- app/jobs/shipit/perform_task_job.rb
|
609
615
|
- app/jobs/shipit/refresh_github_user_job.rb
|
616
|
+
- app/jobs/shipit/refresh_pull_request_job.rb
|
610
617
|
- app/jobs/shipit/refresh_statuses_job.rb
|
611
618
|
- app/jobs/shipit/setup_github_hook_job.rb
|
612
619
|
- app/jobs/shipit/update_estimated_deploy_duration_job.rb
|
613
620
|
- app/models/concerns/shipit/deferred_touch.rb
|
614
621
|
- app/models/shipit/anonymous_user.rb
|
615
622
|
- app/models/shipit/api_client.rb
|
623
|
+
- app/models/shipit/application_record.rb
|
616
624
|
- app/models/shipit/commit.rb
|
617
625
|
- app/models/shipit/commit_checks.rb
|
618
626
|
- app/models/shipit/commit_deployment.rb
|
619
627
|
- app/models/shipit/commit_deployment_status.rb
|
628
|
+
- app/models/shipit/commit_message.rb
|
620
629
|
- app/models/shipit/delivery.rb
|
621
630
|
- app/models/shipit/deploy.rb
|
622
631
|
- app/models/shipit/deploy_spec.rb
|
@@ -633,17 +642,20 @@ files:
|
|
633
642
|
- app/models/shipit/github_status.rb
|
634
643
|
- app/models/shipit/hook.rb
|
635
644
|
- app/models/shipit/membership.rb
|
636
|
-
- app/models/shipit/missing_status.rb
|
637
645
|
- app/models/shipit/output_chunk.rb
|
646
|
+
- app/models/shipit/pull_request.rb
|
638
647
|
- app/models/shipit/rollback.rb
|
639
648
|
- app/models/shipit/stack.rb
|
640
649
|
- app/models/shipit/status.rb
|
641
|
-
- app/models/shipit/
|
650
|
+
- app/models/shipit/status/common.rb
|
651
|
+
- app/models/shipit/status/group.rb
|
652
|
+
- app/models/shipit/status/missing.rb
|
653
|
+
- app/models/shipit/status/unknown.rb
|
642
654
|
- app/models/shipit/task.rb
|
643
655
|
- app/models/shipit/task_definition.rb
|
644
656
|
- app/models/shipit/team.rb
|
645
657
|
- app/models/shipit/undeployed_commit.rb
|
646
|
-
- app/models/shipit/
|
658
|
+
- app/models/shipit/unlimited_api_client.rb
|
647
659
|
- app/models/shipit/user.rb
|
648
660
|
- app/models/shipit/variable_definition.rb
|
649
661
|
- app/serializers/concerns/shipit/conditional_attributes.rb
|
@@ -651,6 +663,7 @@ files:
|
|
651
663
|
- app/serializers/shipit/commit_serializer.rb
|
652
664
|
- app/serializers/shipit/deploy_serializer.rb
|
653
665
|
- app/serializers/shipit/hook_serializer.rb
|
666
|
+
- app/serializers/shipit/pull_request_serializer.rb
|
654
667
|
- app/serializers/shipit/rollback_serializer.rb
|
655
668
|
- app/serializers/shipit/short_commit_serializer.rb
|
656
669
|
- app/serializers/shipit/stack_serializer.rb
|
@@ -664,10 +677,10 @@ files:
|
|
664
677
|
- app/views/layouts/shipit.html.erb
|
665
678
|
- app/views/layouts/shipit_bootstrap.html.erb
|
666
679
|
- app/views/shipit/_variables.html.erb
|
680
|
+
- app/views/shipit/ccmenu/project.xml.builder
|
667
681
|
- app/views/shipit/commit_checks/_checks.html.erb
|
668
682
|
- app/views/shipit/commit_checks/show.html.erb
|
669
683
|
- app/views/shipit/commits/_commit.html.erb
|
670
|
-
- app/views/shipit/commits/_commit_author.html.erb
|
671
684
|
- app/views/shipit/deploys/_checklist.html.erb
|
672
685
|
- app/views/shipit/deploys/_concurrent_deploy_warning.html.erb
|
673
686
|
- app/views/shipit/deploys/_deploy.html.erb
|
@@ -678,6 +691,9 @@ files:
|
|
678
691
|
- app/views/shipit/deploys/show.html.erb
|
679
692
|
- app/views/shipit/github_authentication/failed.html.erb
|
680
693
|
- app/views/shipit/missing_settings.html.erb
|
694
|
+
- app/views/shipit/pull_requests/_pull_request.html.erb
|
695
|
+
- app/views/shipit/pull_requests/index.html.erb
|
696
|
+
- app/views/shipit/shared/_author.html.erb
|
681
697
|
- app/views/shipit/stacks/_header.html.erb
|
682
698
|
- app/views/shipit/stacks/index.html.erb
|
683
699
|
- app/views/shipit/stacks/new.html.erb
|
@@ -690,6 +706,7 @@ files:
|
|
690
706
|
- app/views/shipit/tasks/index.html.erb
|
691
707
|
- app/views/shipit/tasks/new.html.erb
|
692
708
|
- app/views/shipit/tasks/show.html.erb
|
709
|
+
- config/initializers/inflections.rb
|
693
710
|
- config/locales/en.yml
|
694
711
|
- config/routes.rb
|
695
712
|
- config/secrets.development.example.yml
|
@@ -725,6 +742,14 @@ files:
|
|
725
742
|
- db/migrate/20161206104224_denormalize_stack_id_on_statuses.rb
|
726
743
|
- db/migrate/20161206104817_backfill_stack_id_on_statuses.rb
|
727
744
|
- db/migrate/20161206105318_makes_stack_id_not_null_on_statuses.rb
|
745
|
+
- db/migrate/20170130113633_create_shipit_pull_requests.rb
|
746
|
+
- db/migrate/20170208143657_add_pull_request_number_and_title_to_commits.rb
|
747
|
+
- db/migrate/20170208154609_backfill_merge_commits.rb
|
748
|
+
- db/migrate/20170209160355_add_branch_to_pull_requests.rb
|
749
|
+
- db/migrate/20170215123538_add_merge_queue_enabled_to_stacks.rb
|
750
|
+
- db/migrate/20170220152410_improve_users_indexing.rb
|
751
|
+
- db/migrate/20170221102128_improve_tasks_indexing.rb
|
752
|
+
- db/migrate/20170221130336_add_last_revalidated_at_on_pull_requests.rb
|
728
753
|
- lib/shipit-engine.rb
|
729
754
|
- lib/shipit.rb
|
730
755
|
- lib/shipit/command.rb
|
@@ -759,16 +784,20 @@ files:
|
|
759
784
|
- lib/tasks/teams.rake
|
760
785
|
- lib/tasks/webhook.rake
|
761
786
|
- test/controllers/api/base_controller_test.rb
|
787
|
+
- test/controllers/api/ccmenu_controller_test.rb
|
762
788
|
- test/controllers/api/commits_controller_test.rb
|
763
789
|
- test/controllers/api/deploys_controller_test.rb
|
764
790
|
- test/controllers/api/hooks_controller_test.rb
|
765
791
|
- test/controllers/api/locks_controller_test.rb
|
766
792
|
- test/controllers/api/outputs_controller_test.rb
|
793
|
+
- test/controllers/api/pull_requests_controller_test.rb
|
767
794
|
- test/controllers/api/stacks_controller_test.rb
|
768
795
|
- test/controllers/api/tasks_controller_test.rb
|
796
|
+
- test/controllers/ccmenu_controller_test.rb
|
769
797
|
- test/controllers/commit_checks_controller_test.rb
|
770
798
|
- test/controllers/deploys_controller_test.rb
|
771
799
|
- test/controllers/github_authentication_controller_test.rb
|
800
|
+
- test/controllers/pull_requests_controller_test.rb
|
772
801
|
- test/controllers/rollbacks_controller_test.rb
|
773
802
|
- test/controllers/stacks_controller_test.rb
|
774
803
|
- test/controllers/status_controller_test.rb
|
@@ -819,6 +848,9 @@ files:
|
|
819
848
|
- test/dummy/data/stacks/byroot/junk/production/git/sdlkfjsdlkfjsdlkfjdsfsdfksdfjsldkfjsdlkfjsdf
|
820
849
|
- test/dummy/data/stacks/byroot/junk/production/git/shipit.yml
|
821
850
|
- test/dummy/data/stacks/byroot/junk/production/git/toto.txt
|
851
|
+
- test/dummy/data/stacks/shopify/junk/production/git/README.md
|
852
|
+
- test/dummy/data/stacks/shopify/junk/production/git/circle.yml
|
853
|
+
- test/dummy/data/stacks/shopify/junk/production/git/shipit.yml
|
822
854
|
- test/dummy/db/development.sqlite3
|
823
855
|
- test/dummy/db/schema.rb
|
824
856
|
- test/dummy/db/seeds.rb
|
@@ -839,6 +871,7 @@ files:
|
|
839
871
|
- test/fixtures/shipit/hooks.yml
|
840
872
|
- test/fixtures/shipit/memberships.yml
|
841
873
|
- test/fixtures/shipit/output_chunks.yml
|
874
|
+
- test/fixtures/shipit/pull_requests.yml
|
842
875
|
- test/fixtures/shipit/stacks.yml
|
843
876
|
- test/fixtures/shipit/statuses.yml
|
844
877
|
- test/fixtures/shipit/tasks.yml
|
@@ -860,6 +893,7 @@ files:
|
|
860
893
|
- test/jobs/fetch_commit_stats_job_test.rb
|
861
894
|
- test/jobs/fetch_deployed_revision_job_test.rb
|
862
895
|
- test/jobs/github_sync_job_test.rb
|
896
|
+
- test/jobs/merge_pull_requests_job_test.rb
|
863
897
|
- test/jobs/perform_task_job_test.rb
|
864
898
|
- test/jobs/refresh_github_user_job_test.rb
|
865
899
|
- test/jobs/refresh_status_job_test.rb
|
@@ -870,16 +904,18 @@ files:
|
|
870
904
|
- test/models/commit_deployment_test.rb
|
871
905
|
- test/models/commits_test.rb
|
872
906
|
- test/models/delivery_test.rb
|
907
|
+
- test/models/deploy_spec_test.rb
|
873
908
|
- test/models/deploys_test.rb
|
874
909
|
- test/models/duration_test.rb
|
875
910
|
- test/models/github_hook_test.rb
|
876
911
|
- test/models/hook_test.rb
|
877
912
|
- test/models/membership_test.rb
|
878
|
-
- test/models/missing_status_test.rb
|
879
913
|
- test/models/output_chunk_test.rb
|
914
|
+
- test/models/pull_request_test.rb
|
880
915
|
- test/models/rollbacks_test.rb
|
881
916
|
- test/models/stacks_test.rb
|
882
|
-
- test/models/
|
917
|
+
- test/models/status/group_test.rb
|
918
|
+
- test/models/status/missing_test.rb
|
883
919
|
- test/models/status_test.rb
|
884
920
|
- test/models/task_definitions_test.rb
|
885
921
|
- test/models/team_test.rb
|
@@ -891,7 +927,6 @@ files:
|
|
891
927
|
- test/unit/commands_test.rb
|
892
928
|
- test/unit/csv_serializer_test.rb
|
893
929
|
- test/unit/deploy_commands_test.rb
|
894
|
-
- test/unit/deploy_spec_test.rb
|
895
930
|
- test/unit/environment_variables_test.rb
|
896
931
|
- test/unit/github_url_helper_test.rb
|
897
932
|
- test/unit/shipit_test.rb
|
@@ -928,16 +963,20 @@ specification_version: 4
|
|
928
963
|
summary: Application deployment software
|
929
964
|
test_files:
|
930
965
|
- test/controllers/api/base_controller_test.rb
|
966
|
+
- test/controllers/api/ccmenu_controller_test.rb
|
931
967
|
- test/controllers/api/commits_controller_test.rb
|
932
968
|
- test/controllers/api/deploys_controller_test.rb
|
933
969
|
- test/controllers/api/hooks_controller_test.rb
|
934
970
|
- test/controllers/api/locks_controller_test.rb
|
935
971
|
- test/controllers/api/outputs_controller_test.rb
|
972
|
+
- test/controllers/api/pull_requests_controller_test.rb
|
936
973
|
- test/controllers/api/stacks_controller_test.rb
|
937
974
|
- test/controllers/api/tasks_controller_test.rb
|
975
|
+
- test/controllers/ccmenu_controller_test.rb
|
938
976
|
- test/controllers/commit_checks_controller_test.rb
|
939
977
|
- test/controllers/deploys_controller_test.rb
|
940
978
|
- test/controllers/github_authentication_controller_test.rb
|
979
|
+
- test/controllers/pull_requests_controller_test.rb
|
941
980
|
- test/controllers/rollbacks_controller_test.rb
|
942
981
|
- test/controllers/stacks_controller_test.rb
|
943
982
|
- test/controllers/status_controller_test.rb
|
@@ -987,6 +1026,9 @@ test_files:
|
|
987
1026
|
- test/dummy/data/stacks/byroot/junk/production/git/sdlkfjsdlkfjsdlkfjdsfsdfksdfjsldkfjsdlkfjsdf
|
988
1027
|
- test/dummy/data/stacks/byroot/junk/production/git/shipit.yml
|
989
1028
|
- test/dummy/data/stacks/byroot/junk/production/git/toto.txt
|
1029
|
+
- test/dummy/data/stacks/shopify/junk/production/git/circle.yml
|
1030
|
+
- test/dummy/data/stacks/shopify/junk/production/git/README.md
|
1031
|
+
- test/dummy/data/stacks/shopify/junk/production/git/shipit.yml
|
990
1032
|
- test/dummy/db/development.sqlite3
|
991
1033
|
- test/dummy/db/schema.rb
|
992
1034
|
- test/dummy/db/seeds.rb
|
@@ -1008,6 +1050,7 @@ test_files:
|
|
1008
1050
|
- test/fixtures/shipit/hooks.yml
|
1009
1051
|
- test/fixtures/shipit/memberships.yml
|
1010
1052
|
- test/fixtures/shipit/output_chunks.yml
|
1053
|
+
- test/fixtures/shipit/pull_requests.yml
|
1011
1054
|
- test/fixtures/shipit/stacks.yml
|
1012
1055
|
- test/fixtures/shipit/statuses.yml
|
1013
1056
|
- test/fixtures/shipit/tasks.yml
|
@@ -1029,6 +1072,7 @@ test_files:
|
|
1029
1072
|
- test/jobs/fetch_commit_stats_job_test.rb
|
1030
1073
|
- test/jobs/fetch_deployed_revision_job_test.rb
|
1031
1074
|
- test/jobs/github_sync_job_test.rb
|
1075
|
+
- test/jobs/merge_pull_requests_job_test.rb
|
1032
1076
|
- test/jobs/perform_task_job_test.rb
|
1033
1077
|
- test/jobs/refresh_github_user_job_test.rb
|
1034
1078
|
- test/jobs/refresh_status_job_test.rb
|
@@ -1039,16 +1083,18 @@ test_files:
|
|
1039
1083
|
- test/models/commit_deployment_test.rb
|
1040
1084
|
- test/models/commits_test.rb
|
1041
1085
|
- test/models/delivery_test.rb
|
1086
|
+
- test/models/deploy_spec_test.rb
|
1042
1087
|
- test/models/deploys_test.rb
|
1043
1088
|
- test/models/duration_test.rb
|
1044
1089
|
- test/models/github_hook_test.rb
|
1045
1090
|
- test/models/hook_test.rb
|
1046
1091
|
- test/models/membership_test.rb
|
1047
|
-
- test/models/missing_status_test.rb
|
1048
1092
|
- test/models/output_chunk_test.rb
|
1093
|
+
- test/models/pull_request_test.rb
|
1049
1094
|
- test/models/rollbacks_test.rb
|
1050
1095
|
- test/models/stacks_test.rb
|
1051
|
-
- test/models/
|
1096
|
+
- test/models/status/group_test.rb
|
1097
|
+
- test/models/status/missing_test.rb
|
1052
1098
|
- test/models/status_test.rb
|
1053
1099
|
- test/models/task_definitions_test.rb
|
1054
1100
|
- test/models/team_test.rb
|
@@ -1060,7 +1106,6 @@ test_files:
|
|
1060
1106
|
- test/unit/commands_test.rb
|
1061
1107
|
- test/unit/csv_serializer_test.rb
|
1062
1108
|
- test/unit/deploy_commands_test.rb
|
1063
|
-
- test/unit/deploy_spec_test.rb
|
1064
1109
|
- test/unit/environment_variables_test.rb
|
1065
1110
|
- test/unit/github_url_helper_test.rb
|
1066
1111
|
- test/unit/shipit_test.rb
|