Composer API
이 문서는 Composer Packages에 대한 API 문서입니다.
GitLab 패키지 레지스트리에서 Composer 패키지를 업로드하고 설치하는 방법에 대한 지침은 Composer package registry documentation을 참조하세요.
기본 저장소 요청
개별 패키지를 요청하기 위한 저장소 URL 템플릿을 반환합니다:
GET group/:id/-/packages/composer/packages
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| string | yes | 그룹의 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 대신에 Composer V2를 사용하는 것이 권장됩니다.
GET group/:id/-/packages/composer/p/:sha
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| string | yes | 그룹의 ID 또는 전체 경로. |
sha
| string | yes | 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 대신에 Composer V2를 사용하는 것이 권장됩니다.
GET group/:id/-/packages/composer/:package_name$:sha
URL에서 $
기호를 주목하세요. 요청 시, 해당 기호의 URL 인코딩된 버전이 필요할 수 있습니다. 표를 참조한 후의 예시를 확인하세요:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| string | yes | 그룹의 ID 또는 전체 경로. |
package_name
| string | yes | 패키지의 이름. |
sha
| string | yes | 패키지의 SHA 다이제스트, V1 패키지 목록에서 제공됨. |
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
| 문자열 | 예 | 그룹의 ID 또는 전체 경로입니다. |
package_name
| 문자열 | 예 | 패키지의 이름입니다. |
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
| 문자열 | 예 | 그룹의 ID 또는 전체 경로입니다. |
tag
| 문자열 | 아니오 | 패키지의 대상 태그 이름입니다. |
branch
| 문자열 | 아니오 | 패키지의 대상 브랜치 이름입니다. |
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
| 문자열 | 예 | 그룹의 ID 또는 전체 경로입니다. |
package_name
| 문자열 | 예 | 패키지의 이름입니다. |
sha
| 문자열 | 예 | 요청된 패키지 버전의 대상 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
로 작성합니다.
참고: 이 엔드포인트는 GitLab 14.10 및 이후에는 권한이 필요합니다. GitLab 14.9 및 이전 버전에서는 공개로 접근할 수 있었습니다.