릴리스

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

GitLab에서 릴리스는 사용자를 위해 프로젝트의 스냅숏과 설치 패키지 및 릴리스 노트를 포함하여 만들 수 있게 합니다. GitLab 릴리스는 모든 브랜치에서 만들 수 있습니다. 릴리스를 만드는 동시에 소스 코드의 릴리스 지점을 표시하기 위해 Git 태그가 생성됩니다.

caution
릴리스와 연관된 Git 태그를 삭제하면 릴리스도 삭제됩니다.

릴리스에는 다음이 포함될 수 있습니다:

  • 귀하의 리포지터리 소스 코드의 스냅숏.
  • 작업 아티팩트에서 생성된 일반 패키지.
  • 코드의 릴리스 버전과 관련된 기타 메타데이터.
  • 릴리스 노트.

릴리스를 생성하면:

  • GitLab은 소스 코드를 자동으로 아카이브하고 릴리스와 연결합니다.
  • GitLab은 릴리스 내용을 모두 나열하는 JSON 파일을 자동으로 생성하여 릴리스를 비교하고 감사할 수 있습니다. 이 파일은 릴리스 증거라고 합니다.

릴리스를 만든 후에도 다음을 수행할 수 있습니다:

릴리스 보기

릴리스 디렉터리을 보려면 다음 중 하나를 선택하세요:

  • 왼쪽 사이드 바에서 배포 > 릴리스를 선택하거나

  • 프로젝트 개요 페이지에서 릴리스가 하나 이상 있는 경우 릴리스 수를 선택하세요.

    릴리스 수

    • 공개 프로젝트에서는 이 수가 모든 사용자에게 표시됩니다.
    • 비공개 프로젝트에서는 이 수가 적어도 보고자 하는 유저들에게 표시됩니다. 디렉터리은 [::tabs]-[::endtabs].

릴리스 정렬

릴리스 날짜 또는 생성된 날짜로 릴리스를 정렬하려면 정렬 순서 드롭다운 디렉터리에서 선택하세요. 오름차순 또는 내림차순으로 전환하려면 정렬 순서를 선택하세요.

릴리스 정렬 드롭다운 디렉터리 옵션

최신 릴리스의 영구 링크

최신 릴리스 페이지는 영구 URL을 통해 접근할 수 있습니다. 방문 시 GitLab이 최신 릴리스 페이지 URL로 리디렉션합니다.

URL 형식은 다음과 같습니다:

https://host/namespace/project/-/releases/permalink/latest

또한 리디렉션에서 최신 릴리스로의 주소 경로도 지원합니다. 예를 들어 v14.8.0-ee 릴리스가 최신이며 가독성 있는 링크 https://host/namespace/project/-/releases/v14.8.0-ee#release를 가진 경우, https://host/namespace/project/-/releases/permalink/latest#release로 주소할 수 있습니다.

접미사 경로 지원의 자세한 내용은 최신 릴리스 자산에 대한 영구 링크 섹션을 참조하세요.

::Tabs 정렬 환경설정

기본적으로 GitLab은 released_at 시간을 사용하여 릴리스를 가져옵니다. 쿼리 매개변수 ?order_by=released_at을 사용하는 것은 선택 사항입니다. 또한 ?order_by=semver 지원은 이 이슈에서 추적됩니다.

릴리스 만들기

다음 중 하나로 릴리스를 만들 수 있습니다:

CI/CD 파이프라인의 마지막 단계 중 하나로 릴리스를 만들어야 합니다.

릴리스 페이지에서 릴리스 생성

필수조건:

  • 프로젝트에 대한 최소한 개발자 역할이 있어야 합니다. 자세한 내용은 릴리스 권한을 읽어보세요.

릴리스 페이지에서 릴리스를 만들려면:

  1. 왼쪽 사이드 바에서 검색 또는 가기를 선택하여 프로젝트를 찾습니다.
  2. 배포 > 릴리스를 선택하고 새 릴리스를 선택합니다.
  3. 태그 이름 드롭다운 디렉터리에서 다음 중 하나 선택:
    • 기존의 Git 태그를 선택합니다. 이미 릴리스와 연결된 기존 태그를 선택하면 유효성 검사 오류가 발생합니다.
    • 새로운 Git 태그 이름을 입력합니다.
      1. 태그 생성 팝오버에서 새 태그 생성 시 사용할 브랜치나 커밋 SHA를 선택합니다.
      2. 선택사항. 태그 메시지 설정 텍스트 상자에 주석 달린 태그를 만들기 위한 메시지를 입력합니다.
      3. 저장을 선택합니다.
  4. 릴리스와 관련된 추가 정보를 입력합니다. 예:
  5. 릴리스 만들기를 선택합니다.

CI/CD 작업을 사용하여 릴리스 생성

GitLab CI/CD 파이프라인 내에서 직접 릴리스를 만들 수 있습니다. 작업 정의에서 릴리스 키워드를 사용합니다.

작업이 오류 없이 처리되면 릴리스가 생성됩니다. 릴리스 생성 중 API에서 오류가 반환되면 릴리스 작업이 실패합니다.

CI/CD 작업을 사용하여 릴리스를 만드는 방법:

사용자 정의 SSL CA 인증서 사용

ADDITIONAL_CA_CERT_BUNDLE CI/CD 변수를 사용하여 사용자 정의 SSL CA 인증서를 구성할 수 있습니다. 이는 release-cli가 HTTPS를 사용하여 API를 통해 릴리스를 생성할 때 피어를 검증하는 데 사용됩니다. ADDITIONAL_CA_CERT_BUNDLE 값은 X.509 PEM 공개 키 인증서의 텍스트 표현 또는 인증서를 포함하는 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'

일반 패키지로 릴리스 자산 릴리스

일반 패키지를 사용하여 릴리스 자산을 호스팅할 수 있습니다. 자세한 예제는 일반 패키지로 릴리스 자산 릴리스 프로젝트를 참조하세요.

예정된 릴리스

미래의 released_at 날짜를 설정하면 예정된 릴리스 배지가 릴리스 태그 옆에 표시됩니다. released_at 날짜와 시간이 지나면 배지가 자동으로 제거됩니다.

예정된 릴리스

과거 릴리스

과거의 released_at 날짜를 설정하면 과거 릴리스 배지가 릴리스 태그 옆에 표시됩니다. 이미 과거에 릴리스되었기 때문에 릴리스 증거를 사용할 수 없습니다.

릴리스 수정

생성된 후 릴리스의 세부 정보를 편집하려면 릴리스 API나 UI를 사용할 수 있습니다.

필수 사항:

  • 적어도 개발자 역할이 있어야 합니다.

UI에서:

  1. 왼쪽 사이드바에서 배포 > 릴리스를 선택합니다.
  2. 수정하려는 릴리스를 선택한 후, 릴리스 옆의 이 릴리스 편집 (연필 아이콘)을 선택합니다.
  3. 릴리스 편집 페이지에서 릴리스 세부 정보를 변경합니다.
  4. 변경 사항 저장을 선택합니다.

릴리스 삭제

릴리스를 삭제하면 해당 자산이 삭제됩니다. 그러나 관련된 Git 태그는 삭제되지 않습니다.

필수 사항:

  • 적어도 개발자 역할이 있어야 합니다. 릴리스 권한에 대해 자세히 알아보세요.

릴리스를 삭제하려면 릴리스 API나 UI를 사용할 수 있습니다.

UI에서:

  1. 왼쪽 사이드바에서 검색 또는 프로젝트로 이동을 선택한 후 프로젝트를 찾습니다.
  2. 배포 > 릴리스를 선택합니다.
  3. 삭제하려는 릴리스 옆의 이 릴리스 편집 (연필 아이콘)을 선택합니다.
  4. 릴리스 편집 페이지에서 삭제를 선택합니다.
  5. 릴리스 삭제를 선택합니다.

릴리스에 마일스톤 연결

  • GitLab 12.5에서 도입되었습니다.
  • GitLab 13.0에서 UI에서 마일스톤 편집으로 업데이트되었습니다.

릴리스를 하나 이상의 프로젝트 마일스톤과 관련시킬 수 있습니다.

GitLab Premium 고객은 그룹 마일스톤을 지정하여 릴리스와 관련시킬 수 있습니다.

이를 UI에서 수행하거나 릴리스 API에 대한 요청에 milestones 배열을 포함하여 수행할 수 있습니다.

UI에서 릴리스에 마일스톤을 연결하려면:

  1. 왼쪽 사이드바에서 배포 > 릴리스를 선택합니다.
  2. 수정하려는 릴리스를 선택한 후, 릴리스 옆의 이 릴리스 편집 (연필 아이콘)을 선택합니다.
  3. 마일스톤 디렉터리에서 연관시키려는 각 마일스톤을 선택합니다. 여러 마일스톤을 선택할 수 있습니다.
  4. 변경 사항 저장을 선택합니다.

배포 > 릴리스 페이지에서 마일스톤이 상단에 디렉터리으로 표시되며, 해당 마일스톤의 이슈에 대한 통계가 포함됩니다. ! 한 개의 연관된 마일스톤을 가진 릴리스

릴리스는 계획 > 마일스톤 페이지 및 이 페이지에서 마일스톤을 선택할 때도 표시됩니다.

한 페이지에서 릴리스가 없는 마일스톤, 릴리스가 하나 있는 마일스톤, 그리고 릴리스가 두 개 있는 마일스톤의 예제입니다. 릴리스 연결이 있는 마일스톤

note
하위 그룹의 프로젝트 릴리스는 상위 그룹의 마일스톤과 연관시킬 수 없습니다. 자세한 내용은 이슈 #328054인 릴리스를 수퍼그룹 마일스톤에 연결할 수 없음을 읽어보세요.

릴리스가 생성될 때 알림 받기

프로젝트에 새 릴리스가 생성될 때 이메일로 알림을 받을 수 있습니다.

릴리스 알림을 받으려면 다음 단계를 따르세요:

  1. 왼쪽 사이드바에서 프로젝트 개요를 선택합니다.
  2. 알림 설정(종모양 아이콘)을 선택합니다.
  3. 디렉터리에서 사용자 정의를 선택합니다.
  4. 새 릴리스 확인란을 선택합니다.
  5. 대화 상자를 닫아 저장합니다.

의도하지 않은 릴리스 방지를 위한 배포 동결 설정

  • GitLab 13.0에서 도입되었습니다.
  • UI를 통한 동결 기간 삭제 기능이 GitLab 14.3에서 도입되었습니다.

지정한 시간 동안 의도하지 않은 프로덕션 릴리스를 방지하여 배포 동결 기간을 설정함으로써 불확실성과 리스크를 줄일 수 있습니다. 배포 동결은 배포 자동화 시 불확실성과 리스크를 줄이는 데 도움이 됩니다.

관리자는 UI에서 배포 동결 창을 설정하거나 동결 기간 API를 사용하여 freeze_startfreeze_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에서 배포 동결 기간을 설정하려면 다음 단계를 완료하세요:

  1. Maintainer 역할이 있는 사용자로서 GitLab에 로그인합니다.
  2. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  3. 설정 > CI/CD를 선택합니다.
  4. 배포 동결로 스크롤합니다.
  5. 확장을 선택하여 배포 동결 테이블을 볼 수 있습니다.
  6. 배포 동결 추가를 선택하여 배포 동결 모달을 엽니다.
  7. 원하는 배포 동결 기간의 시작 시간, 종료 시간 및 시간대를 입력합니다.
  8. 모달에서 배포 동결 추가를 선택합니다.
  9. 배포 동결을 저장한 후 편집하려면 편집 버튼(연필 아이콘)을, 삭제하려면 삭제 버튼(삭제 아이콘)을 선택합니다. 배포 동결 기간 설정을 위한 배포 동결 모달

프로젝트에 여러 동결 기간이 있는 경우 모든 기간이 적용됩니다. 겹치는 경우 동결이 전체 중첩 기간을 커버합니다.

자세한 내용은 배포 안전성을 참조하세요.


릴리스 권한

  • 생성, 업데이트 및 삭제 작업에 대한 권한 모델 수정 사항이 GitLab 14.1에서 도입되었습니다.

릴리스 보기 및 자산 다운로드

  • 게스트 역할에 대한 변경 사항이 GitLab 14.5에서 도입되었습니다.
  • 최소한 Reporter 역할을 가진 사용자는 프로젝트 릴리스를 읽고 다운로드할 수 있습니다.
  • 게스트 역할을 가진 사용자는 프로젝트 릴리스를 읽고 다운로드할 수 있습니다. 이는 관련된 Git 태그 이름, 릴리스 설명, 릴리스의 저자 정보를 포함합니다. 그러나 소스 코드릴리스 증거와 같은 다른 리포지터리 관련 정보는 삭제됩니다.

소스 코드 접근 권한을 부여하지 않고 릴리스 공개

소스 코드 및 릴리스 증거와 같은 리포지터리 관련 정보를 비공개로 유지하면서 프로젝트 구성원이 아닌 사용자에게 릴리스를 제공할 수 있습니다. 이를 사용하여 릴리스를 소스 코드 공개를 원하지 않지만 새 버전의 소프트웨어에 액세스하려는 프로젝트에 활용할 수 있습니다.

릴리스를 공개로 제공하려면 다음 프로젝트 설정을 설정하세요:

  • 리포지터리가 활성화되어 있고 프로젝트 구성원 전용으로 설정되어 있음
  • 릴리스가 활성화되어 있고 액세스가 있는 모든 사용자로 설정되어 있음

릴리스 및 해당 자산의 생성, 업데이트 및 삭제

릴리스 권한 제어의 예로, Maintainer 역할 이상의 사용자에게만 릴리스를 생성, 업데이트 및 삭제할 수 있도록 하려면 와일드카드(*)로 태그를 보호하고 허용된 사용자 열에 Maintainer를 설정하세요.

릴리스 지표

Tier: Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

그룹 레벨의 릴리스 지표는 그룹 > 분석 > CI/CD로 이동하여 확인할 수 있습니다. 이러한 지표에는 다음이 포함됩니다:

  • 그룹 내 릴리스 총 수
  • 적어도 하나의 릴리스가 있는 그룹 내 프로젝트의 백분율

실제 예제 프로젝트

지도형 탐구 프로젝트 GitVersion을 활용한 완전히 자동화된 소프트웨어 및 자산 버전 관리는 다음을 보여줍니다:

  • GitLab 릴리스 사용
  • GitLab release-cli 사용
  • 일반적인 패키지 생성
  • 패키지를 릴리스에 링크
  • 복잡한 리포지터리의 버전을 자동으로 결정하고 증가시키기 위해 GitVersion 도구 사용

예제 프로젝트를 귀하의 그룹이나 인스턴스로 복사하여 테스트할 수 있습니다. 프로젝트 페이지에서 표시된 기타 GitLab CI 패턴에 대한 자세한 내용을 확인할 수 있습니다.

문제 해결

릴리스 및 해당 자산의 생성, 업데이트, 삭제 시 403 Forbidden 또는 Something went wrong while creating a new release 오류발생

릴리스가 보호된 태그와 연관된 경우, UI/API 요청은 권한 실패로 이어질 수 있습니다. 보호된 태그를 생성할 수 있는 사용자 또는 서비스/봇 계정이 허용되었는지 확인하십시오.

더 많은 정보는 릴리스 권한을 참조하십시오.

저장에 대한 참고 사항

이 기능은 Git 태그를 기반으로 구축되어 릴리스 자체를 생성하는 데 필요한 외에는 사실상 추가 데이터가 필요하지 않습니다. 자동으로 생성된 추가 자산 및 릴리스 증거는 저장 공간을 소비합니다.