diff --git a/app/controllers/quality_analysis_controller.rb b/app/controllers/quality_analysis_controller.rb index 0eff67be7..21e094407 100644 --- a/app/controllers/quality_analysis_controller.rb +++ b/app/controllers/quality_analysis_controller.rb @@ -1,46 +1,55 @@ class QualityAnalysisController < ApplicationController before_filter :find_project_by_project_id#, :except => [:getattachtype] + before_filter :authorize layout "base_projects" include ApplicationHelper require 'jenkins_api_client' require 'nokogiri' + require 'json' + require 'open-uri' def new end def create + @client = JenkinsApi::Client.new(:server_url => 'http://123.59.135.93:8890', + :username => "temp", + :password => '123123') + #@client.exists?(job_name) + @g = Gitlab.client gitlab_address = Redmine::Configuration['gitlab_address'] user_name = User.find(params[:user_id]).try(:login) branch = params[:branch].nil? ? "master" : params[:branch] language = params[:language] path = params[:path] - properties = "sonar.projectKey=#{user_name}:#{@project.name} - sonar.projectName=My #{@project.name} - sonar.projectVersion=1.11 + identifier = params[:identifier] + properties = "sonar.projectKey=#{user_name}:#{identifier} + sonar.projectName=#{user_name}:#{identifier} + sonar.projectVersion=1.0 sonar.sources=#{path} - sonar.language=#{language} + sonar.language=#{language.downcase} sonar.sourceEncoding=utf-8" - git_url = gitlab_address.to_s+"/"+@project.owner.to_s+"/"+@repository.identifier+"."+"git" - @client = JenkinsApi::Client.new(:server_url => 'http://123.59.135.93:8890', - :username => user_name, - :password => '') + git_url = gitlab_address.to_s+"/"+@project.owner.to_s+"/"+ identifier+"."+"git" - # modify config + + # # modify config @doc = Nokogiri::XML(File.open(File.join(Rails.root, 'tmp', 'config.xml'))) @doc.at_xpath("//hudson.plugins.git.UserRemoteConfig/url").content = git_url @doc.at_xpath("//hudson.plugins.git.BranchSpec/name").content = "*/#{branch}" - @doc.at_xpath("//hudson.plugins.git.BranchSpec/properties").content = properties - sonar_properties = @doc.xpath("//hudson.plugins.sonar.SonarRunnerBuilder/properties").text #sonar-properties + @doc.at_xpath("//hudson.plugins.sonar.SonarRunnerBuilder/properties").content = properties #sonar-properties # replace config.xml of jenkins - @client = @client.job.create("tesc_create", File.read(File.join(Rails.root, 'tmp', 'config.xml'))) - - + @client = @client.job.create("#{user_name}_#{identifier}", @doc.to_xml) + # relace gitlab hook + # genkins address + @g.add_project_hook(@project.gpid,"http://123.59.135.93:8890/project/#{user_name}_#{identifier}") end def index - + data = open('http://123.59.135.93:8891/api/resources/index?resource=my:project985&depth=-1&metrics=complexity,class_complexity,lines,comment_lines,blocker_violations').read + cc=JSON.parse(data) + p cc end # Find project of id params[:project_id] @@ -49,4 +58,14 @@ class QualityAnalysisController < ApplicationController rescue ActiveRecord::RecordNotFound render_404 end + + # Authorize the user for the requested action + def authorize(ctrl = params[:controller], action = params[:action], global = false) + unless @project.archived? && @project.gpid.nil? + true + else + render_403 :message => :notice_not_authorized_archived_project + end + end + end diff --git a/config.xml b/config.xml deleted file mode 100644 index 7e0029986..000000000 --- a/config.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - false - - - trustie-gitlab - - - - 2 - - - http://192.168.8.158:8889/root/badboy.git - - - - - */master - - - false - - - - true - false - false - false - - - - true - true - never - true - true - true - false - true - All - - - - false - - - false - - - - - sonar.projectKey=my:project985 - sonar.projectName=My project985 - sonar.projectVersion=1.11 - sonar.sources=src - sonar.language=java - sonar.sourceEncoding=utf-8 - - - - (Inherit From Job) - - - - - -