expose 'only_allow_merge_if_build_succeeds' project setting in the API
This commit is contained in:
parent
02591b0430
commit
31b2c1ef88
6 changed files with 53 additions and 12 deletions
|
@ -4,6 +4,7 @@ v 8.12.0 (unreleased)
|
|||
- Change merge_error column from string to text type
|
||||
- Optimistic locking for Issues and Merge Requests (title and description overriding prevention)
|
||||
- Added tests for diff notes
|
||||
- Added 'only_allow_merge_if_build_succeeds' project setting in the API. !5930 (Duck)
|
||||
|
||||
v 8.11.1 (unreleased)
|
||||
- Fix file links on project page when default view is Files !5933
|
||||
|
|
|
@ -84,7 +84,8 @@ Parameters:
|
|||
"star_count": 0,
|
||||
"runners_token": "b8547b1dc37721d05889db52fa2f02",
|
||||
"public_builds": true,
|
||||
"shared_with_groups": []
|
||||
"shared_with_groups": [],
|
||||
"only_allow_merge_if_build_succeeds": false
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
|
@ -144,7 +145,8 @@ Parameters:
|
|||
"star_count": 0,
|
||||
"runners_token": "b8547b1dc37721d05889db52fa2f02",
|
||||
"public_builds": true,
|
||||
"shared_with_groups": []
|
||||
"shared_with_groups": [],
|
||||
"only_allow_merge_if_build_succeeds": false
|
||||
}
|
||||
]
|
||||
```
|
||||
|
@ -280,7 +282,8 @@ Parameters:
|
|||
"group_name": "Gitlab Org",
|
||||
"group_access_level": 10
|
||||
}
|
||||
]
|
||||
],
|
||||
"only_allow_merge_if_build_succeeds": false
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -448,6 +451,7 @@ Parameters:
|
|||
- `visibility_level` (optional)
|
||||
- `import_url` (optional)
|
||||
- `public_builds` (optional)
|
||||
- `only_allow_merge_if_build_succeeds` (optional)
|
||||
|
||||
### Create project for user
|
||||
|
||||
|
@ -473,6 +477,7 @@ Parameters:
|
|||
- `visibility_level` (optional)
|
||||
- `import_url` (optional)
|
||||
- `public_builds` (optional)
|
||||
- `only_allow_merge_if_build_succeeds` (optional)
|
||||
|
||||
### Edit project
|
||||
|
||||
|
@ -499,6 +504,7 @@ Parameters:
|
|||
- `public` (optional) - if `true` same as setting visibility_level = 20
|
||||
- `visibility_level` (optional)
|
||||
- `public_builds` (optional)
|
||||
- `only_allow_merge_if_build_succeeds` (optional)
|
||||
|
||||
On success, method returns 200 with the updated project. If parameters are
|
||||
invalid, 400 is returned.
|
||||
|
@ -577,7 +583,8 @@ Example response:
|
|||
"forks_count": 0,
|
||||
"star_count": 1,
|
||||
"public_builds": true,
|
||||
"shared_with_groups": []
|
||||
"shared_with_groups": [],
|
||||
"only_allow_merge_if_build_succeeds": false
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -643,7 +650,8 @@ Example response:
|
|||
"forks_count": 0,
|
||||
"star_count": 0,
|
||||
"public_builds": true,
|
||||
"shared_with_groups": []
|
||||
"shared_with_groups": [],
|
||||
"only_allow_merge_if_build_succeeds": false
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -729,7 +737,8 @@ Example response:
|
|||
"star_count": 0,
|
||||
"runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b",
|
||||
"public_builds": true,
|
||||
"shared_with_groups": []
|
||||
"shared_with_groups": [],
|
||||
"only_allow_merge_if_build_succeeds": false
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -815,7 +824,8 @@ Example response:
|
|||
"star_count": 0,
|
||||
"runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b",
|
||||
"public_builds": true,
|
||||
"shared_with_groups": []
|
||||
"shared_with_groups": [],
|
||||
"only_allow_merge_if_build_succeeds": false
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -90,6 +90,7 @@ module API
|
|||
expose :shared_with_groups do |project, options|
|
||||
SharedGroup.represent(project.project_group_links.all, options)
|
||||
end
|
||||
expose :only_allow_merge_if_build_succeeds
|
||||
end
|
||||
|
||||
class Member < UserBasic
|
||||
|
|
|
@ -123,7 +123,8 @@ module API
|
|||
:public,
|
||||
:visibility_level,
|
||||
:import_url,
|
||||
:public_builds]
|
||||
:public_builds,
|
||||
:only_allow_merge_if_build_succeeds]
|
||||
attrs = map_public_to_visibility_level(attrs)
|
||||
@project = ::Projects::CreateService.new(current_user, attrs).execute
|
||||
if @project.saved?
|
||||
|
@ -172,7 +173,8 @@ module API
|
|||
:public,
|
||||
:visibility_level,
|
||||
:import_url,
|
||||
:public_builds]
|
||||
:public_builds,
|
||||
:only_allow_merge_if_build_succeeds]
|
||||
attrs = map_public_to_visibility_level(attrs)
|
||||
@project = ::Projects::CreateService.new(user, attrs).execute
|
||||
if @project.saved?
|
||||
|
@ -234,7 +236,8 @@ module API
|
|||
:shared_runners_enabled,
|
||||
:public,
|
||||
:visibility_level,
|
||||
:public_builds]
|
||||
:public_builds,
|
||||
:only_allow_merge_if_build_succeeds]
|
||||
attrs = map_public_to_visibility_level(attrs)
|
||||
authorize_admin_project
|
||||
authorize! :rename_project, user_project if attrs[:name].present?
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -224,7 +224,8 @@ describe API::API, api: true do
|
|||
description: FFaker::Lorem.sentence,
|
||||
issues_enabled: false,
|
||||
merge_requests_enabled: false,
|
||||
wiki_enabled: false
|
||||
wiki_enabled: false,
|
||||
only_allow_merge_if_build_succeeds: false
|
||||
})
|
||||
|
||||
post api('/projects', user), project
|
||||
|
@ -276,6 +277,18 @@ describe API::API, api: true do
|
|||
expect(json_response['visibility_level']).to eq(Gitlab::VisibilityLevel::PRIVATE)
|
||||
end
|
||||
|
||||
it 'sets a project as allowing merge even if build fails' do
|
||||
project = attributes_for(:project, { only_allow_merge_if_build_succeeds: false })
|
||||
post api('/projects', user), project
|
||||
expect(json_response['only_allow_merge_if_build_succeeds']).to be_falsey
|
||||
end
|
||||
|
||||
it 'sets a project as allowing merge only if build succeeds' do
|
||||
project = attributes_for(:project, { only_allow_merge_if_build_succeeds: true })
|
||||
post api('/projects', user), project
|
||||
expect(json_response['only_allow_merge_if_build_succeeds']).to be_truthy
|
||||
end
|
||||
|
||||
context 'when a visibility level is restricted' do
|
||||
before do
|
||||
@project = attributes_for(:project, { public: true })
|
||||
|
@ -384,6 +397,18 @@ describe API::API, api: true do
|
|||
expect(json_response['public']).to be_falsey
|
||||
expect(json_response['visibility_level']).to eq(Gitlab::VisibilityLevel::PRIVATE)
|
||||
end
|
||||
|
||||
it 'sets a project as allowing merge even if build fails' do
|
||||
project = attributes_for(:project, { only_allow_merge_if_build_succeeds: false })
|
||||
post api("/projects/user/#{user.id}", admin), project
|
||||
expect(json_response['only_allow_merge_if_build_succeeds']).to be_falsey
|
||||
end
|
||||
|
||||
it 'sets a project as allowing merge only if build succeeds' do
|
||||
project = attributes_for(:project, { only_allow_merge_if_build_succeeds: true })
|
||||
post api("/projects/user/#{user.id}", admin), project
|
||||
expect(json_response['only_allow_merge_if_build_succeeds']).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
describe "POST /projects/:id/uploads" do
|
||||
|
@ -444,6 +469,7 @@ describe API::API, api: true do
|
|||
expect(json_response['shared_with_groups'][0]['group_id']).to eq(group.id)
|
||||
expect(json_response['shared_with_groups'][0]['group_name']).to eq(group.name)
|
||||
expect(json_response['shared_with_groups'][0]['group_access_level']).to eq(link.group_access)
|
||||
expect(json_response['only_allow_merge_if_build_succeeds']).to eq(project.only_allow_merge_if_build_succeeds)
|
||||
end
|
||||
|
||||
it 'returns a project by path name' do
|
||||
|
|
Loading…
Reference in a new issue