mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-20 18:16:45 +10:00
Merge branch 'master' of github.com:gitlabhq/gitlabhq
This commit is contained in:
@@ -5,21 +5,17 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
class AssemblaService < Service
|
||||
include HTTParty
|
||||
|
||||
prop_accessor :token, :subdomain
|
||||
validates :token, presence: true, if: :activated?
|
||||
|
||||
def title
|
||||
|
||||
@@ -5,19 +5,15 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
class CampfireService < Service
|
||||
prop_accessor :token, :subdomain, :room
|
||||
validates :token, presence: true, if: :activated?
|
||||
|
||||
def title
|
||||
|
||||
@@ -5,16 +5,11 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
# Base class for CI services
|
||||
|
||||
@@ -5,19 +5,15 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
class EmailsOnPushService < Service
|
||||
prop_accessor :recipients
|
||||
validates :recipients, presence: true, if: :activated?
|
||||
|
||||
def title
|
||||
|
||||
@@ -5,21 +5,17 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
require "flowdock-git-hook"
|
||||
|
||||
class FlowdockService < Service
|
||||
prop_accessor :token
|
||||
validates :token, presence: true, if: :activated?
|
||||
|
||||
def title
|
||||
|
||||
@@ -5,21 +5,17 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
require "gemnasium/gitlab_service"
|
||||
|
||||
class GemnasiumService < Service
|
||||
prop_accessor :token, :api_key
|
||||
validates :token, :api_key, presence: true, if: :activated?
|
||||
|
||||
def title
|
||||
|
||||
@@ -5,19 +5,15 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# property :text
|
||||
#
|
||||
|
||||
class GitlabCiService < CiService
|
||||
prop_accessor :project_url, :token
|
||||
validates :project_url, presence: true, if: :activated?
|
||||
validates :token, presence: true, if: :activated?
|
||||
|
||||
|
||||
@@ -5,21 +5,17 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
class HipchatService < Service
|
||||
MAX_COMMITS = 3
|
||||
|
||||
prop_accessor :token, :room
|
||||
validates :token, presence: true, if: :activated?
|
||||
|
||||
def title
|
||||
|
||||
@@ -5,21 +5,17 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
class PivotaltrackerService < Service
|
||||
include HTTParty
|
||||
|
||||
prop_accessor :token
|
||||
validates :token, presence: true, if: :activated?
|
||||
|
||||
def title
|
||||
|
||||
@@ -5,19 +5,15 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
class SlackService < Service
|
||||
prop_accessor :room, :subdomain, :token
|
||||
validates :room, presence: true, if: :activated?
|
||||
validates :subdomain, presence: true, if: :activated?
|
||||
validates :token, presence: true, if: :activated?
|
||||
|
||||
+20
-7
@@ -5,22 +5,19 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
#
|
||||
# properties :text
|
||||
|
||||
# To add new service you should build a class inherited from Service
|
||||
# and implement a set of methods
|
||||
class Service < ActiveRecord::Base
|
||||
serialize :properties, JSON
|
||||
|
||||
default_value_for :active, false
|
||||
default_value_for :properties, {}
|
||||
|
||||
belongs_to :project
|
||||
has_one :service_hook
|
||||
@@ -63,4 +60,20 @@ class Service < ActiveRecord::Base
|
||||
def can_test?
|
||||
!project.empty_repo?
|
||||
end
|
||||
|
||||
# Provide convenient accessor methods
|
||||
# for each serialized property.
|
||||
def self.prop_accessor(*args)
|
||||
args.each do |arg|
|
||||
class_eval %{
|
||||
def #{arg}
|
||||
properties['#{arg}']
|
||||
end
|
||||
|
||||
def #{arg}=(value)
|
||||
self.properties['#{arg}'] = value
|
||||
end
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
class SerializeServiceProperties < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :services, :properties, :text
|
||||
|
||||
associations =
|
||||
{
|
||||
AssemblaService: [:token, :subdomain],
|
||||
CampfireService: [:token, :subdomain, :room],
|
||||
EmailsOnPushService: [:recipients],
|
||||
FlowdockService: [:token],
|
||||
GemnasiumService: [:api_key, :token],
|
||||
GitlabCiService: [:token, :project_url],
|
||||
HipchatService: [:token, :room],
|
||||
PivotaltrackerService: [:token],
|
||||
SlackService: [:subdomain, :token, :room],
|
||||
JenkinsService: [:token, :subdomain],
|
||||
JiraService: [:project_url, :username, :password,
|
||||
:api_version, :jira_issue_transition_id],
|
||||
}
|
||||
|
||||
Service.all.each do |service|
|
||||
associations[service.type.to_sym].each do |attribute|
|
||||
service.send("#{attribute}=", service.attributes[attribute.to_s])
|
||||
end
|
||||
service.save!
|
||||
end
|
||||
|
||||
remove_column :services, :project_url, :string
|
||||
remove_column :services, :subdomain, :string
|
||||
remove_column :services, :room, :string
|
||||
remove_column :services, :recipients, :text
|
||||
remove_column :services, :api_key, :string
|
||||
remove_column :services, :token, :string
|
||||
end
|
||||
end
|
||||
+4
-9
@@ -11,7 +11,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20140903115954) do
|
||||
ActiveRecord::Schema.define(version: 20140907220153) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
@@ -265,16 +265,11 @@ ActiveRecord::Schema.define(version: 20140903115954) do
|
||||
create_table "services", force: true do |t|
|
||||
t.string "type"
|
||||
t.string "title"
|
||||
t.string "token"
|
||||
t.integer "project_id", null: false
|
||||
t.integer "project_id", null: false
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.boolean "active", default: false, null: false
|
||||
t.string "project_url"
|
||||
t.string "subdomain"
|
||||
t.string "room"
|
||||
t.text "recipients"
|
||||
t.string "api_key"
|
||||
t.boolean "active", default: false, null: false
|
||||
t.text "properties"
|
||||
end
|
||||
|
||||
add_index "services", ["project_id"], name: "index_services_on_project_id", using: :btree
|
||||
|
||||
@@ -165,7 +165,6 @@ FactoryGirl.define do
|
||||
factory :service do
|
||||
type ""
|
||||
title "GitLab CI"
|
||||
token "x56olispAND34ng"
|
||||
project
|
||||
end
|
||||
|
||||
|
||||
@@ -5,16 +5,11 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
@@ -5,16 +5,11 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
@@ -5,16 +5,11 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
@@ -5,16 +5,11 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
@@ -5,16 +5,11 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
@@ -5,16 +5,11 @@
|
||||
# id :integer not null, primary key
|
||||
# type :string(255)
|
||||
# title :string(255)
|
||||
# token :string(255)
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# active :boolean default(FALSE), not null
|
||||
# project_url :string(255)
|
||||
# subdomain :string(255)
|
||||
# room :string(255)
|
||||
# recipients :text
|
||||
# api_key :string(255)
|
||||
# properties :text
|
||||
#
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
Reference in New Issue
Block a user