InfoGrab Docs

Feature flags API

요약

이 API는 GitLab 개발에 사용되는 Flipper 기반 기능 플래그를 관리하기 위한 것입니다. 모든 메서드에는 관리자 권한이 필요합니다. API는 boolean 및 시간 비율(percentage-of-time) 게이트 값만 지원합니다.

이 API는 GitLab 개발에 사용되는 Flipper 기반 기능 플래그를 관리하기 위한 것입니다.

모든 메서드에는 관리자 권한이 필요합니다.

API는 boolean 및 시간 비율(percentage-of-time) 게이트 값만 지원합니다.

모든 기능 플래그 나열#

게이트 값과 함께 저장된 모든 기능 플래그를 나열합니다.

GET /features
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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 --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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
  }
]

기능 플래그 생성 또는 업데이트#

기능 플래그의 게이트 값을 생성하거나 업데이트합니다. 지정된 이름의 기능 플래그가 아직 없으면 생성됩니다. 값은 boolean이거나 시간 비율을 나타내는 정수일 수 있습니다.

Warning

아직 개발 중인 기능을 활성화하기 전에 개발 중인 기능 활성화 시 보안 및 안정성 위험을 이해해야 합니다.

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 등). 여러 저장소 경로를 구분하려면 쉼표를 사용합니다.
runner 문자열 아니요 러너 ID 또는 쉼표로 구분된 러너 ID 목록.
force 부울 아니요 YAML 정의와 같은 기능 플래그 유효성 검사를 건너뜁니다.

단일 API 호출에서 feature_group, user, group, namespace, project, repository, runner에 대한 기능을 활성화하거나 비활성화할 수 있습니다.

curl --request POST \
  --data "value=30" \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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
  }
}

actors 비율 롤아웃 설정#

actors 비율로 롤아웃합니다.

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를 actors의 42%로 롤아웃합니다.

기능 삭제#

기능 플래그 게이트를 삭제합니다. 기능 플래그가 존재하든 아니든 동일한 응답을 반환합니다.

DELETE /features/:name

Feature flags API

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기
요약

이 API는 GitLab 개발에 사용되는 Flipper 기반 기능 플래그를 관리하기 위한 것입니다. 모든 메서드에는 관리자 권한이 필요합니다. API는 boolean 및 시간 비율(percentage-of-time) 게이트 값만 지원합니다.

이 API는 GitLab 개발에 사용되는 Flipper 기반 기능 플래그를 관리하기 위한 것입니다.

모든 메서드에는 관리자 권한이 필요합니다.

API는 boolean 및 시간 비율(percentage-of-time) 게이트 값만 지원합니다.

모든 기능 플래그 나열#

게이트 값과 함께 저장된 모든 기능 플래그를 나열합니다.

GET /features
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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 --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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
  }
]

기능 플래그 생성 또는 업데이트#

기능 플래그의 게이트 값을 생성하거나 업데이트합니다. 지정된 이름의 기능 플래그가 아직 없으면 생성됩니다. 값은 boolean이거나 시간 비율을 나타내는 정수일 수 있습니다.

Warning

아직 개발 중인 기능을 활성화하기 전에 개발 중인 기능 활성화 시 보안 및 안정성 위험을 이해해야 합니다.

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 등). 여러 저장소 경로를 구분하려면 쉼표를 사용합니다.
runner 문자열 아니요 러너 ID 또는 쉼표로 구분된 러너 ID 목록.
force 부울 아니요 YAML 정의와 같은 기능 플래그 유효성 검사를 건너뜁니다.

단일 API 호출에서 feature_group, user, group, namespace, project, repository, runner에 대한 기능을 활성화하거나 비활성화할 수 있습니다.

curl --request POST \
  --data "value=30" \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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
  }
}

actors 비율 롤아웃 설정#

actors 비율로 롤아웃합니다.

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를 actors의 42%로 롤아웃합니다.

기능 삭제#

기능 플래그 게이트를 삭제합니다. 기능 플래그가 존재하든 아니든 동일한 응답을 반환합니다.

DELETE /features/:name