Start persisting runner_type when creating runners
This commit is contained in:
parent
3dbcc02db0
commit
0d30b00de8
5 changed files with 40 additions and 4 deletions
|
@ -67,6 +67,12 @@ module Ci
|
|||
ref_protected: 1
|
||||
}
|
||||
|
||||
enum runner_type: {
|
||||
instance_type: 1,
|
||||
group_type: 2,
|
||||
project_type: 3
|
||||
}
|
||||
|
||||
cached_attr_reader :version, :revision, :platform, :architecture, :contacted_at, :ip_address
|
||||
|
||||
chronic_duration_attr :maximum_timeout_human_readable, :maximum_timeout
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
class AddRunnerTypeToCiRunners < ActiveRecord::Migration
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
|
||||
DOWNTIME = false
|
||||
|
||||
def change
|
||||
add_column :ci_runners, :runner_type, :integer
|
||||
end
|
||||
end
|
|
@ -0,0 +1,20 @@
|
|||
class BackfillRunnerTypeForCiRunnersPostMigrate < ActiveRecord::Migration
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
|
||||
DOWNTIME = false
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
update_column_in_batches(:ci_runners, :runner_type, 1) do |table, query|
|
||||
query.where(table[:is_shared].eq(true)).where(table[:runner_type].eq(nil))
|
||||
end
|
||||
|
||||
update_column_in_batches(:ci_runners, :runner_type, 3) do |table, query|
|
||||
query.where(table[:is_shared].eq(false)).where(table[:runner_type].eq(nil))
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
end
|
||||
end
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20180425131009) do
|
||||
ActiveRecord::Schema.define(version: 20180430143705) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
@ -479,6 +479,7 @@ ActiveRecord::Schema.define(version: 20180425131009) do
|
|||
t.integer "access_level", default: 0, null: false
|
||||
t.string "ip_address"
|
||||
t.integer "maximum_timeout"
|
||||
t.integer "runner_type"
|
||||
end
|
||||
|
||||
add_index "ci_runners", ["contacted_at"], name: "index_ci_runners_on_contacted_at", using: :btree
|
||||
|
|
|
@ -23,13 +23,13 @@ module API
|
|||
runner =
|
||||
if runner_registration_token_valid?
|
||||
# Create shared runner. Requires admin access
|
||||
Ci::Runner.create(attributes.merge(is_shared: true))
|
||||
Ci::Runner.create(attributes.merge(is_shared: true, runner_type: :instance_type))
|
||||
elsif project = Project.find_by(runners_token: params[:token])
|
||||
# Create a specific runner for the project
|
||||
project.runners.create(attributes)
|
||||
project.runners.create(attributes.merge(runner_type: :project_type))
|
||||
elsif group = Group.find_by(runners_token: params[:token])
|
||||
# Create a specific runner for the group
|
||||
group.runners.create(attributes)
|
||||
group.runners.create(attributes.merge(runner_type: :group_type))
|
||||
end
|
||||
|
||||
break forbidden! unless runner
|
||||
|
|
Loading…
Reference in a new issue