환경 API

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

GitLab 16.2에서 도입된 GitLab CI/CD 작업 토큰 인증을 지원합니다.

환경 목록 가져오기

주어진 프로젝트에 대한 모든 환경을 가져옵니다.

GET /projects/:id/environments
속성 유형 필수 설명
id integer/string yes 프로젝트의 ID 또는 URL-인코딩된 경로입니다.
name string no 이 이름을 가진 환경을 반환합니다. search와 상호 배타적입니다.
search string no 검색 기준에 맞는 환경 목록을 반환합니다. name과 상호 배타적입니다. 최소 3자 이상이어야 합니다.
states string no 특정 상태와 일치하는 모든 환경을 나열합니다. 허용된 값: available, stopping, 또는 stopped입니다. 상태 값이 주어지지 않으면 모든 환경을 반환합니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/environments?name=review%2Ffix-foo"

응답 예시:

[
  {
    "id": 1,
    "name": "review/fix-foo",
    "slug": "review-fix-foo-dfjre3",
    "description": "This is review environment",
    "external_url": "https://review-fix-foo-dfjre3.gitlab.example.com",
    "state": "available",
    "tier": "development",
    "created_at": "2019-05-25T18:55:13.252Z",
    "updated_at": "2019-05-27T18:55:13.252Z",
    "enable_advanced_logs_querying": false,
    "logs_api_path": "/project/-/logs/k8s.json?environment_name=review%2Ffix-foo",
    "auto_stop_at": "2019-06-03T18:55:13.252Z",
    "kubernetes_namespace": "flux-system",
    "flux_resource_path": "HelmRelease/flux-system"
  }
]

특정 환경 가져오기

GET /projects/:id/environments/:environment_id
속성 유형 필수 설명
id integer/string yes 프로젝트의 ID 또는 URL-인코딩 경로입니다.
environment_id integer yes 환경의 ID입니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/environments/1"

응답 예시

{
  "id": 1,
  "name": "review/fix-foo",
  "slug": "review-fix-foo-dfjre3",
  "description": "This is review environment",
  "external_url": "https://review-fix-foo-dfjre3.gitlab.example.com",
  "state": "available",
  "tier": "development",
  "created_at": "2019-05-25T18:55:13.252Z",
  "updated_at": "2019-05-27T18:55:13.252Z",
  "enable_advanced_logs_querying": false,
  "logs_api_path": "/project/-/logs/k8s.json?environment_name=review%2Ffix-foo",
  "auto_stop_at": "2019-06-03T18:55:13.252Z",
  "last_deployment": {
    "id": 100,
    "iid": 34,
    "ref": "fdroid",
    "sha": "416d8ea11849050d3d1f5104cf8cf51053e790ab",
    "created_at": "2019-03-25T18:55:13.252Z",
    "status": "success",
    "user": {
      "id": 1,
      "name": "Administrator",
      "state": "active",
      "username": "root",
      "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
      "web_url": "http://localhost:3000/root"
    },
    "deployable": {
      "id": 710,
      "status": "success",
      "stage": "deploy",
      "name": "staging",
      "ref": "fdroid",
      "tag": false,
      "coverage": null,
      "created_at": "2019-03-25T18:55:13.215Z",
      "started_at": "2019-03-25T12:54:50.082Z",
      "finished_at": "2019-03-25T18:55:13.216Z",
      "duration": 21623.13423,
      "project": {
        "ci_job_token_scope_enabled": false
      },
      "user": {
        "id": 1,
        "name": "Administrator",
        "username": "root",
        "state": "active",
        "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
        "web_url": "http://gitlab.dev/root",
        "created_at": "2015-12-21T13:14:24.077Z",
        "bio": null,
        "location": null,
        "public_email": "",
        "skype": "",
        "linkedin": "",
        "twitter": "",
        "website_url": "",
        "organization": null
      },
      "commit": {
        "id": "416d8ea11849050d3d1f5104cf8cf51053e790ab",
        "short_id": "416d8ea1",
        "created_at": "2016-01-02T15:39:18.000Z",
        "parent_ids": [
          "e9a4449c95c64358840902508fc827f1a2eab7df"
        ],
        "title": "Removed fabric to fix #40",
        "message": "Removed fabric to fix #40\n",
        "author_name": "Administrator",
        "author_email": "admin@example.com",
        "authored_date": "2016-01-02T15:39:18.000Z",
        "committer_name": "Administrator",
        "committer_email": "admin@example.com",
        "committed_date": "2016-01-02T15:39:18.000Z"
      },
      "pipeline": {
        "id": 34,
        "sha": "416d8ea11849050d3d1f5104cf8cf51053e790ab",
        "ref": "fdroid",
        "status": "success",
        "web_url": "http://localhost:3000/Commit451/lab-coat/pipelines/34"
      },
      "web_url": "http://localhost:3000/Commit451/lab-coat/-/jobs/710",
      "artifacts": [
        {
          "file_type": "trace",
          "size": 1305,
          "filename": "job.log",
          "file_format": null
        }
      ],
      "runner": null,
      "artifacts_expire_at": null
    }
  },
  "cluster_agent": {
    "id": 1,
    "name": "agent-1",
    "config_project": {
      "id": 20,
      "description": "",
      "name": "test",
      "name_with_namespace": "Administrator / test",
      "path": "test",
      "path_with_namespace": "root/test",
      "created_at": "2022-03-20T20:42:40.221Z"
    },
    "created_at": "2022-04-20T20:42:40.221Z",
    "created_by_user_id": 42
  },
  "kubernetes_namespace": "flux-system",
  "flux_resource_path": "HelmRelease/flux-system"
}

새 환경 생성

주어진 이름과 external_url로 새 환경을 만듭니다.

환경이 성공적으로 생성되면 201을 반환하고, 잘못된 매개변수의 경우 400이 반환됩니다.

POST /projects/:id/environments
속성 유형 필수 설명
id 정수/문자열 프로젝트의 ID 또는 URL 인코딩 경로입니다.
name 문자열 환경의 이름입니다.
description 문자열 아니오 환경의 설명입니다.
external_url 문자열 아니오 이 환경에 대한 링크입니다.
tier 문자열 아니오 새 환경의 계층입니다. 허용되는 값은 production, staging, testing, development, 및 other입니다.
cluster_agent_id 정수 아니오 이 환경과 관련된 클러스터 에이전트입니다.
kubernetes_namespace 문자열 아니오 이 환경과 관련된 Kubernetes 네임스페이스입니다.
flux_resource_path 문자열 아니오 이 환경과 관련된 Flux 리소스 경로입니다.
curl --data "name=deploy&external_url=https://deploy.gitlab.example.com" \
     --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/environments"

예시 응답:

{
  "id": 1,
  "name": "deploy",
  "slug": "deploy",
  "description": null,
  "external_url": "https://deploy.gitlab.example.com",
  "state": "available",
  "tier": "production",
  "created_at": "2019-05-25T18:55:13.252Z",
  "updated_at": "2019-05-27T18:55:13.252Z",
  "kubernetes_namespace": "flux-system",
  "flux_resource_path": "HelmRelease/flux-system"
}

기존 환경 업데이트

  • name 매개변수는 GitLab 16.0에서 제거됨.

기존 환경의 이름 및/또는 external_url을 업데이트합니다.

환경이 성공적으로 업데이트되면 200을 반환합니다. 오류 발생 시 400 상태 코드가 반환됩니다.

PUT /projects/:id/environments/:environments_id
속성 유형 필수 설명
id 정수/문자열 프로젝트의 ID 또는 URL 인코딩 경로입니다.
environment_id 정수 환경의 ID입니다.
description 문자열 아니오 환경의 설명입니다.
external_url 문자열 아니오 external_url입니다.
tier 문자열 아니오 새 환경의 계층입니다. 허용되는 값은 production, staging, testing, development, 및 other입니다.
cluster_agent_id 정수 또는 null 아니오 이 환경과 관련된 클러스터 에이전트 또는 이를 제거하기 위한 null입니다.
kubernetes_namespace 문자열 또는 null 아니오 이 환경과 관련된 Kubernetes 네임스페이스 또는 이를 제거하기 위한 null입니다.
flux_resource_path 문자열 또는 null 아니오 이 환경과 관련된 Flux 리소스 경로 또는 이를 제거하기 위한 null입니다.
curl --request PUT --data "external_url=https://staging.gitlab.example.com" \
     --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/environments/1"

예시 응답:

{
  "id": 1,
  "name": "staging",
  "slug": "staging",
  "description": null,
  "external_url": "https://staging.gitlab.example.com",
  "state": "available",
  "tier": "staging",
  "created_at": "2019-05-25T18:55:13.252Z",
  "updated_at": "2019-05-27T18:55:13.252Z",
  "kubernetes_namespace": "flux-system",
  "flux_resource_path": "HelmRelease/flux-system"
}

환경 삭제

환경이 성공적으로 삭제되면 204를 반환하고, 환경이 존재하지 않으면 404를 반환합니다. 환경은 먼저 중지되어야 하며, 그렇지 않으면 요청은 403을 반환합니다.

DELETE /projects/:id/environments/:environment_id
속성 유형 필수 설명
id 정수/문자열 프로젝트의 ID 또는 URL-인코딩 경로입니다.
environment_id 정수 환경의 ID입니다.
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/environments/1"

여러 중지된 검토 앱 삭제

중지된 여러 환경을 삭제 예약하며, 검토 앱 폴더에 있는 환경을 삭제합니다. 실제 삭제는 실행 시점으로부터 1주일 후에 수행됩니다.

기본적으로, 30일 이상 된 환경만 삭제합니다. before 매개변수를 사용하여 이 기본값을 변경할 수 있습니다.

DELETE /projects/:id/environments/review_apps
속성 유형 필수 설명
id 정수/문자열 프로젝트의 ID 또는 URL-인코딩 경로입니다.
before 날짜시간 아니오 환경을 삭제할 수 있는 날짜입니다. 기본값은 30일 전입니다. ISO 8601 형식(YYYY-MM-DDTHH:MM:SSZ)으로 예상됩니다.
limit 정수 아니오 삭제할 환경의 최대 수입니다. 기본값은 100입니다.
dry_run 부울 아니오 안전상의 이유로 기본값은 true입니다. 실제 삭제가 수행되지 않는 더미 실행을 수행합니다. 환경을 실제로 삭제하려면 false로 설정하십시오.
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/environments/review_apps"

예제 응답:

{
  "scheduled_entries": [
    {
      "id": 387,
      "name": "review/023f1bce01229c686a73",
      "slug": "review-023f1bce01-3uxznk",
      "external_url": null
    },
    {
      "id": 388,
      "name": "review/85d4c26a388348d3c4c0",
      "slug": "review-85d4c26a38-5giw1c",
      "external_url": null
    }
  ],
  "unprocessable_entries": []
}

환경 중지

환경이 성공적으로 중지되면 200을 반환하고, 환경이 존재하지 않으면 404를 반환합니다.

POST /projects/:id/environments/:environment_id/stop
속성 유형 필수 설명
id 정수/문자열 프로젝트의 ID 또는 URL-인코딩 경로입니다.
environment_id 정수 환경의 ID입니다.
force 부울 아니오 on_stop 작업을 실행하지 않고 환경을 강제로 중지합니다.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/environments/1/stop"

예제 응답:

{
  "id": 1,
  "name": "deploy",
  "slug": "deploy",
  "external_url": "https://deploy.gitlab.example.com",
  "state": "stopped",
  "created_at": "2019-05-25T18:55:13.252Z",
  "updated_at": "2019-05-27T18:55:13.252Z",
  "kubernetes_namespace": "flux-system",
  "flux_resource_path": "HelmRelease/flux-system"
}

오래된 환경 중지

지정된 날짜 이전에 마지막으로 수정되었거나 배포된 모든 환경에 대한 중지 요청을 발행합니다. 보호된 환경은 제외됩니다. 중지 요청이 성공하면 200을 반환하고, 지정된 날짜가 유효하지 않으면 400을 반환합니다. 환경이 정확히 언제 중지되는지에 대한 자세한 내용은 환경 중지를 참조하세요.

POST /projects/:id/environments/stop_stale
속성 유형 필수 설명
id 정수/문자열 프로젝트의 ID 또는 URL 인코딩 경로입니다.
before 날짜 지정된 날짜 이전에 수정되었거나 배포된 환경을 중지합니다. ISO 8601 형식(2019-03-15T08:00:00Z)으로 예상됩니다. 유효한 입력은 10년 전부터 1주일 전까지입니다.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/environments/stop_stale?before=10%2F10%2F2021"

예시 응답:

{
  "message": "모든 오래된 환경에 대한 중지 요청이 성공적으로 이루어졌습니다."
}