项目添加语言配置/Jenkins分析和Merge Request关联

This commit is contained in:
huang 2018-06-08 17:00:10 +08:00
parent 26177f7154
commit ca8952581a
6 changed files with 36 additions and 27 deletions

View File

@ -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

View File

@ -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)
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")
end
# 如果传送了目标项目ID即向fork源项目发送请求
# if params[:forked_project_id] && params[:source_project] == "forked_project_name"
@ -149,7 +148,7 @@ class PullRequestsController < ApplicationController
# end
end
def exec_jenkins branch, gpid, git_url, job_name
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}")
@ -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

View File

@ -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)

View File

@ -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)

View File

@ -32,11 +32,15 @@
<!--<textarea class="fl ml5 w690" style="height:192px; padding-top:5px;" id="project_description" name="project[description]" rows="8" placeholder="项目描述作为项目的简介,将始终显示在动态页的顶部&#13;&#10;最多3000个汉字或6000个英文字符)"><%= @project.description%></textarea>-->
</li>
<% if !@project.gpid.nil? && !@gitlab_branches.blank? %>
<li class="clear">
<li class="clear mb10">
<label class="fl">&nbsp;默认分支&nbsp;&nbsp;</label>
<%= select_tag :branch, options_for_select(["#{@gitlab_default_branch}"]+ @branch_names, @rev), :id => 'branch', :class => "ml5", :style => "height: 28px;" %>
</li>
<% end %>
<li class="clear">
<label class="fl">&nbsp;语言&nbsp;&nbsp;</label>
<%= select_tag :language, options_for_select(["","java","python","c#"], :selected => "#{@project.language}"), :id => 'language', :class => "ml5", :style => "height: 28px;" %>
</li>
<li class="clear">
<label class="fl">公开&nbsp;&nbsp;</label>
<input class="fl mt8 ml5" id="project_is_public" name="project[is_public]" type="checkbox" <%= @project.is_public ? "checked" : ""%>>

View File

@ -0,0 +1,5 @@
class AddLanguageToProjects < ActiveRecord::Migration
def change
add_column :projects, :language, :string
end
end