shipit-engine 0.28.0 → 0.32.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 +41 -2
- data/Rakefile +4 -2
- data/app/assets/images/archive-solid.svg +1 -0
- data/app/assets/stylesheets/_pages/_stacks.scss +76 -3
- data/app/assets/stylesheets/_structure/_main.scss +2 -1
- data/app/assets/stylesheets/merge_status.scss +0 -3
- data/app/controllers/concerns/shipit/active_model_serializers_patch.rb +13 -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 +5 -4
- data/app/controllers/concerns/shipit/authentication.rb +3 -2
- data/app/controllers/concerns/shipit/pagination.rb +2 -1
- data/app/controllers/shipit/api/base_controller.rb +11 -6
- data/app/controllers/shipit/api/ccmenu_controller.rb +2 -1
- data/app/controllers/shipit/api/commits_controller.rb +2 -1
- data/app/controllers/shipit/api/deploys_controller.rb +4 -3
- data/app/controllers/shipit/api/hooks_controller.rb +6 -5
- data/app/controllers/shipit/api/locks_controller.rb +5 -4
- data/app/controllers/shipit/api/outputs_controller.rb +2 -1
- data/app/controllers/shipit/api/pull_requests_controller.rb +7 -6
- data/app/controllers/shipit/api/release_statuses_controller.rb +3 -2
- data/app/controllers/shipit/api/rollbacks_controller.rb +33 -0
- data/app/controllers/shipit/api/stacks_controller.rb +37 -5
- data/app/controllers/shipit/api/tasks_controller.rb +6 -5
- data/app/controllers/shipit/api_clients_controller.rb +50 -0
- data/app/controllers/shipit/ccmenu_url_controller.rb +4 -3
- data/app/controllers/shipit/commit_checks_controller.rb +2 -1
- data/app/controllers/shipit/commits_controller.rb +2 -1
- data/app/controllers/shipit/deploys_controller.rb +3 -2
- data/app/controllers/shipit/github_authentication_controller.rb +4 -3
- data/app/controllers/shipit/merge_status_controller.rb +19 -14
- data/app/controllers/shipit/pull_requests_controller.rb +3 -2
- data/app/controllers/shipit/release_statuses_controller.rb +3 -2
- data/app/controllers/shipit/rollbacks_controller.rb +3 -2
- data/app/controllers/shipit/shipit_controller.rb +2 -1
- data/app/controllers/shipit/stacks_controller.rb +78 -14
- data/app/controllers/shipit/status_controller.rb +2 -1
- data/app/controllers/shipit/tasks_controller.rb +6 -5
- data/app/controllers/shipit/webhooks_controller.rb +5 -132
- data/app/helpers/shipit/chunks_helper.rb +1 -0
- data/app/helpers/shipit/deploys_helper.rb +4 -3
- data/app/helpers/shipit/github_url_helper.rb +1 -0
- data/app/helpers/shipit/merge_status_helper.rb +1 -0
- data/app/helpers/shipit/shipit_helper.rb +1 -0
- data/app/helpers/shipit/stacks_helper.rb +5 -0
- data/app/helpers/shipit/tasks_helper.rb +1 -0
- data/app/jobs/shipit/background_job.rb +4 -0
- data/app/jobs/shipit/background_job/unique.rb +4 -1
- data/app/jobs/shipit/cache_deploy_spec_job.rb +1 -0
- data/app/jobs/shipit/chunk_rollup_job.rb +4 -0
- data/app/jobs/shipit/clear_git_cache_job.rb +1 -0
- data/app/jobs/shipit/continuous_delivery_job.rb +3 -1
- data/app/jobs/shipit/create_on_github_job.rb +6 -1
- data/app/jobs/shipit/create_release_statuses_job.rb +1 -0
- data/app/jobs/shipit/deferred_touch_job.rb +4 -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_stack_job.rb +3 -2
- data/app/jobs/shipit/emit_event_job.rb +2 -1
- data/app/jobs/shipit/fetch_commit_stats_job.rb +1 -0
- data/app/jobs/shipit/fetch_deployed_revision_job.rb +2 -1
- data/app/jobs/shipit/github_sync_job.rb +3 -2
- data/app/jobs/shipit/{mark_deploy_healty_job.rb → mark_deploy_healthy_job.rb} +1 -0
- data/app/jobs/shipit/merge_pull_requests_job.rb +1 -0
- data/app/jobs/shipit/perform_commit_checks_job.rb +1 -0
- data/app/jobs/shipit/perform_task_job.rb +14 -5
- data/app/jobs/shipit/purge_old_deliveries_job.rb +1 -0
- data/app/jobs/shipit/reap_dead_tasks_job.rb +21 -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_pull_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 -3
- data/app/models/concerns/shipit/deferred_touch.rb +4 -3
- data/app/models/shipit/anonymous_user.rb +5 -0
- data/app/models/shipit/api_client.rb +3 -2
- data/app/models/shipit/application_record.rb +2 -1
- data/app/models/shipit/check_run.rb +4 -3
- data/app/models/shipit/command_line_user.rb +1 -0
- data/app/models/shipit/commit.rb +31 -12
- data/app/models/shipit/commit_checks.rb +1 -0
- data/app/models/shipit/commit_deployment.rb +17 -12
- data/app/models/shipit/commit_deployment_status.rb +8 -3
- data/app/models/shipit/commit_message.rb +1 -0
- data/app/models/shipit/delivery.rb +4 -3
- data/app/models/shipit/deploy.rb +40 -10
- data/app/models/shipit/deploy_spec.rb +22 -3
- data/app/models/shipit/deploy_spec/bundler_discovery.rb +2 -1
- data/app/models/shipit/deploy_spec/capistrano_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec/file_system.rb +10 -3
- data/app/models/shipit/deploy_spec/kubernetes_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec/lerna_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec/npm_discovery.rb +5 -4
- data/app/models/shipit/deploy_spec/pypi_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec/rubygems_discovery.rb +1 -0
- data/app/models/shipit/deploy_stats.rb +58 -0
- data/app/models/shipit/duration.rb +3 -2
- data/app/models/shipit/ephemeral_commit_checks.rb +1 -0
- data/app/models/shipit/github_hook.rb +2 -1
- data/app/models/shipit/github_status.rb +3 -2
- data/app/models/shipit/hook.rb +6 -5
- data/app/models/shipit/membership.rb +3 -2
- data/app/models/shipit/output_chunk.rb +7 -2
- data/app/models/shipit/pull_request.rb +13 -7
- data/app/models/shipit/record.rb +18 -0
- data/app/models/shipit/release_status.rb +3 -2
- data/app/models/shipit/repository.rb +43 -0
- data/app/models/shipit/rollback.rb +1 -0
- data/app/models/shipit/stack.rb +109 -50
- data/app/models/shipit/status.rb +3 -2
- data/app/models/shipit/status/common.rb +7 -6
- data/app/models/shipit/status/group.rb +1 -0
- data/app/models/shipit/status/missing.rb +2 -1
- data/app/models/shipit/status/unknown.rb +2 -1
- data/app/models/shipit/task.rb +64 -9
- data/app/models/shipit/task_definition.rb +1 -0
- data/app/models/shipit/team.rb +2 -1
- data/app/models/shipit/undeployed_commit.rb +1 -0
- data/app/models/shipit/unlimited_api_client.rb +1 -0
- data/app/models/shipit/user.rb +29 -5
- data/app/models/shipit/variable_definition.rb +1 -0
- data/app/models/shipit/webhooks.rb +33 -0
- data/app/models/shipit/webhooks/handlers/check_suite_handler.rb +20 -0
- data/app/models/shipit/webhooks/handlers/handler.rb +41 -0
- data/app/models/shipit/webhooks/handlers/membership_handler.rb +46 -0
- data/app/models/shipit/webhooks/handlers/push_handler.rb +21 -0
- data/app/models/shipit/webhooks/handlers/status_handler.rb +27 -0
- 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 +1 -0
- data/app/serializers/shipit/deploy_serializer.rb +2 -1
- data/app/serializers/shipit/hook_serializer.rb +1 -0
- data/app/serializers/shipit/pull_request_serializer.rb +1 -0
- 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 +7 -1
- data/app/serializers/shipit/tail_task_serializer.rb +1 -0
- data/app/serializers/shipit/task_serializer.rb +2 -17
- data/app/serializers/shipit/user_serializer.rb +6 -1
- data/app/validators/ascii_only_validator.rb +4 -3
- data/app/validators/subset_validator.rb +1 -0
- data/app/views/layouts/_head.html.erb +0 -0
- data/app/views/layouts/shipit.html.erb +6 -4
- data/app/views/shipit/_variables.html.erb +1 -1
- data/app/views/shipit/api_clients/index.html.erb +36 -0
- data/app/views/shipit/api_clients/new.html.erb +33 -0
- data/app/views/shipit/api_clients/show.html.erb +35 -0
- data/app/views/shipit/ccmenu/project.xml.builder +2 -1
- data/app/views/shipit/deploys/new.html.erb +17 -12
- data/app/views/shipit/deploys/show.html.erb +2 -2
- data/app/views/shipit/merge_status/logged_out.erb +1 -1
- data/app/views/shipit/stacks/_header.html.erb +27 -12
- data/app/views/shipit/stacks/_links.html.erb +1 -0
- data/app/views/shipit/stacks/all_tasks.html.erb +28 -0
- data/app/views/shipit/stacks/index.html.erb +7 -2
- data/app/views/shipit/stacks/settings.html.erb +19 -0
- data/app/views/shipit/stacks/statistics.html.erb +82 -0
- data/app/views/shipit/tasks/show.html.erb +1 -1
- data/config/initializers/inflections.rb +2 -1
- data/config/locales/en.yml +18 -5
- data/config/routes.rb +14 -2
- data/db/migrate/20191209231045_create_shipit_repositories.rb +12 -0
- data/db/migrate/20191209231307_add_repository_reference_to_stacks.rb +15 -0
- data/db/migrate/20191216162728_backfill_repository_data.rb +22 -0
- data/db/migrate/20191216163010_remove_repository_information_from_stacks.rb +20 -0
- data/db/migrate/20191219205202_add_archived_since_to_stacks.rb +6 -0
- data/db/migrate/20200102175621_optional_task_commits.rb +6 -0
- data/db/migrate/20200109132519_add_sha_to_commit_deployments.rb +5 -0
- data/db/migrate/20200226211925_add_index_to_tasks_status.rb +5 -0
- data/db/migrate/20200427135152_add_pull_request_head_sha_to_commit.rb +5 -0
- data/db/migrate/20200615181558_add_rollback_once_aborted_to.rb +5 -0
- data/lib/shipit.rb +18 -20
- data/lib/shipit/cast_value.rb +1 -0
- data/lib/shipit/command.rb +14 -18
- data/lib/shipit/commands.rb +5 -4
- data/lib/shipit/csv_serializer.rb +1 -0
- data/lib/shipit/deploy_commands.rb +1 -0
- data/lib/shipit/engine.rb +11 -2
- data/lib/shipit/environment_variables.rb +11 -1
- data/lib/shipit/first_parent_commits_iterator.rb +1 -0
- data/lib/shipit/flock.rb +1 -0
- data/lib/shipit/github_app.rb +60 -6
- data/lib/shipit/github_http_cache_middleware.rb +57 -0
- data/lib/shipit/null_serializer.rb +1 -0
- data/lib/shipit/octokit_check_runs.rb +3 -2
- data/lib/shipit/octokit_iterator.rb +3 -2
- data/lib/shipit/paginator.rb +3 -2
- data/lib/shipit/rollback_commands.rb +1 -0
- data/lib/shipit/same_site_cookie_middleware.rb +29 -0
- data/lib/shipit/simple_message_verifier.rb +1 -0
- data/lib/shipit/stack_commands.rb +6 -3
- data/lib/shipit/stat.rb +1 -0
- data/lib/shipit/task_commands.rb +22 -14
- data/lib/shipit/version.rb +2 -1
- data/lib/snippets/release-gem +5 -1
- data/lib/tasks/cron.rake +2 -0
- data/lib/tasks/dev.rake +3 -2
- data/lib/tasks/shipit.rake +16 -17
- data/lib/tasks/teams.rake +1 -0
- data/test/controllers/api/base_controller_test.rb +3 -2
- data/test/controllers/api/ccmenu_controller_test.rb +9 -8
- data/test/controllers/api/commits_controller_test.rb +3 -2
- data/test/controllers/api/deploys_controller_test.rb +15 -14
- data/test/controllers/api/hooks_controller_test.rb +8 -7
- data/test/controllers/api/locks_controller_test.rb +7 -6
- data/test/controllers/api/outputs_controller_test.rb +3 -2
- data/test/controllers/api/pull_requests_controller_test.rb +8 -7
- data/test/controllers/api/release_statuses_controller_test.rb +2 -1
- data/test/controllers/api/rollback_controller_test.rb +113 -0
- data/test/controllers/api/stacks_controller_test.rb +44 -15
- data/test/controllers/api/tasks_controller_test.rb +13 -12
- data/test/controllers/api_clients_controller_test.rb +104 -0
- data/test/controllers/ccmenu_controller_test.rb +4 -3
- data/test/controllers/commit_checks_controller_test.rb +4 -3
- data/test/controllers/commits_controller_test.rb +3 -2
- data/test/controllers/deploys_controller_test.rb +33 -22
- data/test/controllers/github_authentication_controller_test.rb +1 -0
- data/test/controllers/merge_status_controller_test.rb +27 -9
- data/test/controllers/pull_requests_controller_test.rb +4 -3
- data/test/controllers/release_statuses_controller_test.rb +3 -2
- data/test/controllers/rollbacks_controller_test.rb +9 -8
- data/test/controllers/stacks_controller_test.rb +64 -15
- data/test/controllers/status_controller_test.rb +1 -0
- data/test/controllers/tasks_controller_test.rb +20 -19
- data/test/controllers/webhooks_controller_test.rb +36 -9
- data/test/dummy/config/application.rb +1 -1
- data/test/dummy/config/environments/development.rb +24 -4
- data/test/dummy/config/environments/test.rb +2 -0
- data/test/dummy/db/schema.rb +25 -11
- data/test/dummy/db/seeds.rb +34 -17
- data/test/fixtures/shipit/commit_deployment_statuses.yml +4 -4
- data/test/fixtures/shipit/commit_deployments.yml +8 -8
- data/test/fixtures/shipit/commits.yml +38 -0
- data/test/fixtures/shipit/repositories.yml +27 -0
- data/test/fixtures/shipit/stacks.yml +190 -30
- data/test/fixtures/shipit/tasks.yml +66 -3
- data/test/fixtures/timeout +2 -1
- data/test/helpers/api_helper.rb +1 -0
- data/test/helpers/fixture_aliases_helper.rb +1 -0
- data/test/helpers/hooks_helper.rb +2 -1
- data/test/helpers/json_helper.rb +15 -11
- data/test/helpers/links_helper.rb +4 -3
- data/test/helpers/payloads_helper.rb +1 -0
- data/test/helpers/queries_helper.rb +3 -2
- data/test/jobs/cache_deploy_spec_job_test.rb +2 -1
- data/test/jobs/chunk_rollup_job_test.rb +1 -0
- data/test/jobs/deliver_hook_job_test.rb +2 -1
- data/test/jobs/destroy_stack_job_test.rb +10 -0
- data/test/jobs/emit_event_job_test.rb +2 -1
- 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 +1 -0
- data/test/jobs/mark_deploy_healthy_job_test.rb +1 -0
- data/test/jobs/merge_pull_requests_job_test.rb +5 -4
- data/test/jobs/perform_task_job_test.rb +4 -3
- data/test/jobs/purge_old_deliveries_job_test.rb +1 -0
- data/test/jobs/reap_dead_tasks_job_test.rb +68 -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/unique_job_test.rb +1 -0
- data/test/jobs/update_github_last_deployed_ref_job_test.rb +13 -11
- data/test/middleware/same_site_cookie_middleware_test.rb +52 -0
- data/test/models/api_client_test.rb +1 -0
- data/test/models/commit_checks_test.rb +1 -0
- data/test/models/commit_deployment_status_test.rb +34 -4
- data/test/models/commit_deployment_test.rb +9 -11
- data/test/models/commits_test.rb +99 -7
- data/test/models/delivery_test.rb +3 -2
- data/test/models/deploy_spec_test.rb +47 -42
- data/test/models/deploy_stats_test.rb +113 -0
- data/test/models/deploys_test.rb +60 -13
- data/test/models/duration_test.rb +1 -0
- data/test/models/github_hook_test.rb +1 -0
- data/test/models/hook_test.rb +20 -16
- data/test/models/membership_test.rb +1 -0
- data/test/models/output_chunk_test.rb +1 -0
- data/test/models/pull_request_test.rb +18 -11
- data/test/models/release_statuses_test.rb +1 -0
- data/test/models/rollbacks_test.rb +1 -0
- data/test/models/shipit/check_run_test.rb +1 -0
- data/test/models/shipit/repository_test.rb +77 -0
- data/test/models/shipit/wehbooks/handlers_test.rb +27 -0
- data/test/models/stacks_test.rb +110 -56
- data/test/models/status/group_test.rb +1 -0
- data/test/models/status/missing_test.rb +1 -0
- data/test/models/status_test.rb +1 -0
- data/test/models/task_definitions_test.rb +9 -8
- data/test/models/tasks_test.rb +18 -1
- data/test/models/team_test.rb +4 -2
- data/test/models/undeployed_commits_test.rb +14 -0
- data/test/models/users_test.rb +109 -1
- data/test/test_command_integration.rb +3 -2
- data/test/test_helper.rb +38 -34
- data/test/unit/anonymous_user_serializer_test.rb +14 -0
- data/test/unit/command_test.rb +12 -7
- data/test/unit/commands_test.rb +1 -0
- data/test/unit/commit_serializer_test.rb +16 -0
- data/test/unit/csv_serializer_test.rb +3 -2
- data/test/unit/deploy_commands_test.rb +14 -4
- data/test/unit/deploy_serializer_test.rb +17 -0
- data/test/unit/environment_variables_test.rb +5 -4
- data/test/unit/github_app_test.rb +165 -0
- data/test/unit/github_url_helper_test.rb +1 -0
- data/test/unit/rollback_commands_test.rb +2 -1
- data/test/unit/shipit_helper_test.rb +17 -0
- data/test/unit/shipit_test.rb +1 -0
- data/test/unit/user_serializer_test.rb +14 -0
- data/test/unit/variable_definition_test.rb +1 -0
- metadata +215 -157
- data/lib/shipit/strip_cache_control.rb +0 -40
@@ -9,9 +9,24 @@ Rails.application.configure do
|
|
9
9
|
# Do not eager load code on boot.
|
10
10
|
config.eager_load = false
|
11
11
|
|
12
|
-
# Show full error reports
|
13
|
-
config.consider_all_requests_local
|
14
|
-
|
12
|
+
# Show full error reports
|
13
|
+
config.consider_all_requests_local = true
|
14
|
+
|
15
|
+
# Enable/disable caching. By default caching is disabled.
|
16
|
+
# Run rails dev:cache to toggle caching.
|
17
|
+
if Shipit::Engine.root.join("tmp", "caching-dev.txt").exist?
|
18
|
+
config.action_controller.perform_caching = true
|
19
|
+
config.action_controller.enable_fragment_cache_logging = true
|
20
|
+
|
21
|
+
config.cache_store = :memory_store
|
22
|
+
config.public_file_server.headers = {
|
23
|
+
"Cache-Control" => "public, max-age=#{2.days.to_i}",
|
24
|
+
}
|
25
|
+
else
|
26
|
+
config.action_controller.perform_caching = false
|
27
|
+
|
28
|
+
config.cache_store = :null_store
|
29
|
+
end
|
15
30
|
|
16
31
|
# Don't care if the mailer can't send.
|
17
32
|
config.action_mailer.raise_delivery_errors = false
|
@@ -39,11 +54,16 @@ Rails.application.configure do
|
|
39
54
|
# Raises error for missing translations
|
40
55
|
# config.action_view.raise_on_missing_translations = true
|
41
56
|
if Rails.application.config_for(:database)['adapter'] == 'sqlite3'
|
42
|
-
|
57
|
+
config.to_prepare do
|
58
|
+
Shipit::DeferredTouch.enabled = false
|
59
|
+
end
|
43
60
|
end
|
61
|
+
|
44
62
|
config.active_job.queue_adapter = :async
|
45
63
|
|
46
64
|
Pubsubstub.use_persistent_connections = false
|
47
65
|
|
48
66
|
Shipit.disable_api_authentication = true if ENV['PUBLIC_API']
|
67
|
+
|
68
|
+
config.hosts << "shipit-engine.myshopify.io"
|
49
69
|
end
|
@@ -42,5 +42,7 @@ Rails.application.configure do
|
|
42
42
|
|
43
43
|
config.to_prepare do
|
44
44
|
Shipit::DeferredTouch.enabled = false
|
45
|
+
# The deploy specs in fixtures are pretty printed, we should do the same to avoid marking stacks as dirty
|
46
|
+
Shipit::DeploySpec.pretty_generate = true
|
45
47
|
end
|
46
48
|
end
|
data/test/dummy/db/schema.rb
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
# of editing this file, please use the migrations feature of Active Record to
|
3
3
|
# incrementally modify your database, and then regenerate this schema definition.
|
4
4
|
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
# from scratch.
|
9
|
-
#
|
5
|
+
# This file is the source Rails uses to define your schema when running `rails
|
6
|
+
# db:schema:load`. When creating a new database, `rails db:schema:load` tends to
|
7
|
+
# be faster and is potentially less error prone than running all of your
|
8
|
+
# migrations from scratch. Old migrations may fail to apply correctly if those
|
9
|
+
# migrations use external dependencies or application code.
|
10
10
|
#
|
11
11
|
# It's strongly recommended that you check this file into your version control system.
|
12
12
|
|
13
|
-
ActiveRecord::Schema.define(version:
|
13
|
+
ActiveRecord::Schema.define(version: 2020_06_15_181558) do
|
14
14
|
|
15
15
|
create_table "api_clients", force: :cascade do |t|
|
16
16
|
t.text "permissions", limit: 65535
|
@@ -55,6 +55,7 @@ ActiveRecord::Schema.define(version: 2019_05_02_020249) do
|
|
55
55
|
t.string "api_url"
|
56
56
|
t.datetime "created_at", null: false
|
57
57
|
t.datetime "updated_at", null: false
|
58
|
+
t.string "sha", limit: 40
|
58
59
|
t.index ["commit_id", "task_id"], name: "index_commit_deployments_on_commit_id_and_task_id", unique: true
|
59
60
|
t.index ["task_id"], name: "index_commit_deployments_on_task_id"
|
60
61
|
end
|
@@ -77,6 +78,7 @@ ActiveRecord::Schema.define(version: 2019_05_02_020249) do
|
|
77
78
|
t.integer "pull_request_id"
|
78
79
|
t.boolean "locked", default: false, null: false
|
79
80
|
t.integer "lock_author_id", limit: 4
|
81
|
+
t.string "pull_request_head_sha", limit: 40
|
80
82
|
t.index ["author_id"], name: "index_commits_on_author_id"
|
81
83
|
t.index ["committer_id"], name: "index_commits_on_committer_id"
|
82
84
|
t.index ["created_at"], name: "index_commits_on_created_at"
|
@@ -190,9 +192,15 @@ ActiveRecord::Schema.define(version: 2019_05_02_020249) do
|
|
190
192
|
t.index ["user_id"], name: "index_deploy_statuses_on_user_id"
|
191
193
|
end
|
192
194
|
|
195
|
+
create_table "repositories", force: :cascade do |t|
|
196
|
+
t.string "owner", limit: 39, null: false
|
197
|
+
t.string "name", limit: 100, null: false
|
198
|
+
t.datetime "created_at", precision: 6, null: false
|
199
|
+
t.datetime "updated_at", precision: 6, null: false
|
200
|
+
t.index ["owner", "name"], name: "repository_unicity", unique: true
|
201
|
+
end
|
202
|
+
|
193
203
|
create_table "stacks", force: :cascade do |t|
|
194
|
-
t.string "repo_name", limit: 100, null: false
|
195
|
-
t.string "repo_owner", limit: 39, null: false
|
196
204
|
t.string "environment", limit: 50, default: "production", null: false
|
197
205
|
t.datetime "created_at"
|
198
206
|
t.datetime "updated_at"
|
@@ -211,7 +219,11 @@ ActiveRecord::Schema.define(version: 2019_05_02_020249) do
|
|
211
219
|
t.datetime "locked_since"
|
212
220
|
t.boolean "merge_queue_enabled", default: false, null: false
|
213
221
|
t.datetime "last_deployed_at"
|
214
|
-
t.
|
222
|
+
t.integer "repository_id", null: false
|
223
|
+
t.datetime "archived_since"
|
224
|
+
t.index ["archived_since"], name: "index_stacks_on_archived_since"
|
225
|
+
t.index ["repository_id", "environment"], name: "stack_unicity", unique: true
|
226
|
+
t.index ["repository_id"], name: "index_stacks_on_repository_id"
|
215
227
|
end
|
216
228
|
|
217
229
|
create_table "statuses", force: :cascade do |t|
|
@@ -228,8 +240,8 @@ ActiveRecord::Schema.define(version: 2019_05_02_020249) do
|
|
228
240
|
|
229
241
|
create_table "tasks", force: :cascade do |t|
|
230
242
|
t.integer "stack_id", limit: 4, null: false
|
231
|
-
t.integer "since_commit_id", limit: 4
|
232
|
-
t.integer "until_commit_id", limit: 4
|
243
|
+
t.integer "since_commit_id", limit: 4
|
244
|
+
t.integer "until_commit_id", limit: 4
|
233
245
|
t.string "status", limit: 10, default: "pending", null: false
|
234
246
|
t.datetime "created_at"
|
235
247
|
t.datetime "updated_at"
|
@@ -249,11 +261,13 @@ ActiveRecord::Schema.define(version: 2019_05_02_020249) do
|
|
249
261
|
t.datetime "ended_at"
|
250
262
|
t.boolean "ignored_safeties", default: false, null: false
|
251
263
|
t.integer "aborted_by_id"
|
264
|
+
t.integer "rollback_once_aborted_to_id"
|
252
265
|
t.index ["rolled_up", "created_at", "status"], name: "index_tasks_on_rolled_up_and_created_at_and_status"
|
253
266
|
t.index ["since_commit_id"], name: "index_tasks_on_since_commit_id"
|
254
267
|
t.index ["stack_id", "allow_concurrency", "status"], name: "index_active_tasks"
|
255
268
|
t.index ["stack_id", "allow_concurrency"], name: "index_tasks_on_stack_id_and_allow_concurrency"
|
256
269
|
t.index ["stack_id", "status", "type"], name: "index_tasks_by_stack_and_status"
|
270
|
+
t.index ["status"], name: "index_tasks_on_status"
|
257
271
|
t.index ["type", "stack_id", "parent_id"], name: "index_tasks_by_stack_and_parent"
|
258
272
|
t.index ["until_commit_id"], name: "index_tasks_on_until_commit_id"
|
259
273
|
t.index ["user_id"], name: "index_tasks_on_user_id"
|
data/test/dummy/db/seeds.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
require 'faker'
|
2
|
-
require '
|
2
|
+
require 'webmock'
|
3
|
+
include WebMock::API
|
4
|
+
WebMock.enable!
|
5
|
+
WebMock.allow_net_connect!
|
3
6
|
|
4
7
|
# Sometimes on Travis the background job runs immediately so provide a response to fake hooks
|
5
|
-
|
8
|
+
stub_request(:post, %r{https://example\.com/}).to_return(status: %w(200 OK))
|
6
9
|
|
7
10
|
# Cheap hack to allow rake db:seed to work
|
8
11
|
module Shipit
|
@@ -11,6 +14,8 @@ module Shipit
|
|
11
14
|
Commit.send(:define_method, :refresh_statuses!) {}
|
12
15
|
Commit.send(:define_method, :refresh_check_runs!) {}
|
13
16
|
ReleaseStatus.send(:define_method, :create_status_on_github!) {}
|
17
|
+
CommitDeployment.send(:define_method, :schedule_create_on_github) {}
|
18
|
+
CommitDeploymentStatus.send(:define_method, :schedule_create_on_github) {}
|
14
19
|
|
15
20
|
users = 3.times.map do
|
16
21
|
User.create!(
|
@@ -22,8 +27,10 @@ module Shipit
|
|
22
27
|
|
23
28
|
stacks = 3.times.map do
|
24
29
|
Stack.create!(
|
25
|
-
|
26
|
-
|
30
|
+
repository: Repository.find_or_create_by(
|
31
|
+
name: Faker::Internet.domain_name.parameterize,
|
32
|
+
owner: Faker::Company.name.parameterize
|
33
|
+
),
|
27
34
|
deploy_url: "https://#{Faker::Internet.domain_name.parameterize}.#{Faker::Internet.domain_suffix}/",
|
28
35
|
cached_deploy_spec: DeploySpec.load(%(
|
29
36
|
{
|
@@ -109,8 +116,8 @@ module Shipit
|
|
109
116
|
message: Faker::Company.catch_phrase,
|
110
117
|
authored_at: Time.now,
|
111
118
|
committed_at: Time.now,
|
112
|
-
additions: Faker::Number.number(3),
|
113
|
-
deletions: Faker::Number.number(3),
|
119
|
+
additions: Faker::Number.number(digits: 3),
|
120
|
+
deletions: Faker::Number.number(digits: 3),
|
114
121
|
)
|
115
122
|
|
116
123
|
if (i % 4) != 0
|
@@ -141,19 +148,19 @@ module Shipit
|
|
141
148
|
end
|
142
149
|
|
143
150
|
stack.pull_requests.create!(
|
144
|
-
number: Faker::Number.number(3),
|
151
|
+
number: Faker::Number.number(digits: 3),
|
145
152
|
title: Faker::Company.catch_phrase,
|
146
153
|
merge_status: 'pending',
|
147
154
|
merge_requested_at: 5.minute.ago,
|
148
155
|
merge_requested_by: users.sample,
|
149
|
-
github_id: Faker::Number.number(8),
|
156
|
+
github_id: Faker::Number.number(digits: 8),
|
150
157
|
api_url: 'https://api.github.com/repos/shopify/shipit-engine/pulls/62',
|
151
158
|
state: 'open',
|
152
|
-
branch: "feature-#{Faker::Number.number(3)}",
|
159
|
+
branch: "feature-#{Faker::Number.number(digits: 3)}",
|
153
160
|
head_id: nil,
|
154
161
|
mergeable: true,
|
155
|
-
additions: Faker::Number.number(3),
|
156
|
-
deletions: Faker::Number.number(3),
|
162
|
+
additions: Faker::Number.number(digits: 3),
|
163
|
+
deletions: Faker::Number.number(digits: 3),
|
157
164
|
)
|
158
165
|
end
|
159
166
|
|
@@ -170,8 +177,8 @@ module Shipit
|
|
170
177
|
since_commit_id: commits.first.id,
|
171
178
|
until_commit_id: commits.last.id,
|
172
179
|
status: "success",
|
173
|
-
additions: Faker::Number.number(3),
|
174
|
-
deletions: Faker::Number.number(3),
|
180
|
+
additions: Faker::Number.number(digits: 3),
|
181
|
+
deletions: Faker::Number.number(digits: 3),
|
175
182
|
started_at: Random.rand(15.minutes.to_i).seconds.ago,
|
176
183
|
ended_at: Time.now.utc,
|
177
184
|
user: users.sample,
|
@@ -192,9 +199,19 @@ module Shipit
|
|
192
199
|
)
|
193
200
|
write_output(rollback)
|
194
201
|
|
195
|
-
|
196
|
-
|
197
|
-
|
202
|
+
provision_task = stack.tasks.create!(
|
203
|
+
status: "pending",
|
204
|
+
user: users.sample,
|
205
|
+
definition: TaskDefinition.new('provision',
|
206
|
+
'action' => 'Provision some resources',
|
207
|
+
'description' => 'Provisions servers for the application to be deployed to',
|
208
|
+
'steps' => ['./provision.sh'],
|
209
|
+
),
|
210
|
+
started_at: Random.rand(15.minutes.to_i).seconds.ago,
|
211
|
+
)
|
212
|
+
write_output(provision_task)
|
213
|
+
|
214
|
+
restart_task = stack.tasks.create!(
|
198
215
|
status: "success",
|
199
216
|
user: users.sample,
|
200
217
|
definition: TaskDefinition.new('restart',
|
@@ -205,6 +222,6 @@ module Shipit
|
|
205
222
|
started_at: Random.rand(15.minutes.to_i).seconds.ago,
|
206
223
|
ended_at: Time.now.utc,
|
207
224
|
)
|
208
|
-
write_output(
|
225
|
+
write_output(restart_task)
|
209
226
|
end
|
210
227
|
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
1
|
+
shipit_deploy_second_in_progress:
|
2
2
|
commit_deployment: shipit_deploy_second
|
3
|
-
status:
|
3
|
+
status: in_progress
|
4
4
|
github_id: 42
|
5
5
|
api_url: https://api.github.com/repos/shopify/shipit-engine/deployments/1/statuses/42
|
6
6
|
|
@@ -10,9 +10,9 @@ shipit_deploy_second_success:
|
|
10
10
|
github_id: 43
|
11
11
|
api_url: https://api.github.com/repos/shopify/shipit-engine/deployments/1/statuses/43
|
12
12
|
|
13
|
-
|
13
|
+
shipit2_deploy_third_in_progress:
|
14
14
|
commit_deployment: shipit2_deploy_third
|
15
|
-
status:
|
15
|
+
status: in_progress
|
16
16
|
|
17
17
|
shipit2_deploy_third_failure:
|
18
18
|
commit_deployment: shipit2_deploy_third
|
@@ -1,37 +1,37 @@
|
|
1
1
|
shipit_deploy_second:
|
2
|
-
|
2
|
+
sha: f890fd8b5f2be05d1fedb763a3605ee461c39074 # second
|
3
3
|
task_id: 1 # shipit
|
4
4
|
api_url: https://api.github.com/repos/shopify/shipit-engine/deployments/1
|
5
5
|
github_id: 1
|
6
6
|
|
7
7
|
shipit2_deploy_third:
|
8
|
-
|
8
|
+
sha: 367578b362bf2b4df5903e1c7960929361c39074 # third
|
9
9
|
task_id: 2 # shipit2
|
10
10
|
api_url: https://api.github.com/repos/shopify/shipit-engine/deployments/2
|
11
11
|
github_id: 2
|
12
12
|
|
13
13
|
shipit_pending_third:
|
14
|
-
|
14
|
+
sha: 367578b362bf2b4df5903e1c7960929361c39074 # third
|
15
15
|
task_id: 4 # shipit_pending
|
16
16
|
api_url: https://api.github.com/repos/shopify/shipit-engine/deployments/3
|
17
17
|
github_id: 3
|
18
18
|
|
19
19
|
shipit_pending_fourth:
|
20
|
-
|
20
|
+
sha: 467578b362bf2b4df5903e1c7960929361c3435a # fourth
|
21
21
|
task_id: 4 # shipit_pending
|
22
22
|
|
23
23
|
shipit_running_fourth:
|
24
|
-
|
24
|
+
sha: 467578b362bf2b4df5903e1c7960929361c3435a # fourth
|
25
25
|
task_id: 5 # shipit_running
|
26
26
|
|
27
27
|
shipit_complete_fourth:
|
28
|
-
|
28
|
+
sha: 467578b362bf2b4df5903e1c7960929361c3435a # fourth
|
29
29
|
task_id: 6 # shipit_complete
|
30
30
|
|
31
31
|
shipit_aborted_fourth:
|
32
|
-
|
32
|
+
sha: 467578b362bf2b4df5903e1c7960929361c3435a # fourth
|
33
33
|
task_id: 7 # shipit_aborted
|
34
34
|
|
35
35
|
shipit_rollback_fourth:
|
36
|
-
|
36
|
+
sha: 467578b362bf2b4df5903e1c7960929361c3435a # fourth
|
37
37
|
task_id: 8 # shipit_rollback
|
@@ -10,6 +10,7 @@ first:
|
|
10
10
|
additions: 42
|
11
11
|
deletions: 24
|
12
12
|
updated_at: <%= 8.days.ago.to_s(:db) %>
|
13
|
+
created_at: <%= 1.day.ago.to_s(:db) %>
|
13
14
|
|
14
15
|
second:
|
15
16
|
id: 2
|
@@ -23,6 +24,7 @@ second:
|
|
23
24
|
additions: 1
|
24
25
|
deletions: 1
|
25
26
|
updated_at: <%= 8.days.ago.to_s(:db) %>
|
27
|
+
created_at: <%= 1.day.ago.to_s(:db) %>
|
26
28
|
|
27
29
|
third:
|
28
30
|
id: 3
|
@@ -36,6 +38,7 @@ third:
|
|
36
38
|
additions: 12
|
37
39
|
deletions: 64
|
38
40
|
updated_at: <%= 8.days.ago.to_s(:db) %>
|
41
|
+
created_at: <%= 1.day.ago.to_s(:db) %>
|
39
42
|
|
40
43
|
fourth:
|
41
44
|
id: 4
|
@@ -49,6 +52,8 @@ fourth:
|
|
49
52
|
additions: 420
|
50
53
|
deletions: 342
|
51
54
|
updated_at: <%= 8.days.ago.to_s(:db) %>
|
55
|
+
created_at: <%= 1.day.ago.to_s(:db) %>
|
56
|
+
pull_request_head_sha: '6dcb09b5b57875f334f61aebed695e2e4193db5e'
|
52
57
|
|
53
58
|
fifth:
|
54
59
|
id: 5
|
@@ -62,6 +67,7 @@ fifth:
|
|
62
67
|
additions: 1
|
63
68
|
deletions: 24
|
64
69
|
updated_at: <%= 8.days.ago.to_s(:db) %>
|
70
|
+
created_at: <%= 1.day.ago.to_s(:db) %>
|
65
71
|
|
66
72
|
cyclimse_first:
|
67
73
|
id: 6
|
@@ -194,6 +200,7 @@ canaries_first:
|
|
194
200
|
additions: 42
|
195
201
|
deletions: 24
|
196
202
|
updated_at: <%= 8.days.ago.to_s(:db) %>
|
203
|
+
created_at: <%= 1.day.ago.to_s(:db) %>
|
197
204
|
|
198
205
|
canaries_second:
|
199
206
|
id: 302
|
@@ -207,6 +214,7 @@ canaries_second:
|
|
207
214
|
additions: 1
|
208
215
|
deletions: 1
|
209
216
|
updated_at: <%= 8.days.ago.to_s(:db) %>
|
217
|
+
created_at: <%= 1.day.ago.to_s(:db) %>
|
210
218
|
|
211
219
|
canaries_third:
|
212
220
|
id: 303
|
@@ -220,6 +228,7 @@ canaries_third:
|
|
220
228
|
additions: 12
|
221
229
|
deletions: 64
|
222
230
|
updated_at: <%= 8.days.ago.to_s(:db) %>
|
231
|
+
created_at: <%= 1.day.ago.to_s(:db) %>
|
223
232
|
|
224
233
|
canaries_fourth:
|
225
234
|
id: 304
|
@@ -233,6 +242,7 @@ canaries_fourth:
|
|
233
242
|
additions: 420
|
234
243
|
deletions: 342
|
235
244
|
updated_at: <%= 8.days.ago.to_s(:db) %>
|
245
|
+
created_at: <%= 1.day.ago.to_s(:db) %>
|
236
246
|
|
237
247
|
canaries_fifth:
|
238
248
|
id: 305
|
@@ -246,6 +256,7 @@ canaries_fifth:
|
|
246
256
|
additions: 1
|
247
257
|
deletions: 24
|
248
258
|
updated_at: <%= 8.days.ago.to_s(:db) %>
|
259
|
+
created_at: <%= 1.day.ago.to_s(:db) %>
|
249
260
|
|
250
261
|
undeployed_1:
|
251
262
|
id: 401
|
@@ -350,3 +361,30 @@ single:
|
|
350
361
|
additions: 420
|
351
362
|
deletions: 342
|
352
363
|
updated_at: <%= 8.days.ago.to_s(:db) %>
|
364
|
+
|
365
|
+
task_no_commits:
|
366
|
+
id: 601
|
367
|
+
sha: 547578b362bf2b4df5903e1c7960929361c3435a
|
368
|
+
message: "first commit"
|
369
|
+
stack: shipit_task_no_commits
|
370
|
+
author: walrus
|
371
|
+
committer: walrus
|
372
|
+
authored_at: <%= 4.days.ago.to_s(:db) %>
|
373
|
+
committed_at: <%= 3.days.ago.to_s(:db) %>
|
374
|
+
additions: 420
|
375
|
+
deletions: 342
|
376
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
377
|
+
|
378
|
+
check_deploy_spec_first:
|
379
|
+
id: 701
|
380
|
+
sha: 547578b362bf2b4df5903e1c7960929361c3435a
|
381
|
+
message: "Removing deploy spec"
|
382
|
+
stack: check_deploy_spec
|
383
|
+
author: walrus
|
384
|
+
committer: walrus
|
385
|
+
authored_at: <%= 4.days.ago.to_s(:db) %>
|
386
|
+
committed_at: <%= 3.days.ago.to_s(:db) %>
|
387
|
+
additions: 420
|
388
|
+
deletions: 342
|
389
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
390
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
shipit:
|
2
|
+
owner: shopify
|
3
|
+
name: shipit-engine
|
4
|
+
|
5
|
+
cyclimse:
|
6
|
+
owner: george
|
7
|
+
name: cyclimse
|
8
|
+
|
9
|
+
foo-bar:
|
10
|
+
owner: shopify
|
11
|
+
name: foo-bar
|
12
|
+
|
13
|
+
soc:
|
14
|
+
owner: "shopify"
|
15
|
+
name: "soc"
|
16
|
+
|
17
|
+
check_runs:
|
18
|
+
owner: shopify
|
19
|
+
name: check_runs
|
20
|
+
|
21
|
+
check_deploy_spec:
|
22
|
+
owner: shopify
|
23
|
+
name: check_deploy_spec
|
24
|
+
|
25
|
+
rails:
|
26
|
+
owner: rails
|
27
|
+
name: rails
|