shipit-engine 0.21.0 → 0.22.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 +4 -4
- data/README.md +5 -106
- data/app/assets/images/timedout.svg +14 -0
- data/app/assets/stylesheets/_pages/_commits.scss +11 -2
- data/app/controllers/shipit/stacks_controller.rb +1 -7
- data/app/controllers/shipit/webhooks_controller.rb +102 -66
- data/app/helpers/shipit/github_url_helper.rb +2 -2
- data/app/helpers/shipit/shipit_helper.rb +3 -31
- data/app/jobs/shipit/destroy_job.rb +9 -0
- data/app/jobs/shipit/github_sync_job.rb +1 -1
- data/app/jobs/shipit/setup_github_hook_job.rb +1 -3
- data/app/models/shipit/anonymous_user.rb +4 -1
- data/app/models/shipit/commit.rb +8 -8
- data/app/models/shipit/commit_deployment.rb +3 -3
- data/app/models/shipit/commit_deployment_status.rb +2 -2
- data/app/models/shipit/deploy.rb +3 -3
- data/app/models/shipit/deploy_spec/file_system.rb +3 -3
- data/app/models/shipit/deploy_spec/kubernetes_discovery.rb +10 -2
- data/app/models/shipit/github_hook.rb +2 -99
- data/app/models/shipit/github_status.rb +1 -1
- data/app/models/shipit/hook.rb +1 -1
- data/app/models/shipit/pull_request.rb +10 -10
- data/app/models/shipit/rollback.rb +1 -1
- data/app/models/shipit/stack.rb +27 -26
- data/app/models/shipit/task.rb +2 -2
- data/app/models/shipit/team.rb +4 -17
- data/app/models/shipit/user.rb +3 -3
- data/app/serializers/shipit/task_serializer.rb +2 -2
- data/app/serializers/shipit/user_serializer.rb +1 -1
- data/app/views/shipit/missing_settings.html.erb +5 -36
- data/app/views/shipit/stacks/new.html.erb +1 -1
- data/app/views/shipit/stacks/settings.html.erb +0 -4
- data/config/routes.rb +3 -13
- data/config/secrets.development.shopify.yml +10 -15
- data/config/secrets.development.yml +1 -1
- data/db/migrate/20180417130436_remove_all_github_hooks.rb +11 -0
- data/lib/shipit.rb +13 -56
- data/lib/shipit/command.rb +1 -1
- data/lib/shipit/engine.rb +2 -8
- data/lib/shipit/github_app.rb +122 -0
- data/lib/shipit/octokit_bot_users_patch.rb +25 -0
- data/lib/shipit/octokit_iterator.rb +2 -2
- data/lib/shipit/version.rb +1 -1
- data/lib/tasks/teams.rake +8 -24
- data/test/controllers/stacks_controller_test.rb +3 -29
- data/test/controllers/webhooks_controller_test.rb +29 -46
- data/test/dummy/config/secrets.yml +40 -10
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/schema.rb +1 -1
- data/test/dummy/db/seeds.rb +0 -1
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/fixtures/payloads/push_master.json +7 -6
- data/test/fixtures/payloads/push_not_master.json +7 -6
- data/test/fixtures/shipit/users.yml +2 -2
- data/test/helpers/hooks_helper.rb +1 -1
- data/test/helpers/payloads_helper.rb +1 -2
- data/test/jobs/destroy_stack_job_test.rb +1 -1
- data/test/models/commits_test.rb +5 -5
- data/test/models/deploy_spec_test.rb +17 -5
- data/test/models/github_hook_test.rb +1 -40
- data/test/models/pull_request_test.rb +11 -11
- data/test/models/stacks_test.rb +4 -10
- data/test/models/team_test.rb +3 -3
- data/test/models/users_test.rb +7 -7
- data/test/test_helper.rb +1 -1
- data/test/unit/github_app_test.rb +44 -0
- data/test/unit/shipit_test.rb +2 -49
- metadata +9 -3
- data/lib/tasks/webhook.rake +0 -6
data/test/models/team_test.rb
CHANGED
@@ -11,9 +11,9 @@ module Shipit
|
|
11
11
|
end
|
12
12
|
|
13
13
|
test ".find_or_create_by_handle fetch the team from github if it's not in the db already" do
|
14
|
-
Shipit.
|
14
|
+
Shipit.github.api.expects(:org_teams).with('shopify', per_page: 100)
|
15
15
|
response = stub(rels: {}, data: [new_team])
|
16
|
-
Shipit.
|
16
|
+
Shipit.github.api.expects(:last_response).returns(response)
|
17
17
|
assert_difference -> { Team.count }, 1 do
|
18
18
|
Team.find_or_create_by_handle('Shopify/new-team')
|
19
19
|
end
|
@@ -21,7 +21,7 @@ module Shipit
|
|
21
21
|
|
22
22
|
test "#refresh_members! fetch all the team members from github" do
|
23
23
|
response = stub(rels: {members: members_resource})
|
24
|
-
Shipit.
|
24
|
+
Shipit.github.api.expects(:get).with(@team.api_url).returns(response)
|
25
25
|
assert_difference -> { User.count }, 1 do
|
26
26
|
@team.refresh_members!
|
27
27
|
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.
|
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,8 +82,8 @@ module Shipit
|
|
82
82
|
user.update!(github_id: @github_user.id)
|
83
83
|
commit = user.authored_commits.last
|
84
84
|
|
85
|
-
Shipit.
|
86
|
-
Shipit.
|
85
|
+
Shipit.github.api.expects(:user).with(user.github_id).raises(Octokit::NotFound)
|
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
|
89
89
|
|
@@ -99,12 +99,12 @@ module Shipit
|
|
99
99
|
assert_equal @user.github_access_token, @user.github_api.access_token
|
100
100
|
end
|
101
101
|
|
102
|
-
test "#github_api fallbacks to Shipit.
|
103
|
-
assert_equal Shipit.
|
102
|
+
test "#github_api fallbacks to Shipit.github.api if the user doesn't have an access_token" do
|
103
|
+
assert_equal Shipit.github.api, shipit_users(:bob).github_api
|
104
104
|
end
|
105
105
|
|
106
|
-
test "#github_api fallbacks to Shipit.
|
107
|
-
assert_equal Shipit.
|
106
|
+
test "#github_api fallbacks to Shipit.github.api for anonymous users" do
|
107
|
+
assert_equal Shipit.github.api, AnonymousUser.new.github_api
|
108
108
|
end
|
109
109
|
|
110
110
|
test "users with legacy encrypted access token get their token reset automatically" do
|
data/test/test_helper.rb
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Shipit
|
4
|
+
class GitHubAppTest < ActiveSupport::TestCase
|
5
|
+
setup do
|
6
|
+
@github = app
|
7
|
+
@enterprise = app(domain: 'github.example.com')
|
8
|
+
end
|
9
|
+
|
10
|
+
test "#initialize doesn't raise if given an empty config" do
|
11
|
+
assert_nothing_raised do
|
12
|
+
GitHubApp.new({})
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
test "#domain defaults to github.com" do
|
17
|
+
assert_equal 'github.com', @github.domain
|
18
|
+
end
|
19
|
+
|
20
|
+
test "#url returns the HTTPS url to the github installation" do
|
21
|
+
assert_equal 'https://github.example.com', @enterprise.url
|
22
|
+
assert_equal 'https://github.example.com/foo/bar', @enterprise.url('/foo/bar')
|
23
|
+
assert_equal 'https://github.example.com/foo/bar/baz', @enterprise.url('foo/bar', 'baz')
|
24
|
+
end
|
25
|
+
|
26
|
+
test "#oauth_config.last[:client_options] is nil if domain is not overriden" do
|
27
|
+
assert_nil @github.oauth_config.last[:client_options][:site]
|
28
|
+
end
|
29
|
+
|
30
|
+
test "#oauth_config.last[:client_options] returns Enterprise endpoint if domain is overriden" do
|
31
|
+
assert_equal 'https://github.example.com/api/v3/', @enterprise.oauth_config.last[:client_options][:site]
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def app(extra_config = {})
|
37
|
+
GitHubApp.new(default_config.deep_merge(extra_config))
|
38
|
+
end
|
39
|
+
|
40
|
+
def default_config
|
41
|
+
Rails.application.secrets.github.deep_dup
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/test/unit/shipit_test.rb
CHANGED
@@ -6,60 +6,13 @@ module Shipit
|
|
6
6
|
Shipit.instance_variables.each(&Shipit.method(:remove_instance_variable))
|
7
7
|
end
|
8
8
|
|
9
|
-
test ".github_domain defaults to github.com" do
|
10
|
-
assert_equal 'github.com', Shipit.github_domain
|
11
|
-
end
|
12
|
-
|
13
|
-
test ".github_domain can be overriden" do
|
14
|
-
Rails.application.secrets.stubs(:github_domain).returns('github.example.com')
|
15
|
-
assert_equal 'github.example.com', Shipit.github_domain
|
16
|
-
end
|
17
|
-
|
18
|
-
test ".github_enterprise? returns false if github_domain is not overriden" do
|
19
|
-
refute Shipit.github_enterprise?
|
20
|
-
end
|
21
|
-
|
22
|
-
test ".github_enterprise? returns true if github_domain is overriden" do
|
23
|
-
Rails.application.secrets.stubs(:github_domain).returns('github.example.com')
|
24
|
-
assert Shipit.github_enterprise?
|
25
|
-
end
|
26
|
-
|
27
|
-
test ".github_url returns the HTTPS url to the github installation" do
|
28
|
-
Rails.application.secrets.stubs(:github_domain).returns('github.example.com')
|
29
|
-
assert_equal 'https://github.example.com', Shipit.github_url
|
30
|
-
assert_equal 'https://github.example.com/foo/bar', Shipit.github_url('/foo/bar')
|
31
|
-
assert_equal 'https://github.example.com/foo/bar', Shipit.github_url('foo/bar')
|
32
|
-
end
|
33
|
-
|
34
|
-
test ".github_api_endpoint returns nil if github_domain is not overriden" do
|
35
|
-
assert_nil Shipit.github_api_endpoint
|
36
|
-
end
|
37
|
-
|
38
|
-
test ".github_api_endpoint returns Enterprise endpoint if github_domain is overriden" do
|
39
|
-
Rails.application.secrets.stubs(:github_domain).returns('github.example.com')
|
40
|
-
assert_equal 'https://github.example.com/api/v3/', Shipit.github_api_endpoint
|
41
|
-
end
|
42
|
-
|
43
|
-
test ".github_oauth_options returns an empty hash if not enterprise" do
|
44
|
-
refute Shipit.github_enterprise?
|
45
|
-
assert_equal({}, Shipit.github_oauth_options)
|
46
|
-
end
|
47
|
-
|
48
9
|
test ".github_teams returns an empty array if there's no team" do
|
49
10
|
assert_equal([], Shipit.github_teams)
|
50
11
|
end
|
51
12
|
|
52
|
-
test ".github_teams returns the
|
53
|
-
|
13
|
+
test ".github_teams returns the teams key as an array of Team" do
|
14
|
+
Shipit.github.stubs(:oauth_teams).returns(['shopify/developers'])
|
54
15
|
assert_equal(['shopify/developers'], Shipit.github_teams.map(&:handle))
|
55
16
|
end
|
56
|
-
|
57
|
-
test ".github_teams merges the teams and team keys in a single array" do
|
58
|
-
Rails.application.secrets.stubs(:github_oauth).returns(
|
59
|
-
'team' => 'shopify/developers',
|
60
|
-
'teams' => ['shopify/developers', 'cyclimse/cooks'],
|
61
|
-
)
|
62
|
-
assert_equal(['cyclimse/cooks', 'shopify/developers'], Shipit.github_teams.map(&:handle))
|
63
|
-
end
|
64
17
|
end
|
65
18
|
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.22.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: 2018-04-
|
11
|
+
date: 2018-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_model_serializers
|
@@ -423,6 +423,7 @@ files:
|
|
423
423
|
- app/assets/images/ship.png
|
424
424
|
- app/assets/images/success-small.svg
|
425
425
|
- app/assets/images/success.svg
|
426
|
+
- app/assets/images/timedout.svg
|
426
427
|
- app/assets/images/unknown.svg
|
427
428
|
- app/assets/images/validation/invalid.png
|
428
429
|
- app/assets/images/validation/required.png
|
@@ -506,6 +507,7 @@ files:
|
|
506
507
|
- app/jobs/shipit/create_on_github_job.rb
|
507
508
|
- app/jobs/shipit/deferred_touch_job.rb
|
508
509
|
- app/jobs/shipit/deliver_hook_job.rb
|
510
|
+
- app/jobs/shipit/destroy_job.rb
|
509
511
|
- app/jobs/shipit/destroy_stack_job.rb
|
510
512
|
- app/jobs/shipit/emit_event_job.rb
|
511
513
|
- app/jobs/shipit/fetch_commit_stats_job.rb
|
@@ -662,6 +664,7 @@ files:
|
|
662
664
|
- db/migrate/20170904103242_reindex_deliveries.rb
|
663
665
|
- db/migrate/20171120161420_add_base_info_to_pull_request.rb
|
664
666
|
- db/migrate/20180202220850_add_aborted_by_to_tasks.rb
|
667
|
+
- db/migrate/20180417130436_remove_all_github_hooks.rb
|
665
668
|
- lib/shipit-engine.rb
|
666
669
|
- lib/shipit.rb
|
667
670
|
- lib/shipit/command.rb
|
@@ -671,7 +674,9 @@ files:
|
|
671
674
|
- lib/shipit/engine.rb
|
672
675
|
- lib/shipit/environment_variables.rb
|
673
676
|
- lib/shipit/first_parent_commits_iterator.rb
|
677
|
+
- lib/shipit/github_app.rb
|
674
678
|
- lib/shipit/null_serializer.rb
|
679
|
+
- lib/shipit/octokit_bot_users_patch.rb
|
675
680
|
- lib/shipit/octokit_iterator.rb
|
676
681
|
- lib/shipit/paginator.rb
|
677
682
|
- lib/shipit/rollback_commands.rb
|
@@ -697,7 +702,6 @@ files:
|
|
697
702
|
- lib/tasks/cron.rake
|
698
703
|
- lib/tasks/dev.rake
|
699
704
|
- lib/tasks/teams.rake
|
700
|
-
- lib/tasks/webhook.rake
|
701
705
|
- test/controllers/api/base_controller_test.rb
|
702
706
|
- test/controllers/api/ccmenu_controller_test.rb
|
703
707
|
- test/controllers/api/commits_controller_test.rb
|
@@ -845,6 +849,7 @@ files:
|
|
845
849
|
- test/unit/csv_serializer_test.rb
|
846
850
|
- test/unit/deploy_commands_test.rb
|
847
851
|
- test/unit/environment_variables_test.rb
|
852
|
+
- test/unit/github_app_test.rb
|
848
853
|
- test/unit/github_url_helper_test.rb
|
849
854
|
- test/unit/shipit_test.rb
|
850
855
|
- test/unit/variable_definition_test.rb
|
@@ -884,6 +889,7 @@ test_files:
|
|
884
889
|
- test/unit/command_test.rb
|
885
890
|
- test/unit/commands_test.rb
|
886
891
|
- test/unit/deploy_commands_test.rb
|
892
|
+
- test/unit/github_app_test.rb
|
887
893
|
- test/unit/github_url_helper_test.rb
|
888
894
|
- test/unit/variable_definition_test.rb
|
889
895
|
- test/unit/csv_serializer_test.rb
|