challeng创建优化

This commit is contained in:
huang 2017-06-19 17:27:11 +08:00
parent 732ecc6145
commit f341cd232e
3 changed files with 20 additions and 27 deletions

View File

@ -42,19 +42,19 @@ class ChallengesController < ApplicationController
end
end
# 向jenkins端发送请求构建pipeline片段实时返回结果
jenkins_shixuns = Redmine::Configuration['jenkins_shixuns']
params = {:challengeStage => "#{@challenge.position}", :challengeType => "#{@challenge.evaluation_way.to_i}", :challengeProgramName => "#{@challenge.exec_path}", :trainingID => "#{@shixun.id}", :operationEnvironment => @shixun.language}
uri = URI("#{jenkins_shixuns}/jenkins-exec/game/generatePipelineScriptForChallenge")
res = uri_exec uri, {challengeInfo: params.to_json}
if res && res['code'] == 0
@challenge.update_attribute(:pipeline_script, res['msg'])
respond_to do |format|
format.html {redirect_to shixun_challenge_path(@challenge, :shixun_id => @shixun)}
end
else
logger.error("res['code'] is #{res['code']}, res['msg'] is #{res['msg']}")
raise("实训云平台繁忙繁忙等级116")
end
# jenkins_shixuns = Redmine::Configuration['jenkins_shixuns']
# params = {:challengeStage => "#{@challenge.position}", :challengeType => "#{@challenge.evaluation_way.to_i}", :challengeProgramName => "#{@challenge.exec_path}", :trainingID => "#{@shixun.id}", :operationEnvironment => @shixun.language}
# uri = URI("#{jenkins_shixuns}/jenkins-exec/game/generatePipelineScriptForChallenge")
# res = uri_exec uri, {challengeInfo: params.to_json}
# if res && res['code'] == 0
# @challenge.update_attribute(:pipeline_script, res['msg'])
# respond_to do |format|
# format.html {redirect_to shixun_challenge_path(@challenge, :shixun_id => @shixun)}
# end
# else
# logger.error("res['code'] is #{res['code']}, res['msg'] is #{res['msg']}")
# raise("实训云平台繁忙繁忙等级116")
# end
rescue Exception => e
flash[:error] = "#{e.message}"
redirect_to new_shixun_challenge_path(:shixun_id => @shixun)

View File

@ -171,20 +171,7 @@ class ShixunsController < ApplicationController
testSet = []
testCases = []
begin
challenges = @shixun.challenges.includes(:test_sets)
challenges.each do |challenge|
pipeline_script = challenge.try(:pipeline_script)
challenge_script = {:challengeStage => "#{challenge.position}", :challengePipeline => "#{pipeline_script}"}
fragments << challenge_script
# 每一关所有的测试集
challenge.test_sets.each do |test_set|
test_cases = {:caseId => test_set.id.to_s, :input => test_set.input, :output => test_set.output, :isPublic => (test_set.is_public ? "1" : "0")}
testSet << test_cases
end
test_sets_list = {:challengeStage => challenge.position.to_s, :challengeTestCases => testSet}
testCases << test_sets_list
testSet = []
end
testCases = @shixun.test_sets
gameInfo = {:trainingID => @shixun.id.to_s, :operationEnvironment => @shixun.language, :challengePipelines => fragments, :testCases => testCases}
uri = URI("#{jenkins_shixuns}/jenkins-exec/game/publishGame")
params = {gameInfo:gameInfo.to_json}
@ -197,6 +184,7 @@ class ShixunsController < ApplicationController
@jenkin_error = true
end
rescue Exception => e
@jenkin_error = true
logger.error("pushlish game #{e}")
respond_to do |format|
format.js

View File

@ -0,0 +1,5 @@
class AddIsModifiedToShixun < ActiveRecord::Migration
def change
add_column :shixuns, :is_updated, :integer, :default => 0, :limit => 1
end
end