You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.5 KiB
38 lines
1.5 KiB
namespace :jenkins do
|
|
namespace :myshixun do
|
|
desc "ping ce"
|
|
task :game_build => :environment do
|
|
100.times do
|
|
puts "start"
|
|
game = Game.find_by_identifier('lzwg7ute3ki5')
|
|
myshixun = game.myshixun
|
|
game_challenge = game.challenge
|
|
rep_identify = Repository.where(:myshixun_id => myshixun.id, :type => "Repository::Gitlab").first.try(:identifier)
|
|
gitlab_address = Redmine::Configuration['gitlab_address']
|
|
gitUrl = gitlab_address.to_s+"/"+myshixun.owner.to_s+"/"+ rep_identify + "."+"git"
|
|
gitUrl = Base64.encode64(gitUrl)
|
|
taskId = game.id
|
|
jobName = "myshixun_#{myshixun.id}"
|
|
if game.status == 2
|
|
game.update_attribute(:status, 0)
|
|
end
|
|
# 过关后重评不更新状态
|
|
jenkins_shixuns = Redmine::Configuration['jenkins_shixuns']
|
|
step = game_challenge.try(:position)
|
|
params = {:jobNameForInstance => "#{jobName}", :buildID => "#{taskId}", :step => "#{step}", :instanceGitURL => "#{gitUrl}", :instanceChallenge => "#{step}", :resubmit => nil}
|
|
uri = URI("#{jenkins_shixuns}/jenkins-exec/api/buildJobForInstance")
|
|
puts("post data time is #{Time.now}")
|
|
res = Net::HTTP.post_form(uri, params).body
|
|
res = JSON.parse(res)
|
|
puts("post data end time is #{Time.now}")
|
|
if (res && res['code'] != 0)
|
|
puts("error")
|
|
puts("current time is #{Time.now}")
|
|
end
|
|
puts("game over")
|
|
puts("waiting for 120s")
|
|
sleep(120);
|
|
end
|
|
end
|
|
end
|
|
end |