shipit-engine 0.20.0 → 0.21.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.
- checksums.yaml +5 -5
- data/README.md +43 -6
- data/app/assets/stylesheets/_base/_base.scss +4 -0
- data/app/assets/stylesheets/_pages/_commits.scss +3 -1
- data/app/assets/stylesheets/_pages/_deploy.scss +4 -2
- data/app/controllers/concerns/shipit/authentication.rb +1 -1
- data/app/controllers/shipit/api/base_controller.rb +6 -1
- data/app/controllers/shipit/api/pull_requests_controller.rb +1 -1
- data/app/controllers/shipit/commit_checks_controller.rb +1 -1
- data/app/controllers/shipit/shipit_controller.rb +1 -5
- data/app/controllers/shipit/stacks_controller.rb +2 -0
- data/app/controllers/shipit/tasks_controller.rb +1 -1
- data/app/controllers/shipit/webhooks_controller.rb +2 -2
- data/app/helpers/shipit/deploys_helper.rb +9 -0
- data/app/helpers/shipit/shipit_helper.rb +17 -15
- data/app/helpers/shipit/stacks_helper.rb +6 -1
- data/app/jobs/shipit/destroy_stack_job.rb +4 -2
- data/app/jobs/shipit/fetch_deployed_revision_job.rb +1 -1
- data/app/jobs/shipit/github_sync_job.rb +1 -1
- data/app/jobs/shipit/merge_pull_requests_job.rb +3 -3
- data/app/jobs/shipit/perform_task_job.rb +3 -0
- data/app/jobs/shipit/purge_old_deliveries_job.rb +1 -0
- data/app/models/shipit/api_client.rb +1 -1
- data/app/models/shipit/commit.rb +29 -6
- data/app/models/shipit/commit_deployment.rb +1 -1
- data/app/models/shipit/commit_deployment_status.rb +1 -1
- data/app/models/shipit/deploy_spec/bundler_discovery.rb +1 -10
- data/app/models/shipit/deploy_spec/file_system.rb +6 -0
- data/app/models/shipit/deploy_spec/kubernetes_discovery.rb +1 -1
- data/app/models/shipit/deploy_spec/lerna_discovery.rb +85 -0
- data/app/models/shipit/deploy_spec/npm_discovery.rb +103 -5
- data/app/models/shipit/deploy_spec/pypi_discovery.rb +4 -2
- data/app/models/shipit/deploy_spec/rubygems_discovery.rb +4 -2
- data/app/models/shipit/deploy_spec.rb +19 -2
- data/app/models/shipit/duration.rb +1 -1
- data/app/models/shipit/github_status.rb +1 -1
- data/app/models/shipit/hook.rb +4 -5
- data/app/models/shipit/output_chunk.rb +1 -1
- data/app/models/shipit/pull_request.rb +37 -16
- data/app/models/shipit/stack.rb +17 -11
- data/app/models/shipit/status/common.rb +4 -0
- data/app/models/shipit/status/group.rb +4 -0
- data/app/models/shipit/task.rb +20 -8
- data/app/models/shipit/task_definition.rb +2 -2
- data/app/models/shipit/undeployed_commit.rb +13 -2
- data/app/models/shipit/user.rb +1 -1
- data/app/serializers/shipit/pull_request_serializer.rb +1 -1
- data/app/serializers/shipit/tail_task_serializer.rb +1 -1
- data/app/views/shipit/ccmenu/project.xml.builder +9 -8
- data/app/views/shipit/deploys/_deploy.html.erb +3 -2
- data/app/views/shipit/stacks/_banners.html.erb +4 -1
- data/app/views/shipit/stacks/settings.html.erb +4 -0
- data/app/views/shipit/statuses/_group.html.erb +1 -1
- data/app/views/shipit/statuses/_status.html.erb +1 -1
- data/app/views/shipit/tasks/_task.html.erb +1 -2
- data/config/locales/en.yml +2 -0
- data/config/secrets.development.example.yml +0 -4
- data/config/secrets.development.shopify.yml +1 -5
- data/db/migrate/20170904103242_reindex_deliveries.rb +7 -0
- data/db/migrate/20171120161420_add_base_info_to_pull_request.rb +7 -0
- data/db/migrate/20180202220850_add_aborted_by_to_tasks.rb +5 -0
- data/lib/shipit/command.rb +11 -3
- data/lib/shipit/engine.rb +0 -4
- data/lib/shipit/stack_commands.rb +3 -1
- data/lib/shipit/version.rb +1 -1
- data/lib/shipit.rb +15 -23
- data/lib/snippets/assert-lerna-fixed-version-tag +21 -0
- data/lib/snippets/assert-lerna-independent-version-tags +28 -0
- data/lib/snippets/generate-local-npmrc +19 -0
- data/lib/snippets/misconfigured-npm-publish-config +8 -0
- data/lib/snippets/publish-lerna-independent-packages +39 -0
- data/lib/snippets/push-to-heroku +5 -5
- data/lib/tasks/cron.rake +1 -1
- data/lib/tasks/dev.rake +1 -1
- data/test/controllers/api/deploys_controller_test.rb +19 -0
- data/test/controllers/api/stacks_controller_test.rb +1 -1
- data/test/controllers/github_authentication_controller_test.rb +1 -1
- data/test/controllers/stacks_controller_test.rb +10 -0
- data/test/controllers/tasks_controller_test.rb +2 -0
- data/test/controllers/webhooks_controller_test.rb +0 -7
- data/test/dummy/config/secrets.yml +0 -2
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/schema.rb +5 -3
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/fixtures/shipit/commits.yml +53 -0
- data/test/fixtures/shipit/pull_requests.yml +52 -0
- data/test/fixtures/shipit/stacks.yml +35 -0
- data/test/fixtures/shipit/statuses.yml +27 -0
- data/test/fixtures/shipit/tasks.yml +14 -0
- data/test/helpers/queries_helper.rb +1 -1
- data/test/jobs/merge_pull_requests_job_test.rb +19 -2
- data/test/jobs/perform_task_job_test.rb +26 -2
- data/test/models/commits_test.rb +55 -6
- data/test/models/deploy_spec_test.rb +288 -52
- data/test/models/deploys_test.rb +7 -7
- data/test/models/hook_test.rb +7 -1
- data/test/models/pull_request_test.rb +78 -24
- data/test/models/stacks_test.rb +23 -19
- data/test/models/status/group_test.rb +6 -0
- data/test/models/undeployed_commits_test.rb +9 -0
- data/test/models/users_test.rb +2 -2
- data/test/test_helper.rb +1 -1
- metadata +211 -224
- data/app/assets/javascripts/shipit_bs.js.coffee +0 -2
- data/app/assets/stylesheets/shipit_bs.scss +0 -22
- data/app/views/bootstrap/shipit/missing_settings.html.erb +0 -97
- data/app/views/bootstrap/shipit/stacks/new.html.erb +0 -44
- data/app/views/layouts/shipit_bootstrap.html.erb +0 -44
- data/lib/shipit/template_renderer_extension.rb +0 -16
- data/test/dummy/db/test.sqlite3-journal +0 -0
data/test/models/stacks_test.rb
CHANGED
|
@@ -4,7 +4,7 @@ module Shipit
|
|
|
4
4
|
class StacksTest < ActiveSupport::TestCase
|
|
5
5
|
def setup
|
|
6
6
|
@stack = shipit_stacks(:shipit)
|
|
7
|
-
@expected_base_path = Rails.root.join('data
|
|
7
|
+
@expected_base_path = Rails.root.join('data', 'stacks', @stack.to_param).to_s
|
|
8
8
|
GithubHook.any_instance.stubs(:teardown!)
|
|
9
9
|
end
|
|
10
10
|
|
|
@@ -441,14 +441,14 @@ module Shipit
|
|
|
441
441
|
@stack.deploys_and_rollbacks.destroy_all
|
|
442
442
|
@stack.update_undeployed_commits_count
|
|
443
443
|
@stack.reload
|
|
444
|
-
assert_equal 'backlogged', @stack.merge_status
|
|
444
|
+
assert_equal 'backlogged', @stack.merge_status(backlog_leniency_factor: 1.5)
|
|
445
445
|
end
|
|
446
446
|
|
|
447
447
|
test "#merge_status returns success with a higher leniency factor" do
|
|
448
448
|
@stack.deploys_and_rollbacks.destroy_all
|
|
449
449
|
@stack.update_undeployed_commits_count
|
|
450
450
|
@stack.reload
|
|
451
|
-
assert_equal 'success', @stack.merge_status(backlog_leniency_factor:
|
|
451
|
+
assert_equal 'success', @stack.merge_status(backlog_leniency_factor: 3.0)
|
|
452
452
|
end
|
|
453
453
|
|
|
454
454
|
test "#handle_github_redirections update the stack if the repository was renamed" do
|
|
@@ -573,38 +573,42 @@ module Shipit
|
|
|
573
573
|
assert_equal shipit_commits(:third), @stack.next_commit_to_deploy
|
|
574
574
|
end
|
|
575
575
|
|
|
576
|
-
test "#
|
|
576
|
+
test "setting #lock_reason also sets #locked_since" do
|
|
577
|
+
assert_predicate @stack.locked_since, :nil?
|
|
578
|
+
|
|
579
|
+
@stack.update!(lock_reason: "Here comes the walrus")
|
|
580
|
+
refute_predicate @stack.locked_since, :nil?
|
|
581
|
+
|
|
582
|
+
@stack.update!(lock_reason: nil)
|
|
583
|
+
assert_predicate @stack.locked_since, :nil?
|
|
584
|
+
end
|
|
585
|
+
|
|
586
|
+
test "updating #lock_reason preserves #locked_since" do
|
|
587
|
+
@stack.update!(lock_reason: "Here comes the walrus")
|
|
588
|
+
expected = @stack.locked_since
|
|
589
|
+
|
|
590
|
+
@stack.update!(lock_reason: "The walrus strikes back")
|
|
591
|
+
assert_equal expected, @stack.locked_since
|
|
592
|
+
end
|
|
593
|
+
|
|
594
|
+
test "#lock sets reason and user" do
|
|
577
595
|
reason = "Here comes the walrus"
|
|
578
596
|
user = shipit_users(:walrus)
|
|
579
597
|
@stack.lock(reason, user)
|
|
580
598
|
assert @stack.locked?
|
|
581
599
|
assert_equal reason, @stack.lock_reason
|
|
582
600
|
assert_equal user, @stack.lock_author
|
|
583
|
-
assert_not_nil user, @stack.locked_since
|
|
584
601
|
end
|
|
585
602
|
|
|
586
|
-
test "#unlock deletes reason
|
|
603
|
+
test "#unlock deletes reason and user" do
|
|
587
604
|
user = shipit_users(:walrus)
|
|
588
605
|
@stack.lock("Here comes the walrus", user)
|
|
589
606
|
@stack.unlock
|
|
590
607
|
refute @stack.locked?
|
|
591
608
|
assert_nil @stack.lock_reason
|
|
592
|
-
assert_nil @stack.locked_since
|
|
593
609
|
assert_not_equal user, @stack.lock_author
|
|
594
610
|
end
|
|
595
611
|
|
|
596
|
-
test "#lock does not overwrite locked_since if already locked" do
|
|
597
|
-
@stack.lock("Here comes the walrus", shipit_users(:walrus))
|
|
598
|
-
old_time = @stack.locked_since
|
|
599
|
-
|
|
600
|
-
new_reason = "Its still coming!"
|
|
601
|
-
@stack.lock(new_reason, shipit_users(:walrus))
|
|
602
|
-
|
|
603
|
-
assert @stack.locked?
|
|
604
|
-
assert_equal new_reason, @stack.lock_reason
|
|
605
|
-
assert_equal old_time, @stack.locked_since
|
|
606
|
-
end
|
|
607
|
-
|
|
608
612
|
test "stack contains valid deploy_url" do
|
|
609
613
|
@stack.deploy_url = "Javascript:alert(0);//"
|
|
610
614
|
assert_not_predicate @stack, :valid?
|
|
@@ -24,6 +24,12 @@ module Shipit
|
|
|
24
24
|
assert_equal 'failure', @group.state
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
test "#blocking? returns true if any of the status is blocking" do
|
|
28
|
+
blocking_status = shipit_statuses(:soc_first)
|
|
29
|
+
assert_predicate blocking_status, :blocking?
|
|
30
|
+
Status::Group.new(blocking_status.commit, [blocking_status])
|
|
31
|
+
end
|
|
32
|
+
|
|
27
33
|
test ".compact returns a regular status if there is only one visible status" do
|
|
28
34
|
status = Status::Group.compact(@commit, @commit.statuses.where(context: 'ci/travis'))
|
|
29
35
|
assert_instance_of Status, status
|
|
@@ -68,6 +68,15 @@ module Shipit
|
|
|
68
68
|
assert_equal 'failure', @commit.deploy_state(true)
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
+
test "#deploy_state returns `blocked` if a previous commit is blocking" do
|
|
72
|
+
blocking_commit = shipit_commits(:soc_second)
|
|
73
|
+
blocking_commit.statuses.delete_all
|
|
74
|
+
assert_predicate blocking_commit, :blocking?
|
|
75
|
+
|
|
76
|
+
commit = UndeployedCommit.new(shipit_commits(:soc_third), 0)
|
|
77
|
+
assert_equal 'blocked', commit.deploy_state
|
|
78
|
+
end
|
|
79
|
+
|
|
71
80
|
test "#redeploy_state returns `allowed` by default" do
|
|
72
81
|
assert_equal 'allowed', @commit.redeploy_state
|
|
73
82
|
end
|
data/test/models/users_test.rb
CHANGED
|
@@ -69,7 +69,7 @@ module Shipit
|
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
test "#refresh_from_github! update the user with the latest data from GitHub's API" do
|
|
72
|
-
Shipit.github_api.expects(:user).with(
|
|
72
|
+
Shipit.github_api.expects(:user).with(@user.github_id).returns(@github_user)
|
|
73
73
|
@user.refresh_from_github!
|
|
74
74
|
@user.reload
|
|
75
75
|
|
|
@@ -82,7 +82,7 @@ module Shipit
|
|
|
82
82
|
user.update!(github_id: @github_user.id)
|
|
83
83
|
commit = user.authored_commits.last
|
|
84
84
|
|
|
85
|
-
Shipit.github_api.expects(:user).with(user.
|
|
85
|
+
Shipit.github_api.expects(:user).with(user.github_id).raises(Octokit::NotFound)
|
|
86
86
|
Shipit.github_api.expects(:commit).with(commit.github_repo_name, commit.sha).returns(mock(author: @github_user))
|
|
87
87
|
|
|
88
88
|
assert_equal 'bob', user.login
|
data/test/test_helper.rb
CHANGED
|
@@ -49,7 +49,7 @@ class ActiveSupport::TestCase
|
|
|
49
49
|
teardown do
|
|
50
50
|
Shipit.redis.flushdb
|
|
51
51
|
Shipit.instance_variable_names.each do |name|
|
|
52
|
-
next if
|
|
52
|
+
next if %w(@mocha @redis).include?(name)
|
|
53
53
|
Shipit.remove_instance_variable(name)
|
|
54
54
|
end
|
|
55
55
|
end
|