shipit-engine 0.38.0 → 0.40.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 +48 -4
- data/Rakefile +2 -1
- data/app/assets/javascripts/shipit/continuous_delivery_schedule.js.coffee +15 -0
- data/app/controllers/concerns/shipit/active_model_serializers_patch.rb +1 -0
- data/app/controllers/concerns/shipit/api/cacheable.rb +1 -0
- data/app/controllers/concerns/shipit/api/paginable.rb +3 -2
- data/app/controllers/concerns/shipit/api/rendering.rb +1 -0
- data/app/controllers/concerns/shipit/authentication.rb +1 -0
- data/app/controllers/concerns/shipit/pagination.rb +3 -2
- data/app/controllers/shipit/api/base_controller.rb +12 -10
- data/app/controllers/shipit/api/ccmenu_controller.rb +2 -1
- data/app/controllers/shipit/api/commits_controller.rb +2 -3
- data/app/controllers/shipit/api/deploys_controller.rb +6 -1
- data/app/controllers/shipit/api/hooks_controller.rb +4 -3
- data/app/controllers/shipit/api/locks_controller.rb +1 -0
- data/app/controllers/shipit/api/merge_requests_controller.rb +6 -5
- data/app/controllers/shipit/api/outputs_controller.rb +1 -0
- data/app/controllers/shipit/api/release_statuses_controller.rb +2 -1
- data/app/controllers/shipit/api/rollbacks_controller.rb +1 -0
- data/app/controllers/shipit/api/stacks_controller.rb +15 -14
- data/app/controllers/shipit/api/tasks_controller.rb +6 -5
- data/app/controllers/shipit/api_clients_controller.rb +6 -7
- data/app/controllers/shipit/ccmenu_url_controller.rb +3 -2
- data/app/controllers/shipit/commit_checks_controller.rb +2 -1
- data/app/controllers/shipit/commits_controller.rb +1 -0
- data/app/controllers/shipit/continuous_delivery_schedules_controller.rb +42 -0
- data/app/controllers/shipit/deploys_controller.rb +6 -5
- data/app/controllers/shipit/github_authentication_controller.rb +6 -0
- data/app/controllers/shipit/merge_requests_controller.rb +1 -0
- data/app/controllers/shipit/merge_status_controller.rb +30 -26
- data/app/controllers/shipit/release_statuses_controller.rb +1 -0
- data/app/controllers/shipit/repositories_controller.rb +4 -7
- data/app/controllers/shipit/rollbacks_controller.rb +2 -1
- data/app/controllers/shipit/shipit_controller.rb +1 -0
- data/app/controllers/shipit/stacks_controller.rb +27 -31
- data/app/controllers/shipit/status_controller.rb +1 -0
- data/app/controllers/shipit/tasks_controller.rb +3 -1
- data/app/controllers/shipit/webhooks_controller.rb +2 -1
- data/app/helpers/shipit/api_clients_helper.rb +1 -0
- data/app/helpers/shipit/chunks_helper.rb +3 -1
- data/app/helpers/shipit/deploys_helper.rb +7 -3
- data/app/helpers/shipit/github_url_helper.rb +5 -4
- data/app/helpers/shipit/merge_status_helper.rb +1 -0
- data/app/helpers/shipit/shipit_helper.rb +11 -10
- data/app/helpers/shipit/stacks_helper.rb +10 -11
- data/app/helpers/shipit/tasks_helper.rb +2 -1
- data/app/jobs/shipit/background_job/unique.rb +3 -2
- data/app/jobs/shipit/background_job.rb +9 -1
- data/app/jobs/shipit/cache_deploy_spec_job.rb +2 -1
- data/app/jobs/shipit/chunk_rollup_job.rb +1 -0
- data/app/jobs/shipit/clear_git_cache_job.rb +1 -0
- data/app/jobs/shipit/continuous_delivery_job.rb +5 -0
- data/app/jobs/shipit/create_on_github_job.rb +1 -0
- data/app/jobs/shipit/create_release_statuses_job.rb +2 -0
- data/app/jobs/shipit/deferred_touch_job.rb +1 -0
- data/app/jobs/shipit/deliver_hook_job.rb +1 -0
- data/app/jobs/shipit/destroy_job.rb +1 -0
- data/app/jobs/shipit/destroy_repository_job.rb +1 -0
- data/app/jobs/shipit/destroy_stack_job.rb +36 -15
- data/app/jobs/shipit/emit_event_job.rb +1 -0
- data/app/jobs/shipit/fetch_commit_stats_job.rb +1 -0
- data/app/jobs/shipit/fetch_deployed_revision_job.rb +1 -0
- data/app/jobs/shipit/github_sync_job.rb +4 -2
- data/app/jobs/shipit/mark_deploy_healthy_job.rb +1 -0
- data/app/jobs/shipit/perform_commit_checks_job.rb +1 -0
- data/app/jobs/shipit/perform_task_job.rb +1 -0
- data/app/jobs/shipit/process_merge_requests_job.rb +2 -0
- data/app/jobs/shipit/purge_old_deliveries_job.rb +1 -0
- data/app/jobs/shipit/reap_dead_tasks_job.rb +1 -0
- data/app/jobs/shipit/refresh_check_runs_job.rb +1 -0
- data/app/jobs/shipit/refresh_github_user_job.rb +1 -0
- data/app/jobs/shipit/refresh_merge_request_job.rb +1 -0
- data/app/jobs/shipit/refresh_statuses_job.rb +1 -0
- data/app/jobs/shipit/setup_github_hook_job.rb +1 -0
- data/app/jobs/shipit/update_estimated_deploy_duration_job.rb +1 -0
- data/app/jobs/shipit/update_github_last_deployed_ref_job.rb +6 -7
- data/app/models/concerns/shipit/deferred_touch.rb +5 -2
- data/app/models/shipit/anonymous_user.rb +4 -5
- data/app/models/shipit/api_client.rb +5 -3
- data/app/models/shipit/application_record.rb +1 -0
- data/app/models/shipit/check_run.rb +7 -6
- data/app/models/shipit/command_line_user.rb +4 -5
- data/app/models/shipit/commit.rb +46 -32
- data/app/models/shipit/commit_checks.rb +4 -2
- data/app/models/shipit/commit_deployment.rb +7 -5
- data/app/models/shipit/commit_deployment_status.rb +5 -3
- data/app/models/shipit/commit_message.rb +2 -0
- data/app/models/shipit/continuous_delivery_schedule.rb +84 -0
- data/app/models/shipit/delivery.rb +5 -4
- data/app/models/shipit/deploy.rb +46 -26
- data/app/models/shipit/deploy_spec/bundler_discovery.rb +3 -1
- data/app/models/shipit/deploy_spec/capistrano_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec/file_system.rb +48 -17
- data/app/models/shipit/deploy_spec/kubernetes_discovery.rb +4 -3
- data/app/models/shipit/deploy_spec/lerna_discovery.rb +32 -31
- data/app/models/shipit/deploy_spec/npm_discovery.rb +18 -13
- data/app/models/shipit/deploy_spec/pypi_discovery.rb +5 -4
- data/app/models/shipit/deploy_spec/rubygems_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec.rb +25 -30
- data/app/models/shipit/deploy_stats.rb +6 -1
- data/app/models/shipit/duration.rb +5 -3
- data/app/models/shipit/ephemeral_commit_checks.rb +8 -7
- data/app/models/shipit/github_hook.rb +1 -0
- data/app/models/shipit/github_status.rb +1 -0
- data/app/models/shipit/hook.rb +9 -7
- data/app/models/shipit/membership.rb +1 -0
- data/app/models/shipit/merge_request.rb +26 -16
- data/app/models/shipit/output_chunk.rb +1 -0
- data/app/models/shipit/provisioning_handler.rb +1 -0
- data/app/models/shipit/pull_request.rb +2 -2
- data/app/models/shipit/record.rb +1 -0
- data/app/models/shipit/release_status.rb +4 -3
- data/app/models/shipit/repository.rb +12 -11
- data/app/models/shipit/review_stack.rb +3 -1
- data/app/models/shipit/review_stack_provisioning_queue.rb +2 -2
- data/app/models/shipit/rollback.rb +2 -0
- data/app/models/shipit/stack.rb +71 -60
- data/app/models/shipit/status/common.rb +1 -0
- data/app/models/shipit/status/group.rb +5 -3
- data/app/models/shipit/status/missing.rb +2 -1
- data/app/models/shipit/status/unknown.rb +1 -0
- data/app/models/shipit/status.rb +5 -4
- data/app/models/shipit/task.rb +40 -31
- data/app/models/shipit/task_definition.rb +10 -7
- data/app/models/shipit/task_execution_strategy/default.rb +13 -13
- data/app/models/shipit/team.rb +13 -12
- data/app/models/shipit/undeployed_commit.rb +8 -3
- data/app/models/shipit/unlimited_api_client.rb +2 -2
- data/app/models/shipit/user.rb +23 -16
- data/app/models/shipit/variable_definition.rb +2 -1
- data/app/models/shipit/webhooks/handlers/check_suite_handler.rb +1 -0
- data/app/models/shipit/webhooks/handlers/handler.rb +1 -0
- data/app/models/shipit/webhooks/handlers/membership_handler.rb +1 -0
- data/app/models/shipit/webhooks/handlers/pull_request/assigned_handler.rb +10 -10
- data/app/models/shipit/webhooks/handlers/pull_request/closed_handler.rb +1 -1
- data/app/models/shipit/webhooks/handlers/pull_request/edited_handler.rb +10 -10
- data/app/models/shipit/webhooks/handlers/pull_request/label_capturing_handler.rb +2 -2
- data/app/models/shipit/webhooks/handlers/pull_request/labeled_handler.rb +2 -2
- data/app/models/shipit/webhooks/handlers/pull_request/reopened_handler.rb +1 -1
- data/app/models/shipit/webhooks/handlers/pull_request/review_stack_adapter.rb +3 -3
- data/app/models/shipit/webhooks/handlers/pull_request/unlabeled_handler.rb +1 -1
- data/app/models/shipit/webhooks/handlers/push_handler.rb +2 -1
- data/app/models/shipit/webhooks/handlers/status_handler.rb +1 -0
- data/app/models/shipit/webhooks.rb +3 -2
- data/app/serializers/concerns/shipit/conditional_attributes.rb +1 -0
- data/app/serializers/shipit/anonymous_user_serializer.rb +1 -0
- data/app/serializers/shipit/command_line_user_serializer.rb +1 -0
- data/app/serializers/shipit/commit_serializer.rb +2 -1
- data/app/serializers/shipit/deploy_serializer.rb +1 -0
- data/app/serializers/shipit/hook_serializer.rb +1 -0
- data/app/serializers/shipit/merge_request_serializer.rb +2 -1
- data/app/serializers/shipit/rollback_serializer.rb +1 -0
- data/app/serializers/shipit/short_commit_serializer.rb +1 -0
- data/app/serializers/shipit/stack_serializer.rb +4 -3
- data/app/serializers/shipit/tail_task_serializer.rb +4 -1
- data/app/serializers/shipit/task_serializer.rb +1 -0
- data/app/serializers/shipit/user_serializer.rb +1 -0
- data/app/validators/ascii_only_validator.rb +4 -3
- data/app/validators/subset_validator.rb +1 -0
- data/app/views/shipit/_variables.html.erb +1 -1
- data/app/views/shipit/ccmenu/project.xml.builder +2 -1
- data/app/views/shipit/continuous_delivery_schedules/show.html.erb +59 -0
- data/app/views/shipit/merge_status/failure.html.erb +1 -1
- data/app/views/shipit/missing_settings.html.erb +1 -1
- data/app/views/shipit/stacks/_settings_form.erb +1 -0
- data/config/initializers/inflections.rb +1 -0
- data/config/locales/en.yml +1 -0
- data/config/routes.rb +21 -18
- data/config/secrets.development.example.yml +1 -1
- data/config/secrets.development.shopify.yml +1 -1
- data/db/migrate/20240821003007_add_continuous_delivery_schedules.rb +13 -0
- data/db/migrate/20250207203053_embiggen_github_ids.rb +8 -0
- data/lib/shipit/cast_value.rb +1 -0
- data/lib/shipit/command.rb +29 -9
- data/lib/shipit/commands.rb +4 -2
- data/lib/shipit/csv_serializer.rb +3 -0
- data/lib/shipit/deploy_commands.rb +2 -1
- data/lib/shipit/engine.rb +6 -5
- data/lib/shipit/environment_variables.rb +2 -0
- data/lib/shipit/first_parent_commits_iterator.rb +2 -3
- data/lib/shipit/flock.rb +11 -9
- data/lib/shipit/github_app.rb +14 -16
- data/lib/shipit/github_http_cache_middleware.rb +1 -0
- data/lib/shipit/null_serializer.rb +1 -0
- data/lib/shipit/octokit_check_runs.rb +2 -3
- data/lib/shipit/octokit_iterator.rb +2 -0
- data/lib/shipit/paginator.rb +1 -0
- data/lib/shipit/rollback_commands.rb +2 -1
- data/lib/shipit/same_site_cookie_middleware.rb +1 -0
- data/lib/shipit/simple_message_verifier.rb +1 -0
- data/lib/shipit/stack_commands.rb +35 -27
- data/lib/shipit/stat.rb +1 -0
- data/lib/shipit/task_commands.rb +7 -6
- data/lib/shipit/version.rb +2 -1
- data/lib/shipit.rb +30 -17
- data/lib/tasks/cron.rake +2 -1
- data/lib/tasks/dev.rake +3 -2
- data/lib/tasks/shipit.rake +3 -2
- data/lib/tasks/teams.rake +3 -2
- data/test/controllers/api/base_controller_test.rb +1 -0
- data/test/controllers/api/ccmenu_controller_test.rb +4 -3
- data/test/controllers/api/commits_controller_test.rb +1 -0
- data/test/controllers/api/deploys_controller_test.rb +26 -1
- data/test/controllers/api/hooks_controller_test.rb +6 -5
- data/test/controllers/api/locks_controller_test.rb +1 -0
- data/test/controllers/api/merge_requests_controller_test.rb +1 -0
- data/test/controllers/api/outputs_controller_test.rb +1 -0
- data/test/controllers/api/release_statuses_controller_test.rb +4 -3
- data/test/controllers/api/rollback_controller_test.rb +3 -2
- data/test/controllers/api/stacks_controller_test.rb +13 -12
- data/test/controllers/api/tasks_controller_test.rb +7 -6
- data/test/controllers/api_clients_controller_test.rb +10 -10
- data/test/controllers/ccmenu_controller_test.rb +1 -0
- data/test/controllers/commit_checks_controller_test.rb +1 -0
- data/test/controllers/commits_controller_test.rb +9 -8
- data/test/controllers/continuous_delivery_schedules_controller_test.rb +66 -0
- data/test/controllers/deploys_controller_test.rb +4 -2
- data/test/controllers/github_authentication_controller_test.rb +6 -4
- data/test/controllers/merge_requests_controller_test.rb +1 -0
- data/test/controllers/merge_status_controller_test.rb +5 -4
- data/test/controllers/release_statuses_controller_test.rb +1 -0
- data/test/controllers/repositories_controller_test.rb +6 -5
- data/test/controllers/rollbacks_controller_test.rb +3 -2
- data/test/controllers/stacks_controller_test.rb +8 -6
- data/test/controllers/status_controller_test.rb +1 -0
- data/test/controllers/tasks_controller_test.rb +13 -5
- data/test/controllers/webhooks_controller_test.rb +10 -9
- data/test/dummy/config/application.rb +2 -1
- data/test/dummy/config/initializers/0_load_development_secrets.rb +2 -2
- data/test/dummy/config/secrets.development.json +3 -0
- data/test/dummy/config/secrets.test.json +21 -0
- data/test/dummy/db/schema.rb +33 -6
- data/test/fixtures/shipit/commits.yml +7 -7
- data/test/fixtures/shipit/stacks.yml +4 -10
- data/test/fixtures/shipit/tasks.yml +3 -3
- data/test/helpers/api_helper.rb +2 -3
- data/test/helpers/fixture_aliases_helper.rb +1 -0
- data/test/helpers/hooks_helper.rb +1 -0
- data/test/helpers/json_helper.rb +4 -3
- data/test/helpers/links_helper.rb +2 -1
- data/test/helpers/payloads_helper.rb +1 -0
- data/test/helpers/queries_helper.rb +4 -3
- data/test/jobs/cache_deploy_spec_job_test.rb +3 -2
- data/test/jobs/chunk_rollup_job_test.rb +3 -2
- data/test/jobs/deliver_hook_job_test.rb +1 -0
- data/test/jobs/destroy_repository_job_test.rb +1 -0
- data/test/jobs/destroy_stack_job_test.rb +12 -0
- data/test/jobs/emit_event_job_test.rb +1 -0
- data/test/jobs/fetch_commit_stats_job_test.rb +1 -0
- data/test/jobs/fetch_deployed_revision_job_test.rb +1 -0
- data/test/jobs/github_sync_job_test.rb +22 -21
- data/test/jobs/mark_deploy_healthy_job_test.rb +1 -0
- data/test/jobs/perform_task_job_test.rb +3 -3
- data/test/jobs/process_merge_requests_job_test.rb +7 -6
- data/test/jobs/purge_old_deliveries_job_test.rb +1 -0
- data/test/jobs/reap_dead_tasks_job_test.rb +1 -0
- data/test/jobs/refresh_github_user_job_test.rb +1 -0
- data/test/jobs/refresh_status_job_test.rb +1 -0
- data/test/jobs/shipit/background_job_test.rb +35 -0
- data/test/jobs/shipit/continuous_delivery_job_test.rb +31 -0
- data/test/jobs/unique_job_test.rb +3 -1
- data/test/jobs/update_github_last_deployed_ref_job_test.rb +1 -0
- data/test/middleware/same_site_cookie_middleware_test.rb +2 -2
- data/test/models/api_client_test.rb +1 -0
- data/test/models/commit_checks_test.rb +2 -1
- data/test/models/commit_deployment_status_test.rb +2 -2
- data/test/models/commit_deployment_test.rb +4 -3
- data/test/models/commits_test.rb +72 -70
- data/test/models/delivery_test.rb +3 -2
- data/test/models/deploy_spec_test.rb +113 -109
- data/test/models/deploy_stats_test.rb +1 -0
- data/test/models/deploys_test.rb +65 -56
- data/test/models/duration_test.rb +1 -1
- data/test/models/github_hook_test.rb +1 -0
- data/test/models/hook_test.rb +7 -4
- data/test/models/membership_test.rb +1 -0
- data/test/models/merge_request_test.rb +26 -20
- data/test/models/release_statuses_test.rb +2 -1
- data/test/models/rollbacks_test.rb +4 -3
- data/test/models/shipit/check_run_test.rb +16 -15
- data/test/models/shipit/continuous_delivery_schedule_test.rb +109 -0
- data/test/models/shipit/deploy_spec/file_system_test.rb +54 -10
- data/test/models/shipit/pull_request_test.rb +9 -9
- data/test/models/shipit/repository_test.rb +3 -2
- data/test/models/shipit/review_stack_provisioning_queue_test.rb +2 -2
- data/test/models/shipit/{stacks_test.rb → stack_test.rb} +48 -34
- data/test/models/shipit/webhooks/handlers/pull_request/closed_handler_test.rb +36 -34
- data/test/models/shipit/webhooks/handlers/pull_request/label_capturing_handler_test.rb +28 -28
- data/test/models/shipit/webhooks/handlers/pull_request/labeled_handler_test.rb +42 -42
- data/test/models/shipit/webhooks/handlers/pull_request/opened_handler_test.rb +33 -33
- data/test/models/shipit/webhooks/handlers/pull_request/reopened_handler_test.rb +37 -37
- data/test/models/shipit/webhooks/handlers/pull_request/review_stack_adapter_test.rb +1 -1
- data/test/models/shipit/webhooks/handlers/pull_request/unlabeled_handler_test.rb +44 -42
- data/test/models/shipit/webhooks/handlers_test.rb +1 -0
- data/test/models/status/group_test.rb +3 -2
- data/test/models/status/missing_test.rb +1 -0
- data/test/models/status_test.rb +2 -1
- data/test/models/task_definitions_test.rb +7 -6
- data/test/models/tasks_test.rb +5 -4
- data/test/models/team_test.rb +5 -4
- data/test/models/undeployed_commits_test.rb +10 -9
- data/test/models/users_test.rb +29 -20
- data/test/test_command_integration.rb +1 -1
- data/test/test_helper.rb +12 -10
- data/test/unit/anonymous_user_serializer_test.rb +1 -0
- data/test/unit/command_test.rb +10 -1
- data/test/unit/commands_test.rb +1 -0
- data/test/unit/commit_serializer_test.rb +1 -0
- data/test/unit/csv_serializer_test.rb +3 -2
- data/test/unit/deploy_commands_test.rb +33 -23
- data/test/unit/deploy_serializer_test.rb +1 -0
- data/test/unit/environment_variables_test.rb +2 -1
- data/test/unit/github_app_test.rb +11 -10
- data/test/unit/github_apps_test.rb +19 -18
- data/test/unit/github_url_helper_test.rb +1 -0
- data/test/unit/line_buffer_test.rb +1 -1
- data/test/unit/rollback_commands_test.rb +2 -1
- data/test/unit/shipit_helper_test.rb +1 -0
- data/test/unit/shipit_test.rb +47 -1
- data/test/unit/user_serializer_test.rb +1 -0
- data/test/unit/variable_definition_test.rb +4 -3
- metadata +61 -47
data/test/models/deploys_test.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'test_helper'
|
3
4
|
|
4
5
|
module Shipit
|
@@ -66,8 +67,8 @@ module Shipit
|
|
66
67
|
deploy_stack = runnable_deploy.stack
|
67
68
|
|
68
69
|
Shipit::Deploy.any_instance.expects(:acquire_git_cache_lock).twice
|
69
|
-
|
70
|
-
|
70
|
+
.raises(Shipit::Command::TimedOut, 'Deploy timed out')
|
71
|
+
.then.raises(Shipit::Command::Error, "Second command error failure")
|
71
72
|
|
72
73
|
perform_enqueued_jobs(only: Shipit::PerformTaskJob) do
|
73
74
|
runnable_deploy.enqueue
|
@@ -90,8 +91,8 @@ module Shipit
|
|
90
91
|
deploy_stack = runnable_deploy.stack
|
91
92
|
|
92
93
|
Shipit::Deploy.any_instance.expects(:acquire_git_cache_lock).twice
|
93
|
-
|
94
|
-
|
94
|
+
.raises(Shipit::Command::Error, 'Deploy failed')
|
95
|
+
.then.raises(Shipit::Command::Error, "Second deploy failed")
|
95
96
|
|
96
97
|
perform_enqueued_jobs(only: Shipit::PerformTaskJob) do
|
97
98
|
runnable_deploy.enqueue
|
@@ -114,8 +115,8 @@ module Shipit
|
|
114
115
|
deploy_stack = runnable_deploy.stack
|
115
116
|
|
116
117
|
Shipit::Deploy.any_instance.expects(:acquire_git_cache_lock).twice
|
117
|
-
|
118
|
-
|
118
|
+
.raises(StandardError, 'Deploy failed')
|
119
|
+
.then.raises(StandardError, "Second deploy failed")
|
119
120
|
|
120
121
|
perform_enqueued_jobs(only: Shipit::PerformTaskJob) do
|
121
122
|
runnable_deploy.enqueue
|
@@ -138,7 +139,7 @@ module Shipit
|
|
138
139
|
runnable_deploy.update!(retry_attempt: 0, max_retries: 0)
|
139
140
|
|
140
141
|
Shipit::Deploy.any_instance.expects(:acquire_git_cache_lock)
|
141
|
-
|
142
|
+
.raises(Shipit::Command::TimedOut, 'Deploy timed out')
|
142
143
|
|
143
144
|
perform_enqueued_jobs(only: Shipit::PerformTaskJob) do
|
144
145
|
runnable_deploy.enqueue
|
@@ -157,8 +158,8 @@ module Shipit
|
|
157
158
|
DeploySpec.any_instance.expects(:retries_on_rollback).returns(1)
|
158
159
|
|
159
160
|
Shipit::Command.any_instance.expects(:run).twice
|
160
|
-
|
161
|
-
|
161
|
+
.raises(Shipit::Command::TimedOut, 'Rollback timed out')
|
162
|
+
.then.raises(Shipit::Command::Error, "Second command error failure")
|
162
163
|
|
163
164
|
first_rollback = nil
|
164
165
|
|
@@ -185,8 +186,8 @@ module Shipit
|
|
185
186
|
DeploySpec.any_instance.expects(:retries_on_rollback).returns(0)
|
186
187
|
|
187
188
|
Shipit::Command.any_instance.expects(:run).once
|
188
|
-
|
189
|
-
|
189
|
+
.raises(Shipit::Command::TimedOut, 'Rollback timed out')
|
190
|
+
.then.raises(Shipit::Command::Error, "Second command error failure")
|
190
191
|
|
191
192
|
first_rollback = nil
|
192
193
|
|
@@ -208,7 +209,7 @@ module Shipit
|
|
208
209
|
|
209
210
|
deploy = stack.deploys.create!(
|
210
211
|
since_commit: first,
|
211
|
-
until_commit: third
|
212
|
+
until_commit: third
|
212
213
|
)
|
213
214
|
|
214
215
|
assert_equal 13, deploy.additions
|
@@ -222,7 +223,7 @@ module Shipit
|
|
222
223
|
|
223
224
|
deploy = stack.deploys.new(
|
224
225
|
since_commit: first,
|
225
|
-
until_commit: last
|
226
|
+
until_commit: last
|
226
227
|
)
|
227
228
|
|
228
229
|
commits = deploy.commits
|
@@ -239,7 +240,7 @@ module Shipit
|
|
239
240
|
|
240
241
|
deploy = stack.deploys.new(
|
241
242
|
since_commit: first,
|
242
|
-
until_commit: last
|
243
|
+
until_commit: last
|
243
244
|
)
|
244
245
|
|
245
246
|
assert_equal [4, 3, 2], deploy.commits.pluck(:id)
|
@@ -260,7 +261,7 @@ module Shipit
|
|
260
261
|
|
261
262
|
expect_event(deploy)
|
262
263
|
deploy.status = 'running'
|
263
|
-
expect_hook(:deploy, deploy.stack, status: 'success', deploy
|
264
|
+
expect_hook(:deploy, deploy.stack, status: 'success', deploy:, stack: deploy.stack) do
|
264
265
|
deploy.complete!
|
265
266
|
end
|
266
267
|
end
|
@@ -280,7 +281,7 @@ module Shipit
|
|
280
281
|
|
281
282
|
expect_event(deploy)
|
282
283
|
deploy.status = 'running'
|
283
|
-
expect_hook(:deploy, deploy.stack, status: 'failed', deploy
|
284
|
+
expect_hook(:deploy, deploy.stack, status: 'failed', deploy:, stack: deploy.stack) do
|
284
285
|
deploy.failure!
|
285
286
|
end
|
286
287
|
end
|
@@ -300,7 +301,7 @@ module Shipit
|
|
300
301
|
|
301
302
|
expect_event(deploy)
|
302
303
|
deploy.status = 'running'
|
303
|
-
expect_hook(:deploy, deploy.stack, status: 'error', deploy
|
304
|
+
expect_hook(:deploy, deploy.stack, status: 'error', deploy:, stack: deploy.stack) do
|
304
305
|
deploy.error!
|
305
306
|
end
|
306
307
|
end
|
@@ -320,7 +321,7 @@ module Shipit
|
|
320
321
|
|
321
322
|
expect_event(deploy)
|
322
323
|
deploy.status = 'pending'
|
323
|
-
expect_hook(:deploy, deploy.stack, status: 'running', deploy
|
324
|
+
expect_hook(:deploy, deploy.stack, status: 'running', deploy:, stack: deploy.stack) do
|
324
325
|
deploy.run!
|
325
326
|
end
|
326
327
|
end
|
@@ -339,7 +340,7 @@ module Shipit
|
|
339
340
|
shipit = shipit_stacks(:shipit)
|
340
341
|
deploy = shipit.deploys.build(
|
341
342
|
since_commit: shipit.commits.first,
|
342
|
-
until_commit: shipit.commits.last
|
343
|
+
until_commit: shipit.commits.last
|
343
344
|
)
|
344
345
|
deploy.stubs(:merge_request_head_for_commit).returns(nil)
|
345
346
|
|
@@ -436,6 +437,7 @@ module Shipit
|
|
436
437
|
@deploy = shipit_deploys(:shipit_running)
|
437
438
|
@deploy.ping
|
438
439
|
@deploy.pid = 42
|
440
|
+
@deploy.env = { 'CUSTOM_VAR' => 'value' }
|
439
441
|
@deploy.abort!(rollback_once_aborted: true, aborted_by: @user)
|
440
442
|
|
441
443
|
assert_difference -> { @stack.rollbacks.count }, 1 do
|
@@ -443,6 +445,9 @@ module Shipit
|
|
443
445
|
@deploy.aborted!
|
444
446
|
end
|
445
447
|
end
|
448
|
+
|
449
|
+
rollback = @stack.rollbacks.last
|
450
|
+
assert_equal({ 'CUSTOM_VAR' => 'value' }, rollback.env)
|
446
451
|
end
|
447
452
|
|
448
453
|
test "transitioning to aborted schedule a rollback to the designated deploy if set" do
|
@@ -450,6 +455,7 @@ module Shipit
|
|
450
455
|
@deploy = shipit_deploys(:shipit_running)
|
451
456
|
@deploy.ping
|
452
457
|
@deploy.pid = 42
|
458
|
+
@deploy.env = { 'CUSTOM_VAR' => 'value' }
|
453
459
|
@deploy.abort!(rollback_once_aborted: true, rollback_once_aborted_to: @rollback_to, aborted_by: @user)
|
454
460
|
|
455
461
|
assert_difference -> { @stack.rollbacks.count }, 1 do
|
@@ -457,6 +463,9 @@ module Shipit
|
|
457
463
|
@deploy.aborted!
|
458
464
|
end
|
459
465
|
end
|
466
|
+
|
467
|
+
rollback = @stack.rollbacks.last
|
468
|
+
assert_equal({ 'CUSTOM_VAR' => 'value' }, rollback.env)
|
460
469
|
end
|
461
470
|
|
462
471
|
test "transitioning to aborted locks the stack if a rollback is scheduled" do
|
@@ -513,18 +522,18 @@ module Shipit
|
|
513
522
|
|
514
523
|
def create_test_stack(repository: Shipit::Repository.find_or_create_by!(owner: "shopify-test", name: "shipit-engine-test"))
|
515
524
|
Shipit::Stack.create(
|
516
|
-
repository
|
525
|
+
repository:,
|
517
526
|
environment: 'production',
|
518
527
|
branch: "master",
|
519
528
|
merge_queue_enabled: true,
|
520
529
|
created_at: "2019-01-01 00:00:00",
|
521
|
-
updated_at: "2019-01-02 10:10:10"
|
530
|
+
updated_at: "2019-01-02 10:10:10"
|
522
531
|
)
|
523
532
|
end
|
524
533
|
|
525
534
|
def create_test_commit(stack_id:, user_id:)
|
526
535
|
Shipit::Commit.new(
|
527
|
-
stack_id
|
536
|
+
stack_id:,
|
528
537
|
author_id: user_id,
|
529
538
|
sha: SecureRandom.hex(20),
|
530
539
|
additions: 2,
|
@@ -532,27 +541,27 @@ module Shipit
|
|
532
541
|
committer_id: user_id,
|
533
542
|
message: "Some commit message.",
|
534
543
|
authored_at: "2019-01-02 10:11:10",
|
535
|
-
committed_at: "2019-01-02 10:11:10"
|
544
|
+
committed_at: "2019-01-02 10:11:10"
|
536
545
|
)
|
537
546
|
end
|
538
547
|
|
539
548
|
def create_test_status(commit_id:, stack_id:, state: "success")
|
540
549
|
Shipit::Status.new(
|
541
550
|
description: "Description for commit #{commit_id}",
|
542
|
-
stack_id
|
543
|
-
commit_id
|
544
|
-
state:
|
551
|
+
stack_id:,
|
552
|
+
commit_id:,
|
553
|
+
state:
|
545
554
|
)
|
546
555
|
end
|
547
556
|
|
548
557
|
def create_test_deploy(stack_id:, user_id:, since_commit_id:, until_commit_id: since_commit_id)
|
549
558
|
Shipit::Deploy.new(
|
550
|
-
stack_id
|
551
|
-
user_id
|
552
|
-
since_commit_id
|
553
|
-
until_commit_id
|
559
|
+
stack_id:,
|
560
|
+
user_id:,
|
561
|
+
since_commit_id:,
|
562
|
+
until_commit_id:,
|
554
563
|
status: "success",
|
555
|
-
type: "Shipit::Deploy"
|
564
|
+
type: "Shipit::Deploy"
|
556
565
|
)
|
557
566
|
end
|
558
567
|
|
@@ -567,13 +576,13 @@ module Shipit
|
|
567
576
|
def generate_commits(amount:, stack_id:, user_id:, validate:)
|
568
577
|
commit_ids = []
|
569
578
|
amount.times do
|
570
|
-
commit = create_test_commit(stack_id
|
579
|
+
commit = create_test_commit(stack_id:, user_id:)
|
571
580
|
commit.save
|
572
581
|
commit.reload
|
573
582
|
commit_ids << commit.id
|
574
583
|
end
|
575
584
|
|
576
|
-
|
585
|
+
assert_generated_record_ids_are_sequential(commit_ids) if validate
|
577
586
|
commit_ids
|
578
587
|
end
|
579
588
|
|
@@ -585,11 +594,11 @@ module Shipit
|
|
585
594
|
stack_id = test_stack.id
|
586
595
|
|
587
596
|
# Create valid commit history for the stack. We need several commits to deploy and roll back through.
|
588
|
-
commit_ids = generate_commits(amount: 4, stack_id
|
589
|
-
commit_ids.each { |commit_id| create_test_status(commit_id
|
597
|
+
commit_ids = generate_commits(amount: 4, stack_id:, user_id:, validate: true)
|
598
|
+
commit_ids.each { |commit_id| create_test_status(commit_id:, stack_id:, state: "success").save }
|
590
599
|
|
591
600
|
# Three deploys of commits 1-2, 2-3 and 3-4 respectively. Reverting last should result in Deploy 3 (commit 3) being latest.
|
592
|
-
3.times { |index| create_test_deploy(stack_id
|
601
|
+
3.times { |index| create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[index], until_commit_id: commit_ids[index + 1]).save }
|
593
602
|
|
594
603
|
# Get the reference with Rails-mutated field values.
|
595
604
|
commit3 = Shipit::Commit.second_to_last
|
@@ -621,7 +630,7 @@ module Shipit
|
|
621
630
|
running_deploy = shipit_deploys(:shipit_running)
|
622
631
|
rollback_to = shipit_deploys(:shipit_pending)
|
623
632
|
|
624
|
-
final_rollback = running_deploy.trigger_revert(rollback_to:
|
633
|
+
final_rollback = running_deploy.trigger_revert(rollback_to:)
|
625
634
|
|
626
635
|
assert_equal "Shipit::Rollback", final_rollback.type
|
627
636
|
assert_equal 4, final_rollback.until_commit_id
|
@@ -635,8 +644,8 @@ module Shipit
|
|
635
644
|
stack_id = test_stack.id
|
636
645
|
|
637
646
|
# Create valid commit history for the stack. We need several commits to deploy and roll back through.
|
638
|
-
commit_ids = generate_commits(amount: 4, stack_id
|
639
|
-
commit_ids.each { |commit_id| create_test_status(commit_id
|
647
|
+
commit_ids = generate_commits(amount: 4, stack_id:, user_id:, validate: true)
|
648
|
+
commit_ids.each { |commit_id| create_test_status(commit_id:, stack_id:, state: "success").save }
|
640
649
|
|
641
650
|
# We want the following order of Deploys:
|
642
651
|
# 1. Success (commits 1-2)
|
@@ -645,10 +654,10 @@ module Shipit
|
|
645
654
|
# 4. Running (commits 3-4)
|
646
655
|
# 5. Reversion of the running deploy to the last successful deploy. (-> commits 1-2, i.e. the successful deploy.)
|
647
656
|
|
648
|
-
deploy1 = create_test_deploy(stack_id
|
657
|
+
deploy1 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[0], until_commit_id: commit_ids[1])
|
649
658
|
deploy1.save
|
650
659
|
|
651
|
-
deploy2 = create_test_deploy(stack_id
|
660
|
+
deploy2 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[1], until_commit_id: commit_ids[2])
|
652
661
|
deploy2.status = "faulty"
|
653
662
|
deploy2.save
|
654
663
|
|
@@ -658,7 +667,7 @@ module Shipit
|
|
658
667
|
|
659
668
|
assert_equal commit_ids[1], test_stack.last_deployed_commit.id
|
660
669
|
|
661
|
-
deploy3 = create_test_deploy(stack_id
|
670
|
+
deploy3 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[2], until_commit_id: commit_ids[3])
|
662
671
|
deploy3.status = "running"
|
663
672
|
deploy3.rollback_once_aborted = false
|
664
673
|
deploy3.save
|
@@ -693,8 +702,8 @@ module Shipit
|
|
693
702
|
stack_id = test_stack.id
|
694
703
|
|
695
704
|
# Create valid commit history for the stack. We need several commits to deploy and roll back through.
|
696
|
-
commit_ids = generate_commits(amount: 4, stack_id
|
697
|
-
commit_ids.each { |commit_id| create_test_status(commit_id
|
705
|
+
commit_ids = generate_commits(amount: 4, stack_id:, user_id:, validate: true)
|
706
|
+
commit_ids.each { |commit_id| create_test_status(commit_id:, stack_id:, state: "success").save }
|
698
707
|
|
699
708
|
# We want the following order of Deploys:
|
700
709
|
# 1. Success (commits 1-2)
|
@@ -703,14 +712,14 @@ module Shipit
|
|
703
712
|
# 4. Reversion of the running deploy to the last successful deploy. (-> commits 1-2, i.e. the successful deploy.)
|
704
713
|
# If the revert functionality doesn't restrict to deploys and rollbacks, then commit 3 will be latest deployed when the reversion is done.
|
705
714
|
|
706
|
-
deploy1 = create_test_deploy(stack_id
|
715
|
+
deploy1 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[0], until_commit_id: commit_ids[1])
|
707
716
|
deploy1.save
|
708
717
|
|
709
|
-
deploy2 = create_test_deploy(stack_id
|
718
|
+
deploy2 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[1], until_commit_id: commit_ids[2])
|
710
719
|
deploy2.type = "Shipit::Fake"
|
711
720
|
deploy2.save
|
712
721
|
|
713
|
-
deploy3 = create_test_deploy(stack_id
|
722
|
+
deploy3 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[2], until_commit_id: commit_ids[3])
|
714
723
|
deploy3.status = "running"
|
715
724
|
deploy3.rollback_once_aborted = false
|
716
725
|
deploy3.save
|
@@ -744,8 +753,8 @@ module Shipit
|
|
744
753
|
stack_id = test_stack.id
|
745
754
|
|
746
755
|
# Create valid commit history for the stack. We need several commits to deploy and roll back through.
|
747
|
-
commit_ids = generate_commits(amount: 4, stack_id
|
748
|
-
commit_ids.each { |commit_id| create_test_status(commit_id
|
756
|
+
commit_ids = generate_commits(amount: 4, stack_id:, user_id:, validate: true)
|
757
|
+
commit_ids.each { |commit_id| create_test_status(commit_id:, stack_id:, state: "success").save }
|
749
758
|
|
750
759
|
# We want the following order of Deploys:
|
751
760
|
# 1. Success (commits 1-2)
|
@@ -754,13 +763,13 @@ module Shipit
|
|
754
763
|
# 4. Reversion of the running deploy to the last successful deploy of the same stack. (-> commits 1-2, i.e. the successful deploy.)
|
755
764
|
# If the revert functionality doesn't restrict to the correct stack, then commit 3 will be latest deployed when the reversion is done.
|
756
765
|
|
757
|
-
deploy1 = create_test_deploy(stack_id
|
766
|
+
deploy1 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[0], until_commit_id: commit_ids[1])
|
758
767
|
deploy1.save
|
759
768
|
|
760
|
-
deploy2 = create_test_deploy(stack_id: other_stack.id, user_id
|
769
|
+
deploy2 = create_test_deploy(stack_id: other_stack.id, user_id:, since_commit_id: commit_ids[1], until_commit_id: commit_ids[2])
|
761
770
|
deploy2.save
|
762
771
|
|
763
|
-
deploy3 = create_test_deploy(stack_id
|
772
|
+
deploy3 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[2], until_commit_id: commit_ids[3])
|
764
773
|
deploy3.status = "running"
|
765
774
|
deploy3.rollback_once_aborted = false
|
766
775
|
deploy3.save
|
@@ -788,9 +797,9 @@ module Shipit
|
|
788
797
|
test_stack.reload
|
789
798
|
stack_id = test_stack.id
|
790
799
|
|
791
|
-
commit_ids = generate_commits(amount: 2, stack_id
|
792
|
-
commit_ids.each { |commit_id| create_test_status(commit_id
|
793
|
-
deploy1 = create_test_deploy(stack_id
|
800
|
+
commit_ids = generate_commits(amount: 2, stack_id:, user_id:, validate: true)
|
801
|
+
commit_ids.each { |commit_id| create_test_status(commit_id:, stack_id:, state: "success").save }
|
802
|
+
deploy1 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[0], until_commit_id: commit_ids[1])
|
794
803
|
deploy1.save
|
795
804
|
|
796
805
|
rollback = deploy1.trigger_revert
|
@@ -1093,7 +1102,7 @@ module Shipit
|
|
1093
1102
|
template_task = shipit_tasks(:shipit_pending)
|
1094
1103
|
deploy = template_task.stack.deploys.build(
|
1095
1104
|
since_commit: template_task.since_commit,
|
1096
|
-
until_commit: template_task.until_commit
|
1105
|
+
until_commit: template_task.until_commit
|
1097
1106
|
)
|
1098
1107
|
|
1099
1108
|
expected_delta = deploy.commits.select(&:pull_request?).size + 1
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'test_helper'
|
3
4
|
|
4
5
|
module Shipit
|
@@ -7,7 +8,6 @@ module Shipit
|
|
7
8
|
assert_equal Duration.new(1), Duration.new(1)
|
8
9
|
assert Duration.new(2) > Duration.new(1)
|
9
10
|
assert Duration.new(2) > 1
|
10
|
-
assert 1 < Duration.new(2)
|
11
11
|
end
|
12
12
|
|
13
13
|
test "can be added to a Time instance" do
|
data/test/models/hook_test.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'test_helper'
|
3
4
|
|
4
5
|
module Shipit
|
@@ -21,11 +22,11 @@ module Shipit
|
|
21
22
|
end
|
22
23
|
|
23
24
|
test "#events is accessible as an array" do
|
24
|
-
assert_equal %w
|
25
|
+
assert_equal %w[deploy rollback], @hook.events
|
25
26
|
end
|
26
27
|
|
27
28
|
test "#events can only contain a defined set of values" do
|
28
|
-
@hook.events = %w
|
29
|
+
@hook.events = %w[foo]
|
29
30
|
refute @hook.valid?
|
30
31
|
assert_equal ["Events is not a strict subset of #{Hook::EVENTS.inspect}"], @hook.errors.full_messages
|
31
32
|
end
|
@@ -82,7 +83,7 @@ module Shipit
|
|
82
83
|
test ".emit calls #deliver on internal hooks" do
|
83
84
|
original_receivers = Shipit.internal_hook_receivers
|
84
85
|
FakeReceiver = Module.new
|
85
|
-
FakeReceiver.expects(:deliver).with(:deploy, @stack, 'foo' => 42)
|
86
|
+
FakeReceiver.expects(:deliver).with(:deploy, @stack, { 'foo' => 42 })
|
86
87
|
|
87
88
|
Shipit.internal_hook_receivers << FakeReceiver
|
88
89
|
Hook.emit(:deploy, @stack, 'foo' => 42)
|
@@ -93,7 +94,9 @@ module Shipit
|
|
93
94
|
test ".emit calls no internal hooks if there are no internal_hook_receivers" do
|
94
95
|
original_receivers = Shipit.internal_hook_receivers
|
95
96
|
Shipit.internal_hook_receivers = nil
|
96
|
-
|
97
|
+
assert_nothing_raised do
|
98
|
+
Hook.emit(:deploy, @stack, 'foo' => 42)
|
99
|
+
end
|
97
100
|
ensure
|
98
101
|
Shipit.internal_hook_receivers = original_receivers
|
99
102
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'test_helper'
|
3
4
|
|
4
5
|
module Shipit
|
@@ -82,38 +83,38 @@ module Shipit
|
|
82
83
|
merged_at: nil,
|
83
84
|
head: stub(
|
84
85
|
ref: 'super-branch',
|
85
|
-
sha: head_sha
|
86
|
+
sha: head_sha
|
86
87
|
),
|
87
88
|
base: stub(
|
88
|
-
ref:
|
89
|
-
sha: base_sha
|
90
|
-
)
|
91
|
-
)
|
89
|
+
ref: 'default-branch',
|
90
|
+
sha: base_sha
|
91
|
+
)
|
92
|
+
)
|
92
93
|
)
|
93
94
|
|
94
95
|
author = stub(
|
95
96
|
id: 1234,
|
96
97
|
login: 'bob',
|
97
98
|
name: 'Bob the Builder',
|
98
|
-
email: 'bob@bob.com'
|
99
|
+
email: 'bob@bob.com'
|
99
100
|
)
|
100
101
|
|
101
102
|
[head_sha, base_sha].each do |sha|
|
102
103
|
Shipit.github.api.expects(:commit).with(@stack.github_repo_name, sha).returns(
|
103
104
|
stub(
|
104
|
-
sha
|
105
|
-
author
|
105
|
+
sha:,
|
106
|
+
author:,
|
106
107
|
committer: author,
|
107
108
|
commit: stub(
|
108
109
|
message: 'Great feature',
|
109
110
|
author: stub(date: 1.day.ago),
|
110
|
-
committer: stub(date: 1.day.ago)
|
111
|
+
committer: stub(date: 1.day.ago)
|
111
112
|
),
|
112
113
|
stats: stub(
|
113
114
|
additions: 24,
|
114
|
-
deletions: 5
|
115
|
-
)
|
116
|
-
)
|
115
|
+
deletions: 5
|
116
|
+
)
|
117
|
+
)
|
117
118
|
)
|
118
119
|
end
|
119
120
|
|
@@ -122,24 +123,26 @@ module Shipit
|
|
122
123
|
description: nil,
|
123
124
|
context: 'default',
|
124
125
|
target_url: 'http://example.com',
|
125
|
-
created_at: 1.day.ago
|
126
|
+
created_at: 1.day.ago
|
126
127
|
)])
|
127
128
|
|
128
|
-
|
129
|
+
response = stub(rels: {}, data: stub(
|
129
130
|
check_runs: [stub(
|
130
|
-
id:
|
131
|
+
id: 123_456,
|
131
132
|
name: 'check run',
|
132
133
|
conclusion: 'success',
|
133
134
|
output: stub(
|
134
|
-
title: 'a test checkrun'
|
135
|
+
title: 'a test checkrun'
|
135
136
|
),
|
136
137
|
details_url: 'http://example.com',
|
137
138
|
html_url: 'http://example.com',
|
138
139
|
completed_at: Time.now,
|
139
|
-
started_at: 1.minute.ago
|
140
|
+
started_at: 1.minute.ago
|
140
141
|
)]
|
141
142
|
))
|
142
143
|
|
144
|
+
Shipit.github.api.expects(:last_response).returns(response)
|
145
|
+
Shipit.github.api.expects(:check_runs).with(@stack.github_repo_name, head_sha, per_page: 100).returns(response.data)
|
143
146
|
merge_request.refresh!
|
144
147
|
|
145
148
|
assert_predicate merge_request, :mergeable?
|
@@ -243,7 +246,10 @@ module Shipit
|
|
243
246
|
end
|
244
247
|
|
245
248
|
test "status transitions emit hooks" do
|
246
|
-
|
249
|
+
expected_args = lambda do |job_args|
|
250
|
+
job_args.first[:event] == 'merge'
|
251
|
+
end
|
252
|
+
job = assert_enqueued_with(job: EmitEventJob, args: expected_args) do
|
247
253
|
@pr.reject!('merge_conflict')
|
248
254
|
end
|
249
255
|
params = job.arguments.first
|
@@ -284,8 +290,8 @@ module Shipit
|
|
284
290
|
@pr.base_ref = 'default-branch'
|
285
291
|
Shipit.github.api.expects(:compare).with(@stack.github_repo_name, @pr.base_ref, @pr.head.sha).returns(
|
286
292
|
stub(
|
287
|
-
behind_by: 10
|
288
|
-
)
|
293
|
+
behind_by: 10
|
294
|
+
)
|
289
295
|
)
|
290
296
|
spec = { 'merge' => { 'max_divergence' => { 'commits' => 1 } } }
|
291
297
|
@pr.stack.cached_deploy_spec = DeploySpec.new(spec)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'test_helper'
|
3
4
|
|
4
5
|
module Shipit
|
@@ -10,7 +11,7 @@ module Shipit
|
|
10
11
|
'pending',
|
11
12
|
context: 'shipit/canaries',
|
12
13
|
target_url: 'https://example.com/deploys/42',
|
13
|
-
description: 'Deploy started'
|
14
|
+
description: 'Deploy started'
|
14
15
|
).returns(resource(id: 42))
|
15
16
|
|
16
17
|
@status = shipit_release_statuses(:to_be_created)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'test_helper'
|
3
4
|
|
4
5
|
module Shipit
|
@@ -36,13 +37,13 @@ module Shipit
|
|
36
37
|
author: reverted_commit.author,
|
37
38
|
committer: reverted_commit.committer,
|
38
39
|
authored_at: Time.zone.now,
|
39
|
-
committed_at: Time.zone.now
|
40
|
+
committed_at: Time.zone.now
|
40
41
|
)
|
41
42
|
|
42
43
|
expected = [
|
43
44
|
['Revert "Merge pull request #7 from shipit-engine/yoloshipit"', false, nil],
|
44
45
|
["whoami", false, nil],
|
45
|
-
['fix all the things', false, nil]
|
46
|
+
['fix all the things', false, nil]
|
46
47
|
]
|
47
48
|
assert_equal(expected, @stack.undeployed_commits.map { |c| [c.title, c.locked?, c.lock_author_id] })
|
48
49
|
|
@@ -55,7 +56,7 @@ module Shipit
|
|
55
56
|
['Revert "Merge pull request #7 from shipit-engine/yoloshipit"', false, nil],
|
56
57
|
["whoami", true, user_id],
|
57
58
|
['fix all the things', true, user_id],
|
58
|
-
['yoloshipit!', true, user_id]
|
59
|
+
['yoloshipit!', true, user_id]
|
59
60
|
]
|
60
61
|
|
61
62
|
assert_equal(expected, @stack.undeployed_commits.map { |c| [c.title, c.locked?, c.lock_author_id] })
|