diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-09-25 18:34:50 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-09-25 18:34:50 +0300 |
commit | b6adabb45da1413db2c9c6585ff69fa4e40d05fe (patch) | |
tree | 6c5e876c457924c294d36ae1520eaaf2e75c39af | |
parent | 7bb03a536a33b4e61f75b62e060c4b174b798f69 (diff) | |
parent | 82f3446fde4c6c0507e1752152b9e3be68ae4aa8 (diff) | |
download | gitlab-ce-b6adabb45da1413db2c9c6585ff69fa4e40d05fe.tar.gz |
Merge branch '6-1-stable'
Conflicts:
lib/tasks/gitlab/check.rake
-rw-r--r-- | app/models/pivotaltracker_service.rb | 59 | ||||
-rw-r--r-- | app/models/project.rb | 3 | ||||
-rw-r--r-- | features/project/service.feature | 6 | ||||
-rw-r--r-- | features/steps/project/project_services.rb | 14 | ||||
-rw-r--r-- | lib/tasks/gitlab/check.rake | 29 |
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} ? ... " |