기능 플래그 API
Tier: Free, Premium, Ultimate
Offering: Self-Managed
이 API는 GitLab 개발에서 사용되는 플리퍼 기반 기능 플래그를 관리하기 위한 것입니다.
모든 메서드는 관리자 권한이 필요합니다.
현재 API에서는 부울값과 시간의 백분율 게이트 값을 지원합니다.
모든 기능 나열
모든 지속적인 기능을 게이트 값과 함께 나열합니다.
GET /features
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/features"
예시 응답:
[
{
"name": "experimental_feature",
"state": "off",
"gates": [
{
"key": "boolean",
"value": false
}
],
"definition": null
},
{
"name": "my_user_feature",
"state": "on",
"gates": [
{
"key": "percentage_of_actors",
"value": 34
}
],
"definition": {
"name": "my_user_feature",
"introduced_by_url": "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40880",
"rollout_issue_url": "https://gitlab.com/gitlab-org/gitlab/-/issues/244905",
"group": "group::ci",
"type": "development",
"default_enabled": false
}
},
{
"name": "new_library",
"state": "on",
"gates": [
{
"key": "boolean",
"value": true
}
],
"definition": null
}
]
모든 기능 정의 나열
모든 기능 정의를 나열합니다.
GET /features/definitions
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/features/definitions"
예시 응답:
[
{
"name": "geo_pages_deployment_replication",
"introduced_by_url": "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68662",
"rollout_issue_url": "https://gitlab.com/gitlab-org/gitlab/-/issues/337676",
"milestone": "14.3",
"log_state_changes": null,
"type": "development",
"group": "group::geo",
"default_enabled": true
}
]
기능 설정 또는 생성
기능의 게이트 값을 설정합니다. 주어진 이름의 기능이 아직 존재하지 않은 경우 생성됩니다. 값을 부울값 또는 시간의 백분율로 지정할 수 있습니다.
경고: 아직 개발 중인 기능을 활성화하기 전에 보안 및 안정성 리스크를 이해해야 합니다.
POST /features/:name
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
name
| 문자열 | 예 | 생성 또는 업데이트할 기능의 이름 |
value
| 정수/문자열 | 예 | 활성화/비활성화를 위해 true 또는 false 또는 시간의 백분율을 나타내는 정수
|
key
| 문자열 | 아니오 |
percentage_of_actors 또는 percentage_of_time (기본값)
|
feature_group
| 문자열 | 아니오 | 기능 그룹 이름 |
user
| 문자열 | 아니오 | GitLab 사용자명 또는 쉼표로 구분된 여러 사용자명 |
group
| 문자열 | 아니오 | GitLab 그룹 경로, 예: gitlab-org , 또는 쉼표로 구분된 여러 그룹 경로
|
namespace
| 문자열 | 아니오 | GitLab 그룹 또는 사용자 네임스페이스 경로, 예: john-doe , 또는 쉼표로 구분된 여러 네임스페이스 경로. GitLab 15.0에서 도입됨.
|
project
| 문자열 | 아니오 | 프로젝트 경로, 예: gitlab-org/gitlab-foss , 또는 쉼표로 구분된 여러 프로젝트 경로
|
repository
| 문자열 | 아니오 | 리포지토리 경로, 예: gitlab-org/gitlab-test.git , gitlab-org/gitlab-test.wiki.git , snippets/21.git 등. 여러 리포지토리 경로를 구분하는 데 쉼표를 사용합니다.
|
force
| 부울 | 아니오 | YAML 정의와 같은 기능 플래그 유효성 검사 확인을 건너뛸지 여부 |
단일 API 호출에서 feature_group , user , group , namespace , project , repository 에 대해 기능을 활성화 또는 비활성화할 수 있습니다.
|
curl --data "value=30" --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/features/new_library"
예시 응답:
{
"name": "new_library",
"state": "conditional",
"gates": [
{
"key": "boolean",
"value": false
},
{
"key": "percentage_of_time",
"value": 30
}
],
"definition": {
"name": "my_user_feature",
"introduced_by_url": "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40880",
"rollout_issue_url": "https://gitlab.com/gitlab-org/gitlab/-/issues/244905",
"group": "group::ci",
"type": "development",
"default_enabled": false
}
}
배우 롤아웃의 백분율 설정
배우의 백분율로 롤아웃합니다.
POST https://gitlab.example.com/api/v4/features/my_user_feature?private_token=<your_access_token>
Content-Type: application/x-www-form-urlencoded
value=42&key=percentage_of_actors&
예시 응답:
{
"name": "my_user_feature",
"state": "conditional",
"gates": [
{
"key": "boolean",
"value": false
},
{
"key": "percentage_of_actors",
"value": 42
}
],
"definition": {
"name": "my_user_feature",
"introduced_by_url": "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40880",
"rollout_issue_url": "https://gitlab.com/gitlab-org/gitlab/-/issues/244905",
"group": "group::ci",
"type": "development",
"default_enabled": false
}
}
my_user_feature
를 배우의 42%
에 롤아웃합니다.
기능 삭제
기능 게이트를 제거합니다. 게이트가 있는지 여부에 관계없이 응답이 동일합니다.
DELETE /features/:name