summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-09-25 18:34:50 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-09-25 18:34:50 +0300
commitb6adabb45da1413db2c9c6585ff69fa4e40d05fe (patch)
tree6c5e876c457924c294d36ae1520eaaf2e75c39af
parent7bb03a536a33b4e61f75b62e060c4b174b798f69 (diff)
parent82f3446fde4c6c0507e1752152b9e3be68ae4aa8 (diff)
downloadgitlab-ce-b6adabb45da1413db2c9c6585ff69fa4e40d05fe.tar.gz
Merge branch '6-1-stable'
Conflicts: lib/tasks/gitlab/check.rake
-rw-r--r--app/models/pivotaltracker_service.rb59
-rw-r--r--app/models/project.rb3
-rw-r--r--features/project/service.feature6
-rw-r--r--features/steps/project/project_services.rb14
-rw-r--r--lib/tasks/gitlab/check.rake29
5 files changed, 109 insertions, 2 deletions
diff --git a/app/models/pivotaltracker_service.rb b/app/models/pivotaltracker_service.rb
new file mode 100644
index 00000000000..f28e142da77
--- /dev/null
+++ b/app/models/pivotaltracker_service.rb
@@ -0,0 +1,59 @@
+# == Schema Information
+#
+# Table name: services
+#
+# id :integer not null, primary key
+# type :string(255)
+# title :string(255)
+# token :string(255)
+# project_id :integer not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# active :boolean default(FALSE), not null
+#
+
+class PivotaltrackerService < Service
+ include HTTParty
+
+ validates :token, presence: true, if: :activated?
+
+ def title
+ 'PivotalTracker'
+ end
+
+ def description
+ 'Project Management Software (Source Commits Endpoint)'
+ end
+
+ def to_param
+ 'pivotaltracker'
+ end
+
+ def fields
+ [
+ { type: 'text', name: 'token', placeholder: '' }
+ ]
+ end
+
+ def execute(push)
+ url = 'https://www.pivotaltracker.com/services/v5/source_commits'
+ push[:commits].each do |commit|
+ message = {
+ 'source_commit' => {
+ 'commit_id' => commit[:id],
+ 'author' => commit[:author][:name],
+ 'url' => commit[:url],
+ 'message' => commit[:message]
+ }
+ }
+ PivotaltrackerService.post(
+ url,
+ body: message.to_json,
+ headers: {
+ 'Content-Type' => 'application/json',
+ 'X-TrackerToken' => token
+ }
+ )
+ end
+ end
+end
diff --git a/app/models/project.rb b/app/models/project.rb
index f4d915179e8..63cd3505ec4 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -46,6 +46,7 @@ class Project < ActiveRecord::Base
has_one :last_event, class_name: 'Event', order: 'events.created_at DESC', foreign_key: 'project_id'
has_one :gitlab_ci_service, dependent: :destroy
has_one :campfire_service, dependent: :destroy
+ has_one :pivotaltracker_service, dependent: :destroy
has_one :hipchat_service, dependent: :destroy
has_one :forked_project_link, dependent: :destroy, foreign_key: "forked_to_project_id"
has_one :forked_from_project, through: :forked_project_link
@@ -220,7 +221,7 @@ class Project < ActiveRecord::Base
end
def available_services_names
- %w(gitlab_ci campfire hipchat)
+ %w(gitlab_ci campfire hipchat pivotaltracker)
end
def gitlab_ci?
diff --git a/features/project/service.feature b/features/project/service.feature
index 6bb0c3e2c57..e685c385d1d 100644
--- a/features/project/service.feature
+++ b/features/project/service.feature
@@ -18,3 +18,9 @@ Feature: Project Services
And I click hipchat service link
And I fill hipchat settings
Then I should see hipchat service settings saved
+
+ Scenario: Activate pivotaltracker service
+ When I visit project "Shop" services page
+ And I click pivotaltracker service link
+ And I fill pivotaltracker settings
+ Then I should see pivotaltracker service settings saved
diff --git a/features/steps/project/project_services.rb b/features/steps/project/project_services.rb
index 10feb8ea8be..a24100ff8c0 100644
--- a/features/steps/project/project_services.rb
+++ b/features/steps/project/project_services.rb
@@ -44,4 +44,18 @@ class ProjectServices < Spinach::FeatureSteps
find_field('Room').value.should == 'gitlab'
end
+
+ And 'I click pivotaltracker service link' do
+ click_link 'PivotalTracker'
+ end
+
+ And 'I fill pivotaltracker settings' do
+ check 'Active'
+ fill_in 'Token', with: 'verySecret'
+ click_button 'Save'
+ end
+
+ Then 'I should see pivotaltracker service settings saved' do
+ find_field('Token').value.should == 'verySecret'
+ end
end
diff --git a/lib/tasks/gitlab/check.rake b/lib/tasks/gitlab/check.rake
index 72a6743ee72..346712e1321 100644
--- a/lib/tasks/gitlab/check.rake
+++ b/lib/tasks/gitlab/check.rake
@@ -22,6 +22,7 @@ namespace :gitlab do
check_tmp_writable
check_init_script_exists
check_init_script_up_to_date
+ check_projects_have_namespace
check_satellites_exist
check_redis_version
check_git_version
@@ -570,6 +571,32 @@ namespace :gitlab do
end
end
+ def check_projects_have_namespace
+ print "projects have namespace: ... "
+
+ unless Project.count > 0
+ puts "can't check, you have no projects".magenta
+ return
+ end
+ puts ""
+
+ Project.find_each(batch_size: 100) do |project|
+ print "#{project.name_with_namespace.yellow} ... "
+
+ if project.namespace
+ puts "yes".green
+ else
+ puts "no".red
+ try_fixing_it(
+ "Migrate global projects"
+ )
+ for_more_information(
+ "doc/update/5.4-to-6.0.md in section \"#global-projects\""
+ )
+ fix_and_rerun
+ end
+ end
+ end
# Helper methods
########################
@@ -677,7 +704,7 @@ namespace :gitlab do
end
def check_gitlab_shell
- required_version = Gitlab::VersionInfo.new(1, 7, 0)
+ required_version = Gitlab::VersionInfo.new(1, 7, 1)
current_version = Gitlab::VersionInfo.parse(gitlab_shell_version)
print "GitLab Shell version >= #{required_version} ? ... "