- 릴리스 보기
- 릴리스 생성
- 다가오는 릴리스
- 과거 릴리스
- 릴리스 편집
- 릴리스 삭제
- 릴리스와 마일스톤 연결
- 릴리스가 생성될 때 알림 받기
- 배포 동결 설정으로 의도치 않은 릴리스를 방지하기
- 릴리스 권한
- 릴리스 메트릭스
- 작업 예제 프로젝트
- 문제 해결
릴리스
GitLab에서 릴리는 사용자를 위한 프로젝트의 스냅샷을 생성할 수 있게 해주며, 설치 패키지와 릴리스 노트를 포함합니다. 브랜치에서 GitLab 릴리를 언제든지 생성할 수 있습니다. 릴리스를 생성하면 소스 코드의 릴리스 지점을 표시하는 Git 태그도 생성됩니다.
경고:
릴리스와 연결된 Git 태그를 삭제하면 릴리스도 삭제됩니다.
릴리스에는 다음이 포함될 수 있습니다:
- 저장소의 소스 코드 스냅샷.
- Generic packages 작업 아티팩트에서 생성된 것.
- 코드의 릴리스된 버전과 관련된 기타 메타데이터.
- 릴리스 노트.
- GitLab은 소스 코드를 자동으로 아카이브하고 릴스와 연결합니다.
- GitLab은 릴리스에 있는 모든 것을 나열하는 JSON 파일을 자동으로 생성합니다, 이 파일은 릴리스를 비교하고 감사할 수 있게 해줍니다. 이 파일은 릴리스 증거라고 합니다.
릴리를 생성한 후에 또는 생성하는 동안, 다음을 수행할 수 있습니다:
- 릴리스 노트를 추가합니다.
- 릴스와 연결된 Git 태그에 대한 메시지를 추가합니다.
- 마일스톤을 연결합니다.
- 릴리스 자산, 실행 문서나 패키지 등을 첨부합니다.
릴리스 보기
릴스 목록을 보려면:
-
왼쪽 사이드바에서 Deploy > Releases를 선택하거나
-
프로젝트 요약 페이지에서, 최소 하나의 릴리스가 존재하면 릴스 수를 선택합니다.
- 공개 프로젝트에서는 모든 사용자가 이 숫자를 볼 수 있습니다.
- 비공식 프로젝트에서는 최소 Reporter 역할이 있는 사용자만 이 숫자를 볼 수 있습니다.
릴리스 정렬
릴스를 릴리스 날짜 또는 생성 날짜로 정렬하려면, 정렬 순서 드롭다운 목록에서 선택합니다. 오름차순 또는 내림차순으로 전환하려면 정렬 순서를 선택합니다.
최신 릴리스에 대한 영구 링크
최신 릴리스 페이지는 영구 URL을 통해 접근할 수 있습니다.
GitLab은 방문할 때 최신 릴리스 페이지 URL로 리디렉션합니다.
URL 형식은 다음과 같습니다:
https://gitlab.example.com/namespace/project/-/releases/permalink/latest
최신 릴리스로 리디렉션될 때 접미사 경로가 유지되는 것도 지원합니다.
예를 들어, 릴리스 v14.8.0-ee
가 최신 릴리스이고 읽기 가능한 링크 https://gitlab.example.com/namespace/project/-/releases/v14.8.0-ee#release
가 있다면, 다음과 같이 호출될 수 있습니다: https://gitlab.example.com/namespace/project/-/releases/permalink/latest#release
.
접미사 경로 유지 사용법에 대한 더 자세한 내용은 최신 릴리스 자산에 대한 영구 링크 섹션을 참고하세요.
정렬 기본 설정
기본적으로 GitLab은 released_at
시간을 사용하여 릴스를 가져옵니다. 쿼리 매개변수 ?order_by=released_at
의 사용은 선택 사항이며, ?order_by=semver
에 대한 지원은 이 문제에서 추적됩니다.
릴리스를 RSS 피드로 추적하기
GitLab은 Atom 형식의 프로젝트 릴리스의 RSS 피드를 제공합니다. 피드를 보려면:
- 당신이 멤버인 프로젝트의 경우:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾으세요.
- 배포 > 릴리스를 선택하세요.
- 모든 프로젝트의 경우:
- 프로젝트 개요 페이지로 이동하세요.
- 오른쪽 사이드바에서 릴리스()를 선택하세요.
- 오른쪽 상단 모서리에서 피드 기호()를 선택하세요.
릴리스 생성
릴레스를 생성할 수 있습니다:
릴리스 페이지에서 릴리스 생성하기
전제 조건:
- 프로젝트에 대해 최소한 개발자 역할이 있어야 합니다. 추가 정보는 릴리스 권한을 읽어보세요.
릴리스 페이지에서 릴리스를 생성하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾으세요.
- 배포 > 릴리스를 선택하고 새 릴리스를 선택하세요.
-
태그 이름 드롭다운 목록에서:
- 기존 Git 태그를 선택하세요. 이미 릴리스와 연관된 기존 태그를 선택하면 검증 오류가 발생합니다.
- 새 Git 태그 이름을 입력하세요.
- 태그 생성 팝오버에서 새 태그를 생성할 때 사용할 브랜치 또는 커밋 SHA를 선택하세요.
- 선택 사항. 태그 메시지 설정 텍스트 박스에 메시지를 입력하여 주석 달린 태그를 생성하세요.
- 저장을 선택하세요.
- 선택 사항. 릴리스에 대한 추가 정보를 입력하세요:
- 릴리스 생성을 선택하세요.
CI/CD 작업을 사용하여 릴스 생성하기
release
키워드를 사용하여 GitLab CI/CD 파이프라인의 일환으로 직접 릴리스를 생성할 수 있습니다.
CI/CD 파이프라인의 마지막 단계 중 하나로 릴리스를 생성해야 합니다.
작업이 오류 없이 처리될 경우에만 릴리스가 생성됩니다. 릴리스 생성 중 API가 오류를 반환하면 릴리스 작업이 실패합니다.
다음 링크는 CI/CD 작업을 사용하여 릴리스를 생성하는 데 대한 전형적인 예제 구성을 보여줍니다:
사용자 지정 SSL CA 인증 기관 사용
ADDITIONAL_CA_CERT_BUNDLE
CI/CD 변수를 사용하여 사용자 지정 SSL CA 인증 기관을 구성할 수 있으며,
이는 release-cli
가 HTTPS를 사용하여 API를 통해 사용자 지정 인증서로 릴리스를 생성할 때 피어를 검증하는 데 사용됩니다.
ADDITIONAL_CA_CERT_BUNDLE
값에는
또는 인증 기관이 포함된 path/to/file
이 포함되어야 합니다.
예를 들어, .gitlab-ci.yml
파일에서 이 값을 구성하려면 다음을 사용하세요:
release:
variables:
ADDITIONAL_CA_CERT_BUNDLE: |
-----BEGIN CERTIFICATE-----
MIIGqTCCBJGgAwIBAgIQI7AVxxVwg2kch4d56XNdDjANBgkqhkiG9w0BAQsFADCB
...
jWgmPqF3vUbZE0EyScetPJquRFRKIesyJuBFMAs=
-----END CERTIFICATE-----
script:
- echo "릴리스 생성"
release:
name: '내 멋진 릴리스'
tag_name: '$CI_COMMIT_TAG'
ADDITIONAL_CA_CERT_BUNDLE
값은 UI에서 사용자 지정 변수로도 구성할 수 있습니다.
인증서의 경로가 필요한 file
이거나 인증서의 텍스트 표현이 필요한 변수로 구성할 수 있습니다.
단일 파이프라인에서 여러 릴리스 생성
파이프라인에는 여러 release
작업이 있을 수 있습니다. 예를 들어:
ios-release:
script:
- echo "iOS 릴리스 작업"
release:
tag_name: v1.0.0-ios
description: 'iOS 릴리스 v1.0.0'
android-release:
script:
- echo "Android 릴리스 작업"
release:
tag_name: v1.0.0-android
description: 'Android 릴리스 v1.0.0'
일반 패키지로 릴리스 자산 제공
일반 패키지를 사용하여 릴리스 자산을 호스팅할 수 있습니다.
완전한 예제는 일반 패키지로 릴리스 자산 제공 프로젝트를 참조하세요.
다가오는 릴리스
릴리스 API를 사용하여 미리 릴리스를 생성할 수 있습니다.
미래의 released_at
날짜를 설정하면 다가오는 릴리스 배지가 릴리스 태그 옆에 표시됩니다.
released_at
날짜와 시간이 지나면 배지가 자동으로 제거됩니다.
과거 릴리스
- GitLab 15.2에서 도입됨.
릴리스 API 또는 UI를 사용하여 과거에 릴리스를 생성할 수 있습니다.
과거의 released_at
날짜를 설정하면 과거 릴리스 배지가 릴리스 태그 옆에 표시됩니다.
과거에 릴리스되었기 때문에 릴리스 증거는 제공되지 않습니다.
릴리스 편집
릴스를 생성한 후 세부 정보를 편집하려면 릴리스 업데이트 API 또는 UI를 사용할 수 있습니다.
전제 조건:
- 최소한 개발자 역할이 필요합니다.
UI에서:
- 왼쪽 사이드바에서 배포 > 릴리스를 선택합니다.
- 수정할 릴리스의 오른쪽 상단 모서리에서 이 릴리스 편집(연필 아이콘)을 선택합니다.
- 릴리스 편집 페이지에서 릴리스의 세부 정보를 변경합니다.
- 변경 사항 저장을 선택합니다.
릴리스 삭제
릴리스를 삭제하면 해당 자산도 삭제됩니다. 그러나 연결된 Git 태그는 삭제되지 않습니다. 릴리스와 연결된 Git 태그를 삭제하면 릴리스도 삭제됩니다.
전제 조건:
- 최소한 개발자 역할이 필요합니다. 릴리스 권한에 대해 더 알아보세요.
릴리스를 삭제하려면 릴리스 삭제 API 또는 UI를 사용하세요.
UI에서:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 배포 > 릴리스를 선택합니다.
- 삭제할 릴리스의 오른쪽 상단 모서리에서 이 릴리스 편집 ()을 선택합니다.
- 릴리스 편집 페이지에서 삭제를 선택합니다.
- 릴리스 삭제를 선택합니다.
릴리스와 마일스톤 연결
하나 이상의 프로젝트 마일스톤을 릴리스와 연결할 수 있습니다.
GitLab Premium 고객은 릴스와 연결할 그룹 마일스톤을 지정할 수 있습니다.
사용자 인터페이스에서 이 작업을 수행하거나
릴리즈 API에 대한 요청에 milestones
배열을 포함하여 수행할 수 있습니다.
사용자 인터페이스에서 릴이스에 마일스톤을 연결하려면:
- 왼쪽 사이드바에서 배포 > 릴리스를 선택합니다.
- 수정할 릴리스의 오른쪽 상단 모서리에서 이 릴리스 편집(연필 아이콘)을 선택합니다.
- 마일스톤 목록에서 연결하려는 각 마일스톤을 선택합니다. 여러 마일스톤을 선택할 수 있습니다.
- 변경 사항 저장을 선택합니다.
배포 > 릴리스 페이지에서 마일스톤은 상단 섹션에 통계와 함께 나열됩니다.
릴리스는 또한 계획 > 마일스톤 페이지에 표시되며 이 페이지에서 마일스톤을 선택할 때도 표시됩니다.
릴리스가 없는 마일스톤, 하나의 릴리스를 가진 마일스톤 및 두 개의 릴리스를 가진 마일스톤의 예는 다음과 같습니다.
참고: 하위 그룹의 프로젝트 릴리스는 상위 그룹의 마일스톤과 연결될 수 없습니다. 자세한 내용은 이슈 #328054를 읽어보세요, 슈퍼 그룹 마일스톤과 연결될 수 없는 릴리스.
릴리스가 생성될 때 알림 받기
프로젝트에 대한 새 릴리스가 생성될 때 이메일로 알림을 받을 수 있습니다.
릴리스 알림을 구독하려면:
- 왼쪽 사이드바에서 프로젝트 개요를 선택합니다.
- 알림 설정(종 모양 아이콘)을 선택합니다.
- 목록에서 사용자 정의를 선택합니다.
- 새 릴리스 체크박스를 선택합니다.
- 대화 상자를 닫아 저장합니다.
배포 동결 설정으로 의도치 않은 릴리스를 방지하기
지정한 기간 동안 의도하지 않은 생산 릴리스를 방지하려면 배포 동결 기간을 설정하세요.
배포 동결은 배포 자동화 시 불확실성과 위험을 줄이는 데 도움을 줍니다.
Maintainer는 사용자 인터페이스에서 배포 동결 창을 설정하거나
Freeze Periods API
를 사용하여 freeze_start
와 freeze_end
를 설정할 수 있으며, 이는 crontab 항목으로 정의됩니다.
실행 중인 작업이 동결 기간에 있다면, GitLab CI/CD는 $CI_DEPLOY_FREEZE
라는 환경 변수를 생성합니다.
그룹 내 여러 프로젝트에서 배포 작업이 실행되지 않도록 하려면,
그룹 전반에 걸쳐 공유되는 파일에 .freezedeployment
작업을 정의하세요.
프로젝트의 .gitlab-ci.yml
파일에 템플릿을 포함하려면 includes
키워드를 사용하십시오:
.freezedeployment:
stage: deploy
before_script:
- '[[ ! -z "$CI_DEPLOY_FREEZE" ]] && echo "INFRASTRUCTURE OUTAGE WINDOW" && exit 1; '
rules:
- if: '$CI_DEPLOY_FREEZE'
when: manual
allow_failure: true
- when: on_success
배포 작업의 실행을 방지하려면, .gitlab-ci.yml
파일의 deploy_to_production
작업에
extends
키워드를 사용하여 .freezedeployment
템플릿 작업의 구성을 상속받으세요:
deploy_to_production:
extends: .freezedeployment
script: deploy_to_prod.sh
environment: production
이 구성은 조건적으로 배포 작업을 차단하고 파이프라인의 연속성을 유지합니다. 동결 기간이 정의되면 작업이 실패하고 파이프라인은 배포 없이 진행될 수 있습니다. 동결 기간 이후 수동 배포가 가능합니다.
이 접근 방식은 중요한 유지 보수 중 배포 제어를 제공하고 CI/CD 파이프라인의 중단 없는 흐름을 보장합니다.
UI에서 배포 동결 창을 설정하려면 다음 단계를 완료하세요:
- Maintainer 역할을 가진 사용자로 GitLab에 로그인합니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > CI/CD를 선택합니다.
- 배포 동결로 스크롤합니다.
- 확장을 선택하여 배포 동결 테이블을 봅니다.
- 배포 동결 추가를 선택하여 배포 동결 모달을 엽니다.
- 원하는 배포 동결 기간의 시작 시간, 종료 시간 및 시간대를 입력합니다.
- 모달에서 배포 동결 추가를 선택합니다.
- 배포 동결이 저장된 후 편집 버튼()을 선택하여 수정하고, 삭제 버튼()을 선택하여 제거할 수 있습니다.
프로젝트에 여러 배포 동결 기간이 포함되어 있는 경우, 모든 기간이 적용됩니다. 만약 중첩된다면, 동결은 전체 중첩 기간을 포함합니다.
자세한 내용은 배포 안전성을 참조하세요.
릴리스 권한
릴리스를 보고 자산을 다운로드하세요
-
최소 Reporter 역할을 가진 사용자는 프로젝트 릴리스에 대한 읽기 및 다운로드 권한을 가집니다.
-
Guest 역할을 가진 사용자는 프로젝트 릴스에 대한 읽기 및 다운로드 권한을 가집니다. 여기에는 관련된 Git 태그 이름, 릴리스 설명, 릴리스 저자 정보가 포함됩니다. 그러나 소스 코드 및 릴리스 증거와 같은 다른 저장소 관련 정보는 삭제됩니다.
소스 코드에 대한 접근 권한 없이 릴리스 게시
- 도입됨 GitLab 15.6.
릴리스는 소스 코드와 같은 저장소 관련 정보를 비공개로 유지하면서 프로젝트 외부 사용자에게 접근할 수 있도록 할 수 있습니다.
릴리스를 소프트웨어의 새로운 버전에 접근할 수 있는 방법으로 사용하는 프로젝트에서 소스 코드를 공개하지 않으려는 경우에 사용하세요.
릴리를 공개적으로 사용 가능하게 하려면 다음 프로젝트 설정을 설정하세요:
- 저장소가 활성화되어 있으며 오직 프로젝트 회원만 접근할 수 있도록 설정됨
- 릴리스가 활성화되어 있으며 접근할 수 있는 모든 사용자로 설정됨
릴리스 및 자산 생성, 업데이트, 삭제
-
적어도 Developer 역할을 가진 사용자는 프로젝트 릴리스 및 자산에 대한 쓰기 권한이 있습니다.
-
릴리스가 보호된 태그와 연결되어 있는 경우 사용자도 보호된 태그를 생성할 수 있도록 허용되어야 합니다.
릴리스 권한 제어의 예로, 와일드카드(*
)로 태그를 보호하여 적어도 Maintainer 역할을 가진 사용자만 릴리스를 생성, 업데이트 및 삭제할 수 있도록 허용할 수 있습니다.
그리고 허용된 생성 열에 Maintainer로 설정하세요.
릴리스 메트릭스
Offering: GitLab.com, Self-managed, GitLab Dedicated
- 도입됨 GitLab Premium 13.9.
그룹 수준 릴리스 메트릭스는 그룹 > 분석 > CI/CD로 이동하여 확인할 수 있습니다.
이 메트릭스에는 다음이 포함됩니다:
- 그룹 내 릴리스 총 수
- 최소 하나의 릴리스를 가진 그룹 내 프로젝트의 비율
작업 예제 프로젝트
Guided Exploration 프로젝트 Utterly Automated Software and Artifact Versioning with GitVersion은 다음을 보여줍니다:
- GitLab 릴리스 사용.
- GitLab
release-cli
사용. - 일반 패키지 생성.
- 릴리스에 패키지 연결.
- 복잡한 리포지토리에 대해 자동으로 버전을 결정하고 증가시키는 도구인 GitVersion 사용.
테스트를 위해 예제 프로젝트를 자신의 그룹이나 인스턴스로 복사할 수 있습니다. 다른 GitLab CI 패턴이 보여지는 세부사항은 프로젝트 페이지에서 확인할 수 있습니다.
문제 해결
릴리스 및 자산 생성, 업데이트 또는 삭제 시 오류
릴리스가 보호된 태그와 연결되어 있는 경우 UI/API 요청이 다음과 같은 권한 실패를 초래할 수 있습니다:
403 Forbidden
새 릴리스를 생성하는 중 문제가 발생했습니다.
사용자 또는 서비스/봇 계정이 보호된 태그를 생성할 수 있도록 허용되어 있는지 확인하세요.
자세한 내용은 릴리스 권한을 참조하세요.
스토리지에 대한 주의 사항
이 기능은 Git 태그를 기반으로 구축되므로 릴리스를 생성하는 것 외에는 거의 추가적인 데이터가 필요하지 않습니다. 추가 자산과 자동 생성되는 릴리스 증거는 저장소를 소모합니다.