- Debian API 활성화
- Debian 그룹 API 활성화
- Debian 패키지 빌드
- Debian 엔드포인트 인증
- 배포 생성
- 패키지 게시
- 명시적 배포 및 구성 요소로 패키지 업로드
- 패키지 설치
- 소스 패키지 다운로드
패키지 레지스트리의 Debian 패키지
- 기능 플래그 뒤에 배포됨, 기본적으로 비활성화됨.
경고: GitLab의 Debian 패키지 레지스트리는 개발 중이며 프로덕션 환경에서 사용할 준비가 되지 않았습니다. epic에서 남은 작업 및 프로덕션 준비까지의 일정에 대해 자세히 설명되어 있습니다. Debian 패키지의 지원은 실험적이며 알려진 보안 취약점이 있습니다.
프로젝트의 패키지 레지스트리에 Debian 패키지를 게시한 다음, 의존성으로 사용해야 할 때 필요할 때마다 패키지를 설치하십시오.
프로젝트 및 그룹 패키지가 지원됩니다.
Debian 패키지 관리자 클라이언트가 사용하는 구체적인 API 엔드포인트의 문서에 대해서는 Debian API 문서를 참조하십시오.
전제 조건:
- GitLab 인스턴스에
dpkg-deb
이진 파일이 설치되어 있어야 합니다. 보통 이 이진 파일은dpkg
패키지에 의해 제공되며, 보통 Debian 및 파생물에 기본 설치됩니다. - ZStandard 압축 알고리즘 지원은 Debian 12 Bookworm의 버전
dpkg >= 1.21.18
또는 Ubuntu 18.04 Bionic Beaver의 버전dpkg >= 1.19.0.5ubuntu2
가 필요합니다.
Debian API 활성화
Debian 레포지토리 지원은 여전히 진행 중인 작업입니다. 현재기능을 기본적으로 비활성화되어 있습니다. GitLab 레일즈 콘솔에 액세스할 수 있는 GitLab 관리자는 활성화할 수 있습니다.
경고: 아직 개발 중인 기능을 활성화하는 것은 안정성과 보안 리스크를 이해해야 합니다.
활성화하려면:
Feature.enable(:debian_packages)
비활성화하려면:
Feature.disable(:debian_packages)
Debian 그룹 API 활성화
Debian 그룹 레포지토리는 기본적으로 비활성화된 두 번째 기능 플래그 뒤에 있습니다.
경고: 아직 개발 중인 기능을 활성화하는 것은 안정성과 보안 리스크를 이해해야 합니다.
활성화하려면:
Feature.enable(:debian_group_packages)
비활성화하려면:
Feature.disable(:debian_group_packages)
Debian 패키지 빌드
Debian 패키지 생성 방법은 Debian 위키에 문서화되어 있습니다.
Debian 엔드포인트 인증
인증 방법은 배포 API 및 패키지 레포지토리 간에 다릅니다.
Debian 배포 API에 인증
배포를 만들거나 읽거나 업데이트하거나 삭제하려면 다음 중 하나가 필요합니다:
-
개인 액세스 토큰,
--header "PRIVATE-TOKEN: <personal_access_token>"
을 사용 -
배포 토큰,
--header "Deploy-Token: <deploy_token>"
을 사용 -
CI/CD 작업 토큰,
--header "Job-Token: <job_token>"
을 사용
Debian 패키지 레포지토리에 인증
패키지를 게시하거나 개인 패키지를 설치하려면 다음 중 하나를 사용하여 기본 인증을 사용해야 합니다:
-
개인 액세스 토큰,
<username>:<personal_access_token>
을 사용 -
배포 토큰,
<deploy_token_name>:<deploy_token>
을 사용 -
CI/CD 작업 토큰,
gitlab-ci-token:<job_token>
을 사용
배포 생성
프로젝트 수준에서 Debian 패키지는 Debian 배포로 게시되며, 그룹 수준에서는 해당 프로젝트의 Debian 패키지가 그룹 내 프로젝트에서 집계됩니다. 단, 다음 사항이 만족되어야 합니다:
- 프로젝트 가시성이
공개
로 설정되어 있어야 합니다. - 그룹 및 프로젝트의 Debian
codename
이 일치해야 합니다.
개인 액세스 토큰을 사용하여 프로젝트 수준 배포를 만들려면:
curl --fail-with-body --request POST --header "PRIVATE-TOKEN: <personal_access_token>" \
"https://gitlab.example.com/api/v4/projects/<project_id>/debian_distributions?codename=<codename>"
codename=sid
와 같은 예시 응답:
{
"id": 1,
"codename": "sid",
"suite": null,
"origin": null,
"label": null,
"version": null,
"description": null,
"valid_time_duration_seconds": null,
"components": [
"main"
],
"architectures": [
"all",
"amd64"
]
}
Debian 배포 API에 대한 자세한 정보는 다음에서 확인할 수 있습니다:
패키지 게시
빌드 후 여러 파일이 생성됩니다:
-
.deb
파일: 이진 패키지 -
.udeb
파일: 경량화된 .deb 파일, Debian-Installer에 사용됨 (필요한 경우) -
.ddeb
파일: Ubuntu 디버그 .deb 파일 (필요한 경우) -
.tar.{gz,bz2,xz,...}
파일: 소스 파일 -
.dsc
파일: 소스 메타데이터 및 소스 파일 목록 (해시 포함) -
.buildinfo
파일: 재현 가능한 빌드에 사용됨 (선택 사항) -
.changes
파일: 업로드 메타데이터 및 업로드된 파일 목록 (상기 모든 파일)
이러한 파일을 업로드하려면 dput-ng >= 1.32
(Debian bullseye)를 사용할 수 있습니다. <username>
및 <password>
는 위의와 같이 정의되어 있습니다:
cat <<EOF > dput.cf
[gitlab]
method = https
fqdn = <username>:<password>@gitlab.example.com
incoming = /api/v4/projects/<project_id>/packages/debian
EOF
dput --config=dput.cf --unchecked --no-upload-log gitlab <your_package>.changes
명시적 배포 및 구성 요소로 패키지 업로드
- 명시적 배포 및 구성 요소로 업로드는 GitLab 15.9에서 소개되었습니다.
.changes
파일에 액세스할 수 없는 경우 자격 증명을 사용하여 파라미터로 배포 codename
및 대상 component
를 전달하여 .deb
를 직접 업로드할 수 있습니다.
예를 들어, 개인 엑세스 토큰을 사용하여 sid
배포의 main
구성 요소로 업로드하는 경우:
curl --fail-with-body --request PUT --user "<username>:<personal_access_token>" \
"https://gitlab.example.com/api/v4/projects/<project_id>/packages/debian/your.deb?distribution=sid&component=main" \
--upload-file /path/to/your.deb
패키지 설치
패키지를 설치하려면:
-
리포지토리 구성:
개인 프로젝트를 사용하는 경우, apt 구성에 자격 증명을 추가하십시오: credentials
echo 'machine gitlab.example.com login <username> password <password>' \ | sudo tee /etc/apt/auth.conf.d/gitlab_project.conf
자격 증명을 사용하여 배포 키 다운로드:
sudo mkdir -p /usr/local/share/keyrings curl --fail-with-body --header "PRIVATE-TOKEN: <your_access_token>" \ "https://gitlab.example.com/api/v4/projects/<project_id>/debian_distributions/<codename>/key.asc" \ | \ gpg --dearmor \ | \ sudo tee /usr/local/share/keyrings/<codename>-archive-keyring.gpg \ > /dev/null
프로젝트를 소스로 추가:
echo 'deb [ signed-by=/usr/local/share/keyrings/<codename>-archive-keyring.gpg ] https://gitlab.example.com/api/v4/projects/<project_id>/packages/debian <codename> <component1> <component2>' \ | sudo tee /etc/apt/sources.list.d/gitlab_project.list sudo apt-get update
-
패키지 설치:
sudo apt-get -y install -t <codename> <package-name>
소스 패키지 다운로드
소스 패키지를 다운로드하려면:
-
리포지토리 구성:
개인 프로젝트를 사용하는 경우, 자격 증명을 apt 구성에 추가하십시오: credentials
echo 'machine gitlab.example.com login <username> password <password>' \ | sudo tee /etc/apt/auth.conf.d/gitlab_project.conf
자격 증명을 사용하여 배포 키 다운로드:
sudo mkdir -p /usr/local/share/keyrings curl --fail-with-body --header "PRIVATE-TOKEN: <your_access_token>" \ "https://gitlab.example.com/api/v4/projects/<project_id>/debian_distributions/<codename>/key.asc" \ | \ gpg --dearmor \ | \ sudo tee /usr/local/share/keyrings/<codename>-archive-keyring.gpg \ > /dev/null
프로젝트를 소스로 추가:
echo 'deb-src [ signed-by=/usr/local/share/keyrings/<codename>-archive-keyring.gpg ] https://gitlab.example.com/api/v4/projects/<project_id>/packages/debian <codename> <component1> <component2>' \ | sudo tee /etc/apt/sources.list.d/gitlab_project-sources.list sudo apt-get update
-
소스 패키지 다운로드:
sudo apt-get source -t <codename> <package-name>