Composer API
이 문서는 Composer Packages에 대한 API 문서입니다.
GitLab 패키지 레지스트리에서 Composer 패키지를 업로드하고 설치하는 방법에 대한 지침은 Composer 패키지 레지스트리 문서를 참조하십시오.
기본 리포지터리 요청
개별 패키지를 요청하는 데 사용되는 리포지터리 URL 템플릿을 반환합니다.
GET group/:id/-/packages/composer/packages
| 속성 | 유형 | 필요 여부 | 설명 | 
|---|---|---|---|
id
 | 문자열 | 예 | 그룹의 ID 또는 전체 경로입니다. | 
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/packages"
예시 응답:
{
  "packages": [],
  "metadata-url": "/api/v4/group/1/-/packages/composer/p2/%package%.json",
  "provider-includes": {
    "p/%hash%.json": {
      "sha256": "082df4a5035f8725a12i4a3d2da5e6aaa966d06843d0a5c6d499313810427bd6"
    }
  },
  "providers-url": "/api/v4/group/1/-/packages/composer/%package%$%hash%.json"
}
이 엔드포인트는 Composer V1 및 V2에서 사용됩니다. V2별 응답을 보려면 Composer User-Agent 헤더를 포함하십시오. V1보다 V2를 사용하는 것이 권장됩니다.
curl --user <username>:<personal_access_token> \
     --header "User-Agent: Composer/2" \
     "https://gitlab.example.com/api/v4/group/1/-/packages/composer/packages"
예시 응답:
{
  "packages": [],
  "metadata-url": "/api/v4/group/1/-/packages/composer/p2/%package%.json"
}
V1 패키지 디렉터리
V1 공급자 SHA가 제공되면 리포지터리의 패키지 디렉터리을 반환합니다. V1 대신에 V2를 사용하는 것이 권장됩니다.
GET group/:id/-/packages/composer/p/:sha
| 속성 | 유형 | 필요 여부 | 설명 | 
|---|---|---|---|
id
 | 문자열 | 예 | 그룹의 ID 또는 전체 경로입니다. | 
sha
 | 문자열 | 예 | Composer 기본 요청에 의해 제공된 공급자 SHA입니다. | 
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/p/082df4a5035f8725a12i4a3d2da5e6aaa966d06843d0a5c6d499313810427bd6"
예시 응답:
{
  "providers": {
    "my-org/my-composer-package": {
      "sha256": "5c873497cdaa82eda35af5de24b789be92dfb6510baf117c42f03899c166b6e7"
    }
  }
}
V1 패키지 메타데이터
특정 패키지의 버전 및 메타데이터 디렉터리을 반환합니다. V1 대신에 V2를 사용하는 것이 권장됩니다.
GET group/:id/-/packages/composer/:package_name$:sha
URL에 $ 기호가 있는 것에 유의하십시오. 요청을 할 때는 심볼의 URL 인코딩된 버전 %24가 필요할 수 있습니다. 표 다음의 예시를 참조하십시오:
| 속성 | 유형 | 필요 여부 | 설명 | 
|---|---|---|---|
id
 | 문자열 | 예 | 그룹의 ID 또는 전체 경로입니다. | 
package_name
 | 문자열 | 예 | 패키지 이름입니다. | 
sha
 | 문자열 | 예 | V1 패키지 디렉터리에서 제공된 패키지 SHA 다이제스트입니다. | 
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/my-org/my-composer-package%245c873497cdaa82eda35af5de24b789be92dfb6510baf117c42f03899c166b6e7"
예시 응답:
{
  "packages": {
    "my-org/my-composer-package": {
      "1.0.0": {
        "name": "my-org/my-composer-package",
        "type": "library",
        "license": "GPL-3.0-only",
        "version": "1.0.0",
        "dist": {
          "type": "zip",
          "url": "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=673594f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "reference": "673594f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "shasum": ""
        },
        "source": {
          "type": "git",
          "url": "https://gitlab.example.com/my-org/my-composer-package.git",
          "reference": "673594f85a55fe3c0eb45df7bd2fa9d95a1601ab"
        },
        "uid": 1234567
      },
      "2.0.0": {
        "name": "my-org/my-composer-package",
        "type": "library",
        "license": "GPL-3.0-only",
        "version": "2.0.0",
        "dist": {
          "type": "zip",
          "url": "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=445394f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "reference": "445394f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "shasum": ""
        },
        "source": {
          "type": "git",
          "url": "https://gitlab.example.com/my-org/my-composer-package.git",
          "reference": "445394f85a55fe3c0eb45df7bd2fa9d95a1601ab"
        },
        "uid": 1234567
      }
    }
  }
}
V2 패키지 메타데이터
주어진 패키지에 대한 버전 및 메타데이터 디렉터리을 반환합니다:
GET group/:id/-/packages/composer/p2/:package_name
| 속성 | 유형 | 필수 | 설명 | 
|---|---|---|---|
id
 | string | yes | 그룹의 ID 또는 전체 경로 | 
package_name
 | string | yes | 패키지의 이름 | 
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/p2/my-org/my-composer-package"
예시 응답:
{
  "packages": {
    "my-org/my-composer-package": {
      "1.0.0": {
        "name": "my-org/my-composer-package",
        "type": "library",
        "license": "GPL-3.0-only",
        "version": "1.0.0",
        "dist": {
          "type": "zip",
          "url": "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=673594f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "reference": "673594f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "shasum": ""
        },
        "source": {
          "type": "git",
          "url": "https://gitlab.example.com/my-org/my-composer-package.git",
          "reference": "673594f85a55fe3c0eb45df7bd2fa9d95a1601ab"
        },
        "uid": 1234567
      },
      "2.0.0": {
        "name": "my-org/my-composer-package",
        "type": "library",
        "license": "GPL-3.0-only",
        "version": "2.0.0",
        "dist": {
          "type": "zip",
          "url": "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=445394f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "reference": "445394f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "shasum": ""
        },
        "source": {
          "type": "git",
          "url": "https://gitlab.example.com/my-org/my-composer-package.git",
          "reference": "445394f85a55fe3c0eb45df7bd2fa9d95a1601ab"
        },
        "uid": 1234567
      }
    }
  }
}
패키지 생성
Git 태그나 브랜치에서 Composer 패키지를 생성합니다:
POST projects/:id/packages/composer
| 속성 | 유형 | 필수 | 설명 | 
|---|---|---|---|
id
 | string | yes | 그룹의 ID 또는 전체 경로 | 
tag
 | string | no | 패키지를 대상으로 하는 태그의 이름 | 
branch
 | string | no | 패키지를 대상으로 하는 브랜치의 이름 | 
curl --request POST --user <username>:<personal_access_token> \
     --data tag=v1.0.0 "https://gitlab.example.com/api/v4/projects/1/packages/composer"
예시 응답:
{
  "message": "201 Created"
}
패키지 아카이브 다운로드
- 이 엔드포인트에 대한 인증은 GitLab 14.10에서 도입되었습니다.
 
Composer 패키지를 다운로드합니다. 이 URL은 v1이나 v2 패키지 메타데이터 응답에서 제공됩니다. 요청에는 .zip 파일 확장자가 있어야 합니다.
GET projects/:id/packages/composer/archives/:package_name
| 속성 | 유형 | 필수 | 설명 | 
|---|---|---|---|
id
 | string | yes | 그룹의 ID 또는 전체 경로 | 
package_name
 | string | yes | 패키지의 이름 | 
sha
 | string | yes | 요청된 패키지 버전의 대상 SHA | 
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=673594f85a55fe3c0eb45df7bd2fa9d95a1601ab"
파일에 출력 작성:
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=673594f85a55fe3c0eb45df7bd2fa9d95a1601ab" >> package.tar.gz
이렇게 하면 다운로드된 파일이 현재 디렉터리에 package.tar.gz로 작성됩니다.
도움말