- 전제 조건:
- Debian API 활성화
- Debian 그룹 API 활성화
- Debian 패키지 빌드
- Debian 엔드포인트에 인증
- 배포 만들기
- 패키지 게시
- 명시적 배포 및 구성 요소로 패키지 업로드
- 패키지 설치
- 소스 패키지 다운로드
패키지 레지스트리의 Debian 패키지
Status: Experiment
- 기능 플래그 뒤에 배포됨, 기본적으로 비활성화되어 있습니다.
프로젝트의 패키지 레지스트리에 Debian 패키지를 게시하세요. 그런 다음 필요할 때마다 패키지를 의존성으로 사용하도록 설치하세요.
프로젝트 및 그룹 패키지가 지원됩니다.
Debian 패키지 관리자 클라이언트가 사용하는 특정 API 엔드포인트에 대한 문서는 Debian API 문서를 참조하세요.
전제 조건:
-
dpkg-deb
바이너리는 GitLab 인스턴스에 설치되어 있어야 합니다.
이 바이너리는 일반적으로dpkg
패키지에 의해 제공되며, Debian 및 파생 배포판에 기본적으로 설치되어 있습니다. - 압축 알고리즘 ZStandard에 대한 지원은 Debian 12 Bookworm의
dpkg >= 1.21.18
버전 또는 Ubuntu 18.04 Bionic Beaver의dpkg >= 1.19.0.5ubuntu2
버전이 필요합니다.
Debian API 활성화
Debian 리포지토리 지원은 여전히 진행 중입니다. 기본적으로 비활성화된 기능 플래그 뒤에 격리되어 있습니다.
GitLab Rails 콘솔에 액세스할 수 있는 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 Wiki에 문서화되어 있습니다.
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 패키지가 집계됩니다:
- 프로젝트 가시성이
public
으로 설정되어 있습니다. - 그룹의 Debian
codename
이 프로젝트의 Debiancodename
과 일치합니다.
개인 액세스 토큰을 사용하여 프로젝트 수준 배포를 만들려면:
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
파일: Debian-Installer에 사용되는 경량화된 .deb 파일 (필요한 경우) -
.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
파일에 접근할 수 없을 때는 .deb
를 직접 업로드할 수 있습니다.
배포 codename
과 타겟 component
를 매개변수로 전달하여
당신의 자격증명과 함께 업로드하세요.
예를 들어, 개인 액세스 토큰을 사용하여 배포 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 구성에 자격증명을 추가하세요:
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 구성에 자격 증명을 추가하세요:
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>