rename auto_canceled_by
and add foreign key
This commit is contained in:
parent
40f67c1da8
commit
a4d08e6bab
5 changed files with 28 additions and 19 deletions
|
@ -7,7 +7,9 @@ module Ci
|
||||||
|
|
||||||
belongs_to :project
|
belongs_to :project
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
belongs_to :auto_canceled_by, class_name: 'Ci::Pipeline'
|
||||||
|
|
||||||
|
has_many :auto_canceled_pipelines, class_name: 'Ci::Pipeline', foreign_key: 'auto_canceled_by_id'
|
||||||
has_many :statuses, class_name: 'CommitStatus', foreign_key: :commit_id
|
has_many :statuses, class_name: 'CommitStatus', foreign_key: :commit_id
|
||||||
has_many :builds, foreign_key: :commit_id
|
has_many :builds, foreign_key: :commit_id
|
||||||
has_many :trigger_requests, dependent: :destroy, foreign_key: :commit_id
|
has_many :trigger_requests, dependent: :destroy, foreign_key: :commit_id
|
||||||
|
|
|
@ -69,7 +69,7 @@ module Ci
|
||||||
Gitlab::OptimisticLocking.retry_lock(auto_cancelable_pipelines) do |cancelables|
|
Gitlab::OptimisticLocking.retry_lock(auto_cancelable_pipelines) do |cancelables|
|
||||||
cancelables.find_each do |cancelable|
|
cancelables.find_each do |cancelable|
|
||||||
cancelable.cancel_running
|
cancelable.cancel_running
|
||||||
cancelable.update_attributes(auto_canceled_by: pipeline.id)
|
cancelable.update_attributes(auto_canceled_by_id: pipeline.id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
|
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
|
||||||
# for more information on how to write migrations for GitLab.
|
# for more information on how to write migrations for GitLab.
|
||||||
|
|
||||||
class AddAutoCanceledByToPipeline < ActiveRecord::Migration
|
class AddAutoCanceledByIdToPipeline < ActiveRecord::Migration
|
||||||
include Gitlab::Database::MigrationHelpers
|
include Gitlab::Database::MigrationHelpers
|
||||||
|
|
||||||
# Set this constant to true if this migration requires downtime.
|
# Set this constant to true if this migration requires downtime.
|
||||||
|
@ -21,9 +21,15 @@ class AddAutoCanceledByToPipeline < ActiveRecord::Migration
|
||||||
#
|
#
|
||||||
# To disable transactions uncomment the following line and remove these
|
# To disable transactions uncomment the following line and remove these
|
||||||
# comments:
|
# comments:
|
||||||
# disable_ddl_transaction!
|
disable_ddl_transaction!
|
||||||
|
|
||||||
def change
|
def up
|
||||||
add_column :ci_commits, :auto_canceled_by, :integer
|
add_column :ci_pipelines, :auto_canceled_by_id, :integer
|
||||||
|
add_concurrent_foreign_key :ci_pipelines, :ci_pipelines, column: :auto_canceled_by_id, on_delete: 'set null'
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
remove_foreign_key :ci_pipelines, column: :auto_canceled_by_id
|
||||||
|
remove_column :ci_pipelines, :auto_canceled_by_id
|
||||||
end
|
end
|
||||||
end
|
end
|
19
db/schema.rb
19
db/schema.rb
|
@ -61,7 +61,6 @@ ActiveRecord::Schema.define(version: 20170402231018) do
|
||||||
t.boolean "shared_runners_enabled", default: true, null: false
|
t.boolean "shared_runners_enabled", default: true, null: false
|
||||||
t.integer "max_artifacts_size", default: 100, null: false
|
t.integer "max_artifacts_size", default: 100, null: false
|
||||||
t.string "runners_registration_token"
|
t.string "runners_registration_token"
|
||||||
t.integer "max_pages_size", default: 100, null: false
|
|
||||||
t.boolean "require_two_factor_authentication", default: false
|
t.boolean "require_two_factor_authentication", default: false
|
||||||
t.integer "two_factor_grace_period", default: 48
|
t.integer "two_factor_grace_period", default: 48
|
||||||
t.boolean "metrics_enabled", default: false
|
t.boolean "metrics_enabled", default: false
|
||||||
|
@ -99,17 +98,18 @@ ActiveRecord::Schema.define(version: 20170402231018) do
|
||||||
t.text "help_page_text_html"
|
t.text "help_page_text_html"
|
||||||
t.text "shared_runners_text_html"
|
t.text "shared_runners_text_html"
|
||||||
t.text "after_sign_up_text_html"
|
t.text "after_sign_up_text_html"
|
||||||
|
t.boolean "sidekiq_throttling_enabled", default: false
|
||||||
|
t.string "sidekiq_throttling_queues"
|
||||||
|
t.decimal "sidekiq_throttling_factor"
|
||||||
t.boolean "housekeeping_enabled", default: true, null: false
|
t.boolean "housekeeping_enabled", default: true, null: false
|
||||||
t.boolean "housekeeping_bitmaps_enabled", default: true, null: false
|
t.boolean "housekeeping_bitmaps_enabled", default: true, null: false
|
||||||
t.integer "housekeeping_incremental_repack_period", default: 10, null: false
|
t.integer "housekeeping_incremental_repack_period", default: 10, null: false
|
||||||
t.integer "housekeeping_full_repack_period", default: 50, null: false
|
t.integer "housekeeping_full_repack_period", default: 50, null: false
|
||||||
t.integer "housekeeping_gc_period", default: 200, null: false
|
t.integer "housekeeping_gc_period", default: 200, null: false
|
||||||
t.boolean "sidekiq_throttling_enabled", default: false
|
|
||||||
t.string "sidekiq_throttling_queues"
|
|
||||||
t.decimal "sidekiq_throttling_factor"
|
|
||||||
t.boolean "html_emails_enabled", default: true
|
t.boolean "html_emails_enabled", default: true
|
||||||
t.string "plantuml_url"
|
t.string "plantuml_url"
|
||||||
t.boolean "plantuml_enabled"
|
t.boolean "plantuml_enabled"
|
||||||
|
t.integer "max_pages_size", default: 100, null: false
|
||||||
t.integer "terminal_max_session_time", default: 0, null: false
|
t.integer "terminal_max_session_time", default: 0, null: false
|
||||||
t.string "default_artifacts_expire_in", default: "0", null: false
|
t.string "default_artifacts_expire_in", default: "0", null: false
|
||||||
t.integer "unique_ips_limit_per_user"
|
t.integer "unique_ips_limit_per_user"
|
||||||
|
@ -251,7 +251,7 @@ ActiveRecord::Schema.define(version: 20170402231018) do
|
||||||
t.integer "duration"
|
t.integer "duration"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.integer "lock_version"
|
t.integer "lock_version"
|
||||||
t.integer "auto_canceled_by"
|
t.integer "auto_canceled_by_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "ci_pipelines", ["project_id", "ref", "status"], name: "index_ci_pipelines_on_project_id_and_ref_and_status", using: :btree
|
add_index "ci_pipelines", ["project_id", "ref", "status"], name: "index_ci_pipelines_on_project_id_and_ref_and_status", using: :btree
|
||||||
|
@ -688,10 +688,10 @@ ActiveRecord::Schema.define(version: 20170402231018) do
|
||||||
t.string "avatar"
|
t.string "avatar"
|
||||||
t.boolean "share_with_group_lock", default: false
|
t.boolean "share_with_group_lock", default: false
|
||||||
t.integer "visibility_level", default: 20, null: false
|
t.integer "visibility_level", default: 20, null: false
|
||||||
t.datetime "deleted_at"
|
|
||||||
t.boolean "request_access_enabled", default: false, null: false
|
t.boolean "request_access_enabled", default: false, null: false
|
||||||
t.text "description_html"
|
t.datetime "deleted_at"
|
||||||
t.boolean "lfs_enabled"
|
t.boolean "lfs_enabled"
|
||||||
|
t.text "description_html"
|
||||||
t.integer "parent_id"
|
t.integer "parent_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -920,8 +920,8 @@ ActiveRecord::Schema.define(version: 20170402231018) do
|
||||||
t.boolean "lfs_enabled"
|
t.boolean "lfs_enabled"
|
||||||
t.text "description_html"
|
t.text "description_html"
|
||||||
t.boolean "only_allow_merge_if_all_discussions_are_resolved"
|
t.boolean "only_allow_merge_if_all_discussions_are_resolved"
|
||||||
t.boolean "printing_merge_request_link_enabled", default: true, null: false
|
|
||||||
t.integer "auto_cancel_pending_pipelines", default: 0, null: false
|
t.integer "auto_cancel_pending_pipelines", default: 0, null: false
|
||||||
|
t.boolean "printing_merge_request_link_enabled", default: true, null: false
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "projects", ["ci_id"], name: "index_projects_on_ci_id", using: :btree
|
add_index "projects", ["ci_id"], name: "index_projects_on_ci_id", using: :btree
|
||||||
|
@ -1241,10 +1241,10 @@ ActiveRecord::Schema.define(version: 20170402231018) do
|
||||||
t.boolean "hide_project_limit", default: false
|
t.boolean "hide_project_limit", default: false
|
||||||
t.string "unlock_token"
|
t.string "unlock_token"
|
||||||
t.datetime "otp_grace_period_started_at"
|
t.datetime "otp_grace_period_started_at"
|
||||||
t.string "incoming_email_token"
|
|
||||||
t.boolean "ldap_email", default: false, null: false
|
t.boolean "ldap_email", default: false, null: false
|
||||||
t.boolean "external", default: false
|
t.boolean "external", default: false
|
||||||
t.string "organization"
|
t.string "organization"
|
||||||
|
t.string "incoming_email_token"
|
||||||
t.boolean "authorized_projects_populated"
|
t.boolean "authorized_projects_populated"
|
||||||
t.boolean "ghost"
|
t.boolean "ghost"
|
||||||
t.boolean "notified_of_own_activity"
|
t.boolean "notified_of_own_activity"
|
||||||
|
@ -1299,6 +1299,7 @@ ActiveRecord::Schema.define(version: 20170402231018) do
|
||||||
|
|
||||||
add_foreign_key "boards", "projects"
|
add_foreign_key "boards", "projects"
|
||||||
add_foreign_key "chat_teams", "namespaces", on_delete: :cascade
|
add_foreign_key "chat_teams", "namespaces", on_delete: :cascade
|
||||||
|
add_foreign_key "ci_pipelines", "ci_pipelines", column: "auto_canceled_by_id", name: "fk_262d4c2d19", on_delete: :nullify
|
||||||
add_foreign_key "ci_triggers", "users", column: "owner_id", name: "fk_e8e10d1964", on_delete: :cascade
|
add_foreign_key "ci_triggers", "users", column: "owner_id", name: "fk_e8e10d1964", on_delete: :cascade
|
||||||
add_foreign_key "issue_metrics", "issues", on_delete: :cascade
|
add_foreign_key "issue_metrics", "issues", on_delete: :cascade
|
||||||
add_foreign_key "label_priorities", "labels", on_delete: :cascade
|
add_foreign_key "label_priorities", "labels", on_delete: :cascade
|
||||||
|
|
|
@ -52,14 +52,14 @@ describe Ci::CreatePipelineService, services: true do
|
||||||
previous_pipeline = pipeline_on_previous_commit
|
previous_pipeline = pipeline_on_previous_commit
|
||||||
|
|
||||||
expect(pipeline.reload)
|
expect(pipeline.reload)
|
||||||
.to have_attributes(status: 'pending', auto_canceled_by: nil)
|
.to have_attributes(status: 'pending', auto_canceled_by_id: nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'auto cancel pending non-HEAD pipelines' do
|
it 'auto cancel pending non-HEAD pipelines' do
|
||||||
pending_pipeline = pipeline_on_previous_commit
|
pending_pipeline = pipeline_on_previous_commit
|
||||||
pipeline
|
pipeline
|
||||||
|
|
||||||
expect(pending_pipeline.reload).to have_attributes(status: 'canceled', auto_canceled_by: pipeline.id)
|
expect(pending_pipeline.reload).to have_attributes(status: 'canceled', auto_canceled_by_id: pipeline.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not cancel running outdated pipelines' do
|
it 'does not cancel running outdated pipelines' do
|
||||||
|
@ -67,7 +67,7 @@ describe Ci::CreatePipelineService, services: true do
|
||||||
running_pipeline.run
|
running_pipeline.run
|
||||||
execute_service
|
execute_service
|
||||||
|
|
||||||
expect(running_pipeline.reload).to have_attributes(status: 'running', auto_canceled_by: nil)
|
expect(running_pipeline.reload).to have_attributes(status: 'running', auto_canceled_by_id: nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'cancel created outdated pipelines' do
|
it 'cancel created outdated pipelines' do
|
||||||
|
@ -75,7 +75,7 @@ describe Ci::CreatePipelineService, services: true do
|
||||||
created_pipeline.update(status: 'created')
|
created_pipeline.update(status: 'created')
|
||||||
pipeline
|
pipeline
|
||||||
|
|
||||||
expect(created_pipeline.reload).to have_attributes(status: 'canceled', auto_canceled_by: pipeline.id)
|
expect(created_pipeline.reload).to have_attributes(status: 'canceled', auto_canceled_by_id: pipeline.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not cancel pipelines from the other branches' do
|
it 'does not cancel pipelines from the other branches' do
|
||||||
|
@ -85,7 +85,7 @@ describe Ci::CreatePipelineService, services: true do
|
||||||
)
|
)
|
||||||
pipeline
|
pipeline
|
||||||
|
|
||||||
expect(pending_pipeline.reload).to have_attributes(status: 'pending', auto_canceled_by: nil)
|
expect(pending_pipeline.reload).to have_attributes(status: 'pending', auto_canceled_by_id: nil)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue