Add Play endpoints on Builds
This commit is contained in:
parent
15b441f367
commit
fffe5c2b57
3 changed files with 46 additions and 0 deletions
|
@ -30,6 +30,7 @@ v 8.11.0 (unreleased)
|
||||||
- Expand commit message width in repo view (ClemMakesApps)
|
- Expand commit message width in repo view (ClemMakesApps)
|
||||||
- Cache highlighted diff lines for merge requests
|
- Cache highlighted diff lines for merge requests
|
||||||
- Pre-create all builds for a Pipeline when the new Pipeline is created !5295
|
- Pre-create all builds for a Pipeline when the new Pipeline is created !5295
|
||||||
|
- Add Play endpoint on Builds
|
||||||
- Fix of 'Commits being passed to custom hooks are already reachable when using the UI'
|
- Fix of 'Commits being passed to custom hooks are already reachable when using the UI'
|
||||||
- Show member roles to all users on members page
|
- Show member roles to all users on members page
|
||||||
- Project.visible_to_user is instrumented again
|
- Project.visible_to_user is instrumented again
|
||||||
|
|
|
@ -189,6 +189,29 @@ module API
|
||||||
present build, with: Entities::Build,
|
present build, with: Entities::Build,
|
||||||
user_can_download_artifacts: can?(current_user, :read_build, user_project)
|
user_can_download_artifacts: can?(current_user, :read_build, user_project)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
desc 'Trigger a manual build' do
|
||||||
|
success Entities::Build
|
||||||
|
detail 'This feature was added in GitLab 8.11'
|
||||||
|
end
|
||||||
|
params do
|
||||||
|
requires :build_id, type: Integer, desc: 'The ID of a Build'
|
||||||
|
end
|
||||||
|
post ":id/builds/:build_id/play" do
|
||||||
|
authorize_read_builds!
|
||||||
|
|
||||||
|
build = get_build!(params[:build_id])
|
||||||
|
|
||||||
|
if build.playable?
|
||||||
|
build.play(current_user)
|
||||||
|
|
||||||
|
status 200
|
||||||
|
present build, with: Entities::Build,
|
||||||
|
user_can_download_artifacts: can?(current_user, :read_build, user_project)
|
||||||
|
else
|
||||||
|
bad_request!("Unplayable Build")
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
helpers do
|
helpers do
|
||||||
|
|
|
@ -407,4 +407,26 @@ describe API::API, api: true do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'POST /projects/:id/builds/:build_id/play' do
|
||||||
|
before do
|
||||||
|
post api("/projects/#{project.id}/builds/#{build.id}/play", user)
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'on an playable build' do
|
||||||
|
let(:build) { create(:ci_build, :manual, project: project, pipeline: pipeline) }
|
||||||
|
|
||||||
|
it 'plays the build' do
|
||||||
|
expect(response).to have_http_status 200
|
||||||
|
expect(json_response['user']['id']).to eq(user.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'on a non-playable build' do
|
||||||
|
it 'returns a status code 400, Bad Request' do
|
||||||
|
expect(response).to have_http_status 400
|
||||||
|
expect(response.body).to match("Unplayable Build")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue