debian-mirror-gitlab/lib/ci/api/builds.rb
2015-09-25 12:07:36 +05:30

53 lines
1.4 KiB
Ruby

module Ci
module API
# Builds API
class Builds < Grape::API
resource :builds do
# Runs oldest pending build by runner - Runners only
#
# Parameters:
# token (required) - The uniq token of runner
#
# Example Request:
# POST /builds/register
post "register" do
authenticate_runner!
update_runner_last_contact
required_attributes! [:token]
not_found! unless current_runner.active?
build = Ci::RegisterBuildService.new.execute(current_runner)
if build
update_runner_info
present build, with: Entities::Build
else
not_found!
end
end
# Update an existing build - Runners only
#
# Parameters:
# id (required) - The ID of a project
# state (optional) - The state of a build
# trace (optional) - The trace of a build
# Example Request:
# PUT /builds/:id
put ":id" do
authenticate_runner!
update_runner_last_contact
build = Ci::Build.where(runner_id: current_runner.id).running.find(params[:id])
build.update_attributes(trace: params[:trace]) if params[:trace]
case params[:state].to_s
when 'success'
build.success
when 'failed'
build.drop
end
end
end
end
end
end