From 55972fdbe604bcb80e22072b54f1d07d71e79b9f Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 12 Apr 2017 13:36:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E5=AE=9E=E8=AE=AD=20--?= =?UTF-8?q?=E4=BA=8B=E5=8A=A1=E4=B8=80=E8=87=B4=E6=80=A7=E5=8F=8A=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/challenges_controller.rb | 32 +++++++++++++++++------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/app/controllers/challenges_controller.rb b/app/controllers/challenges_controller.rb index 15758b7fe..f40fefe13 100644 --- a/app/controllers/challenges_controller.rb +++ b/app/controllers/challenges_controller.rb @@ -25,7 +25,8 @@ class ChallengesController < ApplicationController @challenge.shixun = @shixun @challenge.user = User.current ActiveRecord::Base.transaction do - if @challenge.save + begin + @challenge.save! if params[:sample][:input].length > 0 params[:sample][:input].each_with_index do |value, index| unless (value == params[:sample][:output][index] && value.blank?) @@ -43,21 +44,34 @@ class ChallengesController < ApplicationController ChallengeTag.create(:name => input, :challenge_id => @challenge.id) end end - # 向jenkins端发送请求,构建pipeline片段 - params = {:shixunType => "#{@challenge.evaluation_way.to_i}", :filePath => "#{@challenge.path}", :step => "#{@challenge.position}"} - uri = URI("#{jenkins_shixuns}/jenkins-exec/api/generateScriptPerChallenge") - res = uri_exec uri, params + # 向jenkins端发送请求,构建pipeline片段,实时返回结果 + begin + jenkins_shixuns = Redmine::Configuration['jenkins_shixuns'] + params = {:shixunType => "#{@challenge.evaluation_way.to_i}", :filePath => "#{@challenge.path}", :step => "#{@challenge.position}", :challengeId => "#{@challenge.id}"} + uri = URI("#{jenkins_shixuns}/jenkins-exec/api/generateScriptPerChallenge") + res = uri_exec uri, params + if res.blank? + raise("jenkins服务器异常") + end + rescue + raise("jenkins服务器异常") + end respond_to do |format| format.html {redirect_to shixun_challenge_path(@challenge, :shixun_id => @shixun), notice: '创建成功!'} end - else - respond_to do |format| - format.html { render :action => 'new' } - end + rescue Exception => e + flash[:error] = "#{e.message}" + redirect_to new_shixun_challenge_path(:shixun_id => @shixun.id) + raise ActiveRecord::Rollback end end end + # 处理新建challenge返回的pipeline片段 + def fragment_from_jenkins + + end + def index # 顶部导航 @challenges = @shixun.challenges.order("position desc")