특징 플래그 API
Tier: Free, Premium, Ultimate
Offering: GitLab.com, Self-managed, GitLab Dedicated
- GitLab Premium 12.5에서 도입되었습니다.
- GitLab Free 13.5로 이동되었습니다.
GitLab feature flags의 리소스에 액세스하기 위한 API입니다.
최소한 개발자 역할을 가진 사용자는 특징 플래그 API에 액세스할 수 있습니다.
특징 플래그 페이지네이션
기본적으로 GET
요청은 한 번에 20개의 결과를 반환합니다. 이는 API 결과가 페이지별로 구분되기 때문입니다.
프로젝트용 특징 플래그 목록
요청된 프로젝트의 모든 특징 플래그를 가져옵니다.
GET /projects/:id/feature_flags
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 프로젝트의 ID 또는 URL-인코딩된 경로. |
scope
| 문자열 | 아니오 | 특징 플래그의 조건 중 하나: enabled , disabled .
|
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/feature_flags"
예시 응답:
[
{
"name":"merge_train",
"description":"이 기능은 머지 트레인에 관한 것입니다.",
"active": true,
"version": "new_version_flag",
"created_at":"2019-11-04T08:13:51.423Z",
"updated_at":"2019-11-04T08:13:51.423Z",
"scopes":[],
"strategies": [
{
"id": 1,
"name": "userWithId",
"parameters": {
"userIds": "user1"
},
"scopes": [
{
"id": 1,
"environment_scope": "production"
}
],
"user_list": null
}
]
},
{
"name":"new_live_trace",
"description":"이것은 새로운 라이브 트레이스 기능입니다.",
"active": true,
"version": "new_version_flag",
"created_at":"2019-11-04T08:13:10.507Z",
"updated_at":"2019-11-04T08:13:10.507Z",
"scopes":[],
"strategies": [
{
"id": 2,
"name": "default",
"parameters": {},
"scopes": [
{
"id": 2,
"environment_scope": "staging"
}
],
"user_list": null
}
]
},
{
"name":"user_list",
"description":"이 기능은 사용자 목록에 관한 것입니다.",
"active": true,
"version": "new_version_flag",
"created_at":"2019-11-04T08:13:10.507Z",
"updated_at":"2019-11-04T08:13:10.507Z",
"scopes":[],
"strategies": [
{
"id": 2,
"name": "gitlabUserList",
"parameters": {},
"scopes": [
{
"id": 2,
"environment_scope": "staging"
}
],
"user_list": {
"id": 1,
"iid": 1,
"name": "내 사용자 목록",
"user_xids": "user1,user2,user3"
}
}
]
}
]
단일 특징 플래그 가져오기
단일 특징 플래그를 가져옵니다.
GET /projects/:id/feature_flags/:feature_flag_name
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 프로젝트의 ID 또는 URL-인코딩된 경로. |
feature_flag_name
| 문자열 | 예 | 특징 플래그의 이름 |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature"
예시 응답:
{
"name": "awesome_feature",
"description": null,
"active": true,
"version": "new_version_flag",
"created_at": "2020-05-13T19:56:33.119Z",
"updated_at": "2020-05-13T19:56:33.119Z",
"scopes": [],
"strategies": [
{
"id": 36,
"name": "default",
"parameters": {},
"scopes": [
{
"id": 37,
"environment_scope": "production"
}
],
"user_list": null
}
]
}
기능 플래그 생성
새로운 기능 플래그를 생성합니다.
POST /projects/:id/feature_flags
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id
| integer/string | 예 | 프로젝트의 ID 또는 URL-encoded path입니다. |
name
| string | 예 | 기능 플래그의 이름입니다. |
version
| string | 예 |
Deprecated 기능 플래그의 버전입니다. new_version_flag 여야 합니다. 레거시 기능 플래그를 생성하려면 생략합니다.
|
description
| string | 아니요 | 기능 플래그의 설명입니다. |
active
| boolean | 아니요 | 플래그의 활성 상태입니다. 기본값은 true입니다. GitLab 13.3 이상에서 지원됩니다. |
strategies
| 전략 JSON 객체의 배열 | 아니요 | 기능 플래그의 전략입니다. |
strategies:name
| JSON | 아니요 | 전략의 이름입니다. default , gradualRolloutUserId , userWithId , 또는 gitlabUserList 일 수 있습니다. GitLab 13.5 이상에서는 flexibleRollout 일 수 있습니다.
|
strategies:parameters
| JSON | 아니요 | 전략의 매개변수입니다. |
strategies:scopes
| JSON | 아니요 | 전략의 범위입니다. |
strategies:scopes:environment_scope
| string | 아니요 | 범위의 환경 범위입니다. |
strategies:user_list_id
| integer/string | 아니요 | 전략이 gitlabUserList 인 경우의 기능 플래그 사용자 목록 ID입니다.
|
curl "https://gitlab.example.com/api/v4/projects/1/feature_flags" \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-type: application/json" \
--data @- << EOF
{
"name": "awesome_feature",
"version": "new_version_flag",
"strategies": [{ "name": "default", "parameters": {}, "scopes": [{ "environment_scope": "production" }] }]
}
EOF
예시 응답:
{
"name": "awesome_feature",
"description": null,
"active": true,
"version": "new_version_flag",
"created_at": "2020-05-13T19:56:33.119Z",
"updated_at": "2020-05-13T19:56:33.119Z",
"scopes": [],
"strategies": [
{
"id": 36,
"name": "default",
"parameters": {},
"scopes": [
{
"id": 37,
"environment_scope": "production"
}
]
}
]
}
기능 플래그 업데이트
기능 플래그를 업데이트합니다.
PUT /projects/:id/feature_flags/:feature_flag_name
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id
| integer/string | 예 | 프로젝트의 ID 또는 URL-encoded path입니다. |
feature_flag_name
| string | 예 | 기능 플래그의 현재 이름입니다. |
description
| string | 아니요 | 기능 플래그의 설명입니다. |
active
| boolean | 아니요 | 플래그의 활성 상태입니다. GitLab 13.3 이상에서 지원됩니다. |
name
| string | 아니요 | 기능 플래그의 새 이름입니다. GitLab 13.3 이상에서 지원됩니다. |
strategies
| 전략 JSON 객체의 배열 | 아니요 | 기능 플래그의 전략입니다. |
strategies:id
| JSON | 아니요 | 기능 플래그 전략 ID입니다. |
strategies:name
| JSON | 아니요 | 전략의 이름입니다. |
strategies:_destroy
| boolean | 아니요 | true이면 전략을 삭제합니다. |
strategies:parameters
| JSON | 아니요 | 전략의 매개변수입니다. |
strategies:scopes
| JSON | 아니요 | 전략의 범위입니다. |
strategies:scopes:id
| JSON | 아니요 | 범위의 환경 범위 ID입니다. |
strategies:scopes:environment_scope
| string | 아니요 | 범위의 환경 범위입니다. |
strategies:scopes:_destroy
| boolean | 아니요 | true이면 범위를 삭제합니다. |
strategies:user_list_id
| integer/string | 아니요 | 전략이 gitlabUserList 인 경우의 기능 플래그 사용자 목록 ID입니다.
|
curl "https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature" \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-type: application/json" \
--data @- << EOF
{
"strategies": [{ "name": "gradualRolloutUserId", "parameters": { "groupId": "default", "percentage": "25" }, "scopes": [{ "environment_scope": "staging" }] }]
}
EOF
예시 응답:
{
"name": "awesome_feature",
"description": null,
"active": true,
"version": "new_version_flag",
"created_at": "2020-05-13T20:10:32.891Z",
"updated_at": "2020-05-13T20:10:32.891Z",
"scopes": [],
"strategies": [
{
"id": 38,
"name": "gradualRolloutUserId",
"parameters": {
"groupId": "default",
"percentage": "25"
},
"scopes": [
{
"id": 40,
"environment_scope": "staging"
}
]
},
{
"id": 37,
"name": "default",
"parameters": {},
"scopes": [
{
"id": 39,
"environment_scope": "production"
}
]
}
]
}
기능 플래그 삭제
기능 플래그를 삭제합니다.
DELETE /projects/:id/feature_flags/:feature_flag_name
속성 | 유형 | 필수여부 | 설명 |
---|---|---|---|
id
| integer/string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
feature_flag_name
| string | yes | 기능 플래그의 이름. |
curl --header "PRIVATE-TOKEN: <your_access_token>" --request DELETE "https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature"