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
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Shipit
|
3
|
+
module Webhooks
|
4
|
+
module Handlers
|
5
|
+
class PushHandler < Handler
|
6
|
+
params do
|
7
|
+
requires :ref
|
8
|
+
end
|
9
|
+
def process
|
10
|
+
stacks.where(branch: branch).each(&:sync_github)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def branch
|
16
|
+
params.ref.gsub('refs/heads/', '')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Shipit
|
3
|
+
module Webhooks
|
4
|
+
module Handlers
|
5
|
+
class StatusHandler < Handler
|
6
|
+
params do
|
7
|
+
requires :sha, String
|
8
|
+
requires :state, String
|
9
|
+
accepts :description, String
|
10
|
+
accepts :target_url, String
|
11
|
+
accepts :context, String
|
12
|
+
accepts :created_at, String
|
13
|
+
|
14
|
+
accepts :branches, Array do
|
15
|
+
requires :name, String
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def process
|
20
|
+
Commit.where(sha: params.sha).each do |commit|
|
21
|
+
commit.create_status_from_github!(params)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,10 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Shipit
|
2
3
|
class DeploySerializer < TaskSerializer
|
3
4
|
include GithubUrlHelper
|
4
5
|
|
5
6
|
has_many :commits
|
6
7
|
|
7
|
-
attributes :compare_url, :rollback_url, :additions, :deletions
|
8
|
+
attributes :compare_url, :rollback_url, :additions, :deletions, :rollback_once_aborted_to
|
8
9
|
|
9
10
|
def html_url
|
10
11
|
stack_deploy_url(object.stack, object)
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Shipit
|
2
3
|
class StackSerializer < ActiveModel::Serializer
|
3
4
|
include ConditionalAttributes
|
@@ -5,7 +6,8 @@ module Shipit
|
|
5
6
|
has_one :lock_author
|
6
7
|
attributes :id, :repo_owner, :repo_name, :environment, :html_url, :url, :tasks_url, :deploy_url, :pull_requests_url,
|
7
8
|
:deploy_spec, :undeployed_commits_count, :is_locked, :lock_reason, :continuous_deployment, :created_at,
|
8
|
-
:updated_at, :locked_since, :last_deployed_at, :branch, :merge_queue_enabled
|
9
|
+
:updated_at, :locked_since, :last_deployed_at, :branch, :merge_queue_enabled, :is_archived,
|
10
|
+
:archived_since
|
9
11
|
|
10
12
|
def url
|
11
13
|
api_stack_url(object)
|
@@ -39,6 +41,10 @@ module Shipit
|
|
39
41
|
object.locked?
|
40
42
|
end
|
41
43
|
|
44
|
+
def is_archived
|
45
|
+
object.archived?
|
46
|
+
end
|
47
|
+
|
42
48
|
def deploy_spec
|
43
49
|
object.cached_deploy_spec.cacheable.config
|
44
50
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Shipit
|
2
3
|
class TaskSerializer < ActiveModel::Serializer
|
3
4
|
include ConditionalAttributes
|
@@ -5,23 +6,7 @@ module Shipit
|
|
5
6
|
has_one :author
|
6
7
|
has_one :revision, serializer: ShortCommitSerializer
|
7
8
|
|
8
|
-
attributes(
|
9
|
-
id
|
10
|
-
url
|
11
|
-
html_url
|
12
|
-
output_url
|
13
|
-
type
|
14
|
-
status
|
15
|
-
action
|
16
|
-
title
|
17
|
-
description
|
18
|
-
started_at
|
19
|
-
ended_at
|
20
|
-
updated_at
|
21
|
-
created_at
|
22
|
-
env
|
23
|
-
ignored_safeties
|
24
|
-
))
|
9
|
+
attributes(:id, :url, :html_url, :output_url, :type, :status, :action, :title, :description, :started_at, :ended_at, :updated_at, :created_at, :env, :ignored_safeties)
|
25
10
|
|
26
11
|
def revision
|
27
12
|
object.until_commit
|
@@ -1,5 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Shipit
|
2
3
|
class UserSerializer < ActiveModel::Serializer
|
3
|
-
attributes :id, :name, :email, :login, :avatar_url, :created_at, :updated_at, :github_id
|
4
|
+
attributes :id, :name, :email, :login, :avatar_url, :created_at, :updated_at, :github_id, :anonymous
|
5
|
+
|
6
|
+
def anonymous
|
7
|
+
!object.logged_in?
|
8
|
+
end
|
4
9
|
end
|
5
10
|
end
|
@@ -1,7 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class AsciiOnlyValidator < ActiveModel::EachValidator
|
2
3
|
def validate_each(record, attribute, value)
|
3
|
-
value.
|
4
|
-
|
5
|
-
|
4
|
+
if value && !value.ascii_only?
|
5
|
+
record.errors.add(attribute, :ascii)
|
6
|
+
end
|
6
7
|
end
|
7
8
|
end
|
File without changes
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<html lang="<%= I18n.locale %>" data-controller="<%= controller_name %>" data-action="<%= action_name %>">
|
3
3
|
<head>
|
4
4
|
<% if @stack %>
|
5
|
-
<title><%=
|
5
|
+
<title><%= @stack.repo_name %>/<%= @stack.environment %> - <%= Shipit.app_name %></title>
|
6
6
|
<% else %>
|
7
7
|
<title><%= Shipit.app_name %></title>
|
8
8
|
<% end %>
|
@@ -12,6 +12,8 @@
|
|
12
12
|
<%= javascript_include_tag :shipit %>
|
13
13
|
<%= yield :update_subscription %>
|
14
14
|
<%= csrf_meta_tags %>
|
15
|
+
|
16
|
+
<%= render 'layouts/head' %>
|
15
17
|
</head>
|
16
18
|
<body>
|
17
19
|
<% flash.each do |name, msg| %>
|
@@ -33,7 +35,7 @@
|
|
33
35
|
|
34
36
|
<div id="layout-content">
|
35
37
|
<% github_status = Shipit::GithubStatus.status
|
36
|
-
unless github_status.nil? || github_status[:status] == '
|
38
|
+
unless github_status.nil? || github_status[:status] == 'operational' %>
|
37
39
|
<div class="banner github-status banner--orange hidden">
|
38
40
|
<div class="banner__inner wrapper">
|
39
41
|
<div class="banner__content">
|
@@ -52,11 +54,11 @@
|
|
52
54
|
<% end %>
|
53
55
|
|
54
56
|
<header class="header">
|
55
|
-
<%= link_to "Shipit v#{Shipit::VERSION}", "https://github.com/Shopify/shipit-engine/tree/v#{Shipit::VERSION}", class: 'powered-by' %>
|
57
|
+
<%= link_to "Powered by Shipit v#{Shipit::VERSION}", "https://github.com/Shopify/shipit-engine/tree/v#{Shipit::VERSION}", class: 'powered-by' %>
|
56
58
|
<div class="wrapper">
|
57
59
|
<div class="header__inner">
|
58
60
|
<a href="/" class="logo">
|
59
|
-
<span class="visually-hidden"
|
61
|
+
<span class="visually-hidden"><%= Shipit.app_name %></span>
|
60
62
|
</a>
|
61
63
|
<div class="header__page-title">
|
62
64
|
<%= yield :page_title %>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
<% variables.each do |variable| %>
|
8
8
|
<p class="variables-fields">
|
9
9
|
<% if variable.select %>
|
10
|
-
<%= field.select variable.name, options_for_select([["Please select...", { disabled: "disabled"
|
10
|
+
<%= field.select variable.name, options_for_select([["Please select...", { disabled: "disabled" }]] + variable.select, variable.default || "Please select...") %>
|
11
11
|
<% else %>
|
12
12
|
<%= field.text_field variable.name, value: variable.default %>
|
13
13
|
<% end %>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
|
2
|
+
<div class="wrapper">
|
3
|
+
<section>
|
4
|
+
<%= link_to "Create new api client", new_api_client_path, class: 'btn'%>
|
5
|
+
</section>
|
6
|
+
</div>
|
7
|
+
<div class="wrapper">
|
8
|
+
<section>
|
9
|
+
<ul class="task-list">
|
10
|
+
<% @api_clients.each do |api_client|%>
|
11
|
+
<li>
|
12
|
+
<p>
|
13
|
+
<%= link_to api_client.name, api_client_path(api_client) %>
|
14
|
+
created by <%= api_client.creator.name %> on <%= api_client.created_at%>
|
15
|
+
</p>
|
16
|
+
</li>
|
17
|
+
<% end %>
|
18
|
+
</ul>
|
19
|
+
</section>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div class="wrapper">
|
23
|
+
<section class="pagination">
|
24
|
+
<% if params[:since].present? %>
|
25
|
+
<%= link_to 'Start', @links[:first], class: 'header__btn btn' %>
|
26
|
+
<% else %>
|
27
|
+
<%= link_to 'Start', '', class: 'header__btn btn btn--disabled disabled' %>
|
28
|
+
<% end %>
|
29
|
+
|
30
|
+
<% if url = @links[:next] %>
|
31
|
+
<%= link_to 'Older', url, class: 'header__btn btn' %>
|
32
|
+
<% else %>
|
33
|
+
<%= link_to 'Older', '', class: 'header__btn btn btn--disabled disabled' %>
|
34
|
+
<% end %>
|
35
|
+
</section>
|
36
|
+
</div>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<div class="wrapper">
|
2
|
+
<section>
|
3
|
+
<header class="section-header">
|
4
|
+
<p>New Api Client</p>
|
5
|
+
</header>
|
6
|
+
</section>
|
7
|
+
|
8
|
+
<%= form_for @api_client, url: api_clients_path(@api_client) do |f| %>
|
9
|
+
<section>
|
10
|
+
<%= label_tag "App Name" %>
|
11
|
+
<%= f.text_field :name, placeholder: 'e.g. spy', required: true %>
|
12
|
+
</section>
|
13
|
+
|
14
|
+
<section>
|
15
|
+
<%= label_tag "Permissions" %>
|
16
|
+
<ul class="deploy-checklist">
|
17
|
+
<% Shipit::ApiClient::PERMISSIONS.each do |permission| %>
|
18
|
+
<li class="deploy-checklist__item">
|
19
|
+
<%= check_box_tag 'api_client[permissions][]', permission, false,
|
20
|
+
class: 'deploy-checklist__item__checkbox', id: "checkbox_" + permission %>
|
21
|
+
<label class="deploy-checklist__item__label" for="checkbox_<%= permission %>">
|
22
|
+
<%= permission %>
|
23
|
+
</label>
|
24
|
+
</li>
|
25
|
+
<% end %>
|
26
|
+
</ul>
|
27
|
+
</section>
|
28
|
+
|
29
|
+
<section class="submit-section">
|
30
|
+
<%= f.submit "Create", :class => ['btn', 'primary'] %>
|
31
|
+
</section>
|
32
|
+
<% end %>
|
33
|
+
</div>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<div class="wrapper">
|
2
|
+
<section>
|
3
|
+
<header class="section-header">
|
4
|
+
<h2>Api client: <b><%= @api_client.name %></b></h2>
|
5
|
+
</header>
|
6
|
+
|
7
|
+
<p>Created by <%= @api_client.creator.name %> on <%= @api_client.created_at %></p>
|
8
|
+
</section>
|
9
|
+
|
10
|
+
<section>
|
11
|
+
<h3>Authentication token:</h3>
|
12
|
+
<code style="background-color: yellow">
|
13
|
+
<b><%= @api_client.authentication_token %></b>
|
14
|
+
</code>
|
15
|
+
</section>
|
16
|
+
|
17
|
+
<section>
|
18
|
+
<%= form_for @api_client, url: api_client_path(@api_client) do |f| %>
|
19
|
+
<h3> Permissions </h3>
|
20
|
+
<ul class="deploy-checklist">
|
21
|
+
<% Shipit::ApiClient::PERMISSIONS.each do |permission| %>
|
22
|
+
<li class="deploy-checklist__item">
|
23
|
+
<%= check_box_tag 'api_client[permissions][]', permission, @api_client.permissions.include?(permission),
|
24
|
+
class: 'deploy-checklist__item__checkbox', id: "checkbox_" + permission %>
|
25
|
+
<label class="deploy-checklist__item__label" for="checkbox_<%= permission %>">
|
26
|
+
<%= permission %>
|
27
|
+
</label>
|
28
|
+
</li>
|
29
|
+
<% end %>
|
30
|
+
</ul>
|
31
|
+
<%= f.submit "Update", :class => ['btn', 'primary'] %>
|
32
|
+
<% end %>
|
33
|
+
</section>
|
34
|
+
|
35
|
+
</div>
|
@@ -1,5 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Derived from http://timnew.me/blog/2013/04/07/multiple-project-summary-reporting-standard-cctray-xml-feed/
|
2
|
-
status_map = {'backlogged' => 'failure', 'locked' => 'failure'}
|
3
|
+
status_map = { 'backlogged' => 'failure', 'locked' => 'failure' }
|
3
4
|
xml.instruct!
|
4
5
|
xml.Projects do
|
5
6
|
xml.Project(
|
@@ -9,18 +9,6 @@
|
|
9
9
|
<%= render 'shipit/deploys/summary', commits: @deploy.commits %>
|
10
10
|
</section>
|
11
11
|
|
12
|
-
<% unless @deploy.commits_since.empty? %>
|
13
|
-
<section class="less-important">
|
14
|
-
|
15
|
-
<p>The following commits are <strong>not</strong> included in this deploy.
|
16
|
-
Please ensure that none of these commits are needed for what
|
17
|
-
<strong>is</strong> being deployed (for example, if they contain the revert
|
18
|
-
of a broken change).</p>
|
19
|
-
|
20
|
-
<%= render 'shipit/deploys/summary', commits: @deploy.commits_since %>
|
21
|
-
</section>
|
22
|
-
<% end %>
|
23
|
-
|
24
12
|
<%= render_monitoring @stack %>
|
25
13
|
|
26
14
|
<%= render_checks @commit %>
|
@@ -37,4 +25,21 @@
|
|
37
25
|
<%= f.submit class: 'btn btn--primary btn--large trigger-deploy' %>
|
38
26
|
</section>
|
39
27
|
<% end %>
|
28
|
+
|
29
|
+
<% unless @deploy.commits_since.empty? %>
|
30
|
+
<section class="less-important">
|
31
|
+
<header class="section-header">
|
32
|
+
<h2>Commits not included in this deploy</h2>
|
33
|
+
</header>
|
34
|
+
|
35
|
+
<div>
|
36
|
+
<p>The following commits are <strong>not</strong> included in this deploy.
|
37
|
+
Please ensure that none of these commits are needed for what
|
38
|
+
<strong>is</strong> being deployed (for example, if they contain the revert
|
39
|
+
of a broken change).</p>
|
40
|
+
|
41
|
+
<%= render 'shipit/deploys/summary', commits: @deploy.commits_since %>
|
42
|
+
</div>
|
43
|
+
</section>
|
44
|
+
<% end %>
|
40
45
|
</div>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<% content_for :task_title do %>
|
2
2
|
<% if @deploy.rollback? %>
|
3
|
-
rolling back to
|
3
|
+
<%= @deploy.active? ? "rolling back to" : "rolled back to" %>
|
4
4
|
<% else %>
|
5
|
-
deploying
|
5
|
+
<%= @deploy.active? ? "deploying" : "deployed" %>
|
6
6
|
<% end %>
|
7
7
|
<span class="short-sha"><%= link_to_github_deploy(@deploy) %></span>
|
8
8
|
<%= timeago_tag(@deploy.created_at, force: true) %>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<%= render 'anchor', color: '#bd2c00' %>
|
4
4
|
</div>
|
5
5
|
<h4 class="status-heading text-red">
|
6
|
-
Please log in to <%= link_to
|
6
|
+
Please log in to <%= link_to Shipit.app_name, '/', target: '_blank', rel: 'noopener' %>
|
7
7
|
</h4>
|
8
8
|
<span class="status-meta">
|
9
9
|
Here Comes The Walrus is unable to check merge status.
|
@@ -5,23 +5,26 @@
|
|
5
5
|
|
6
6
|
|
7
7
|
<% content_for :primary_navigation do %>
|
8
|
-
<%= link_to '
|
8
|
+
<%= link_to t('stack.nav.refresh'), stack_refresh_path(stack), method: 'post', class: "header__btn btn" %>
|
9
9
|
<% end %>
|
10
10
|
|
11
11
|
<% content_for :secondary_navigation do %>
|
12
12
|
<ul class="nav__list nav__list--primary">
|
13
13
|
<li class="nav__list__item">
|
14
|
-
<%= link_to
|
14
|
+
<%= link_to t('stack.nav.commits'), stack_path(stack) %>
|
15
15
|
</li>
|
16
16
|
<li class="nav__list__item">
|
17
|
-
<%= link_to '
|
17
|
+
<%= link_to t('stack.nav.settings'), stack_settings_path(stack) %>
|
18
18
|
</li>
|
19
19
|
<li class="nav__list__item">
|
20
|
-
<%= link_to '
|
20
|
+
<%= link_to t('stack.nav.timeline'), index_stack_tasks_path(stack) %>
|
21
|
+
</li>
|
22
|
+
<li class="nav__list__item">
|
23
|
+
<%= link_to t('stack.nav.statistics'), stack_statistics_path(stack) %>
|
21
24
|
</li>
|
22
25
|
<% if stack.merge_queue_enabled? %>
|
23
26
|
<li class="nav__list__item">
|
24
|
-
<%= link_to
|
27
|
+
<%= link_to t('stack.nav.merge_queue', count: stack.pull_requests.queued.count), stack_pull_requests_path(stack) %>
|
25
28
|
</li>
|
26
29
|
<% end %>
|
27
30
|
|
@@ -35,25 +38,37 @@
|
|
35
38
|
<%= link_to "#{definition.action}…", new_stack_tasks_path(stack, definition_id: definition.id), class: "trigger-deploy" %>
|
36
39
|
</li>
|
37
40
|
<% end %>
|
41
|
+
<li class="nav__list__sub__item">
|
42
|
+
<%= link_to "All tasks", stack_tasks_list_path(stack), class: "trigger-deploy" %>
|
43
|
+
</li>
|
38
44
|
</ul>
|
39
45
|
</li>
|
40
46
|
<% end %>
|
47
|
+
|
48
|
+
<%= render partial: 'shipit/stacks/links', locals: { stack: stack } %>
|
41
49
|
</ul>
|
42
50
|
|
43
51
|
<ul class="nav__list nav__list--secondary">
|
44
52
|
<% if stack.links.present? %>
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
53
|
+
<li class="nav__list__item nav__list__item--has-children">
|
54
|
+
|
55
|
+
<%= t('stack.nav.links') %>
|
56
|
+
|
57
|
+
<ul class="nav__sub__list">
|
58
|
+
<% stack.links.each do |name, url| %>
|
59
|
+
<li class="nav__list__sub__item">
|
60
|
+
<%= link_to name.humanize, url, :target => '_blank', :class => "#{name.dasherize}-url" %>
|
61
|
+
</li>
|
62
|
+
<% end %>
|
63
|
+
</ul>
|
64
|
+
</li>
|
50
65
|
<% end %>
|
51
66
|
<li class="nav__list__item">
|
52
|
-
<%= link_to '
|
67
|
+
<%= link_to t('stack.nav.view_on_github'), github_repo_url(stack.repo_owner, stack.repo_name) %>
|
53
68
|
</li>
|
54
69
|
<% if stack.deploy_url.present? %>
|
55
70
|
<li class="nav__list__item">
|
56
|
-
<%= sanitize link_to '
|
71
|
+
<%= sanitize link_to t('stack.nav.deploy_link'), stack.deploy_url, :target => '_blank', :class => 'deploy-url' %>
|
57
72
|
</li>
|
58
73
|
<% end %>
|
59
74
|
</ul>
|