From ca8952581aed3413364446dd6f355fd39e4e4c6c Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 8 Jun 2018 17:00:10 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=B7=BB=E5=8A=A0=E8=AF=AD?= =?UTF-8?q?=E8=A8=80=E9=85=8D=E7=BD=AE/Jenkins=E5=88=86=E6=9E=90=E5=92=8CM?= =?UTF-8?q?erge=20Request=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 1 + app/controllers/pull_requests_controller.rb | 25 +++++++++---------- .../quality_analysis_controller.rb | 13 ---------- app/helpers/application_helper.rb | 13 ++++++++++ .../projects/settings/_new_edit.html.erb | 6 ++++- ...20180608080957_add_language_to_projects.rb | 5 ++++ 6 files changed, 36 insertions(+), 27 deletions(-) create mode 100644 db/migrate/20180608080957_add_language_to_projects.rb diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 79ef6faa0..a289f4f55 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -743,6 +743,7 @@ class ProjectsController < ApplicationController def update @project.safe_attributes = params[:project] + @project.language = params[:language].try(:strip) @project.organization_id = params[:organization_id] params[:project][:is_public] == "on" ? @project.is_public = 1 : @project.is_public = 0 params[:project][:hidden_repo] == "on" ? @project.hidden_repo = 1 : @project.hidden_repo = 0 diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index f5b7b41ac..127ed00f7 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -103,16 +103,15 @@ class PullRequestsController < ApplicationController job_name = "pr-" + "#{Time.now.to_i}" # 如果分支有改动 if compare_pull_request(source_branch, target_project_id, target_branch) - if @project.try(:id).to_i == 4665 - logger.info("2222222222222222222222") - # 自动生成配置Jenkinsjob,在merge事件的时候触发jenkins、sonar - # merge发送的时候还没有接收,所以分析对象应该源项目 - exec_jenkins(source_branch, @project.gpid, git_url, job_name) - logger.info("33333333333333333333") - qa = QualityAnalysis.create(:project_id => @project.id, :author_login => User.current.login, :sonar_version => 1, :path => "./", - :branch => source_branch, :language => "java", :sonar_name => "#{job_name}") - logger.info("4444444444444444444444444") - end + logger.info("2222222222222222222222") + # 自动生成配置Jenkinsjob,在merge事件的时候触发jenkins、sonar + # merge发送的时候还没有接收,所以分析对象应该源项目 + language = swith_language_type(@project.language) + exec_jenkins(source_branch, @project.gpid, git_url, job_name, language) + logger.info("33333333333333333333") + qa = QualityAnalysis.create(:project_id => @project.id, :author_login => User.current.login, :sonar_version => 1, :path => "./", + :branch => source_branch, :language => "java", :sonar_name => "#{job_name}") + logger.info("4444444444444444444444444") # 如果传送了目标项目ID即向fork源项目发送请求 # if params[:forked_project_id] && params[:source_project] == "forked_project_name" @@ -149,8 +148,8 @@ class PullRequestsController < ApplicationController # end end - def exec_jenkins branch, gpid, git_url, job_name -# 发送PR之前先发送创建Jenkins Job、gitlab hook,调用sonar自动分析代码 + def exec_jenkins branch, gpid, git_url, job_name, language + # 发送PR之前先发送创建Jenkins Job、gitlab hook,调用sonar自动分析代码 logger.info("5555555555555555#{branch}, git_url#{git_url}, job_name #{job_name}") @jenkins_address = Redmine::Configuration['jenkins_address'] @@ -159,7 +158,7 @@ class PullRequestsController < ApplicationController # connect jenkins @client_jenkins = JenkinsApi::Client.new(:server_url => @jenkins_address, :username => jenkins_username, :password => jenkins_password) @g = Gitlab.client - language = "java" + language = language.present? ? language : "java" path = "./" # qa = QualityAnalysis.where(:project_id => @project.id, :author_login => user_name).first version = 1 diff --git a/app/controllers/quality_analysis_controller.rb b/app/controllers/quality_analysis_controller.rb index 612563321..c7b7ecd5d 100644 --- a/app/controllers/quality_analysis_controller.rb +++ b/app/controllers/quality_analysis_controller.rb @@ -144,19 +144,6 @@ class QualityAnalysisController < ApplicationController end end - # get language type - def swith_language_type language - if language == "c#" - "cs" - elsif language == "python" - "py" - elsif language == "c" - "c++" - else - language - end - end - def edit @g = Gitlab.client gitlab_branches = @g.branches(@project.gpid) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index b09b54615..65aa2a174 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -37,6 +37,19 @@ module ApplicationHelper # super # end + # get language type + def swith_language_type language + if language == "c#" + "cs" + elsif language == "python" + "py" + elsif language == "c" + "c++" + else + language + end + end + # 读取excel数据 def readData(xlsx) doc = SimpleXlsxReader.open(xlsx) diff --git a/app/views/projects/settings/_new_edit.html.erb b/app/views/projects/settings/_new_edit.html.erb index 4671ea1c1..004317c16 100644 --- a/app/views/projects/settings/_new_edit.html.erb +++ b/app/views/projects/settings/_new_edit.html.erb @@ -32,11 +32,15 @@ <% if !@project.gpid.nil? && !@gitlab_branches.blank? %> -
  • +
  • <%= select_tag :branch, options_for_select(["#{@gitlab_default_branch}"]+ @branch_names, @rev), :id => 'branch', :class => "ml5", :style => "height: 28px;" %>
  • <% end %> +
  • + + <%= select_tag :language, options_for_select(["","java","python","c#"], :selected => "#{@project.language}"), :id => 'language', :class => "ml5", :style => "height: 28px;" %> +
  • > diff --git a/db/migrate/20180608080957_add_language_to_projects.rb b/db/migrate/20180608080957_add_language_to_projects.rb new file mode 100644 index 000000000..200765825 --- /dev/null +++ b/db/migrate/20180608080957_add_language_to_projects.rb @@ -0,0 +1,5 @@ +class AddLanguageToProjects < ActiveRecord::Migration + def change + add_column :projects, :language, :string + end +end