리뷰 앱

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

리뷰 앱은 제품 변경 사항을 쇼케이스하는 환경을 제공하는 협업 도구입니다.

참고: Kubernetes 클러스터가 있는 경우, 자동 DevOps를 사용하여 응용 프로그램에서 이 기능을 자동화할 수 있습니다.

리뷰 앱:

  • 기능 브랜치의 변경 사항을 자동으로 라이브로 미리 보기 할 수 있도록 병합 요청을 위한 동적 환경을 구축하여 변경 사항의 라이브 미리 보기를 제공합니다.
  • 디자이너 및 제품 관리자들이 귀하의 변경 사항을 체크 아웃하고 샌드박스 환경에서 실행할 필요 없이 변경 사항을 볼 수 있게 합니다.
  • GitLab DevOps LifeCycle과 완전히 통합됩니다.
  • 변경 사항을 원하는 곳에 배포할 수 있게 합니다.

리뷰 앱 워크플로우

이전 예시에서:

  • 변경 내용이 토픽 브랜치로 푸시될 때마다 리뷰 앱이 빌드됩니다.
  • 리뷰어는 제 3의 리뷰에 통과하기 전에 두 번의 리뷰를 거부합니다.
  • 리뷰를 통과하면 토픽 브랜치가 기본 브랜치로 병합되어 스테이징으로 배포됩니다.
  • 스테이징에서 승인된 후 기본 브랜치로 병합된 변경 사항이 프로덕션으로 배포됩니다.

리뷰 앱 작동 방식

리뷰 앱은 환경과 브랜치의 매핑입니다. 리뷰 앱에 대한 액세스는 해당 브랜치에 대한 병합 요청에 있는 링크를 통해 이용할 수 있습니다.

다음은 동적으로 환경이 설정된 병합 요청의 예시입니다.

병합 요청의 리뷰 앱

이 예에서, 브랜치가:

  • 성공적으로 빌드되었습니다.
  • 앱 보기를 선택하여 도달할 수 있는 동적 환경에 배포되었습니다.

리뷰 앱을 워크플로에 추가한 후에는 브랜치 Git 플로우를 따릅니다. 즉,

  1. 브랜치를 푸시하고 러너가 동적 환경 작업의 스크립트 정의를 기반으로 리뷰 앱을 배포하도록 합니다.
  2. 러너가 웹 응용 프로그램을 빌드하고 배포할 때까지 기다립니다.
  3. 라이브 변경 사항을 보려면 브랜치와 관련된 병합 요청의 링크를 선택합니다.

리뷰 앱 구성

리뷰 앱은 각 브랜치에 대해 동적으로 새로운 환경을 생성할 수 있도록 하는 동적 환경에서 구축됩니다.

리뷰 앱 구성 프로세스는 다음과 같습니다:

  1. 리뷰 앱을 호스팅하고 배포할 인프라를 설정합니다(아래의 예시 확인).
  2. 설치하고 구성하여 배포 작업을 수행할 러너를 설정합니다.
  3. .gitlab-ci.yml에서 미리 정의된 CI/CD 변수 ${CI_COMMIT_REF_SLUG}을 사용하여 동적 환경을 생성하고 브랜치에서만 실행하도록 제한하는 작업을 설정합니다. 또는 프로젝트에서 리뷰 앱 활성화를 통해 이 작업의 YAML 템플릿을 받을 수 있습니다.
  4. 참고로, 리뷰 앱을 수동으로 중지할 작업을 설정할 수 있습니다.

리뷰 앱 버튼 활성화

프로젝트에 리뷰 앱을 구성하려면, 위에서 언급한 대로 .gitlab-ci.yml 파일에 새 작업을 추가합니다. Kubernetes를 사용하고 있다면 리뷰 앱 활성화를 선택하면 GitLab에서 템플릿 코드 블록을 제시하여 .gitlab-ci.yml에 복사하여 붙여넣을 수 있습니다.

선결 조건:

  • 프로젝트에 대한 적어도 개발자 역할이 필요합니다.

리뷰 앱 템플릿을 사용하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고, 리뷰 앱 작업을 생성하려는 프로젝트를 찾아 선택합니다.
  2. 운영 > 환경을 선택합니다.
  3. 리뷰 앱 활성화를 선택합니다.
  4. 대화 상자의 지침에 따릅니다. 필요에 따라 제공된 .gitlab-ci.yml 템플릿을 편집할 수 있습니다.

리뷰 앱 자동 중지

주어진 시간 이후에 환경을 만료시키고 자동으로 중지하는 리뷰 앱 환경을 구성하는 방법을 확인하세요.

리뷰 앱 예시

다음은 리뷰 앱 구성을 보여주는 예제 프로젝트입니다:

프로젝트 구성 파일
NGINX .gitlab-ci.yml
OpenShift .gitlab-ci.yml
HashiCorp Nomad .gitlab-ci.yml
GitLab Documentation build-and-deploy.gitlab-ci.yml
https://about.gitlab.com/ .gitlab-ci.yml
GitLab Insights .gitlab-ci.yml

리뷰 앱의 다른 예시:

라우트 맵

라우트 맵을 사용하면 리뷰 앱을 위한 정의된 환경에서 소스 파일에서 바로 공개 페이지로 이동할 수 있습니다.

설정이 완료되면 병합 요청 위젯의 리뷰 앱 링크에서 변경된 페이지로 직접 이동하여 제안된 수정 사항을 빠르고 쉽게 미리 볼 수 있습니다.

라우트 맵을 구성하는 것은 리포지토리 내 파일 경로가 웹사이트의 페이지 경로와 어떻게 매핑되는지 GitLab에 알려주는 것을 포함합니다. 라우트 맵을 구성하면, 보기 버튼이 표시됩니다. 이 버튼을 선택하여 병합 요청에서 직접 변경된 페이지로 이동할 수 있습니다.

라우트 맵을 설정하려면 .gitlab/route-map.yml 경로의 리포지토리 내 파일을 추가해야 합니다. 이 파일에는 source 경로(리포지토리 내)가 public 경로(웹사이트에서)로 매핑된 YAML 배열이 포함되어야 합니다.

라우트 맵 예시

다음은 Middleman의 예시 라우트 맵입니다. Middleman은 GitLab 웹사이트를 구축하는 데 사용되는 정적 사이트 생성기(SSG)로, GitLab.com의 프로젝트에서 배포됩니다.

# 팀 데이터
- source: 'data/team.yml'  # data/team.yml
  public: 'team/'  # team/

# 블로그 글
- source: /source\/posts\/([0-9]{4})-([0-9]{2})-([0-9]{2})-(.+?)\..*/  # source/posts/2017-01-30-around-the-world-in-6-releases.html.md.erb
  public: '\1/\2/\3/\4/'  # 2017/01/30/around-the-world-in-6-releases/

# HTML 파일
- source: /source\/(.+?\.html).*/  # source/index.html.haml
  public: '\1'  # index.html

# 기타 파일
- source: /source\/(.*)/  # source/images/blogimages/around-the-world-in-6-releases-cover.png
  public: '\1'  # images/blogimages/around-the-world-in-6-releases-cover.png

매핑은 루트 YAML 배열의 항목으로 정의되며 - 접두사로 식별됩니다. 항목 내에는 두 개의 키를 가진 해시 맵이 있습니다:

  • source
    • 정확한 일치에 대한 '로 시작하고 끝나는 문자열입니다.
    • 패턴 일치에 대한 /로 시작하고 끝나는 정규 표현식입니다.
      • 정규 표현식은 전체 소스 경로와 일치해야 합니다. ^$ 앵커가 기본적으로 포함됩니다.
      • ()로 표시된 캡처 그룹을 포함하고, 이를 public 경로에서 참조할 수 있습니다.
      • 슬래시(/)는 \/로 이스케이프할 수도 있고 그렇지 않을 수도 있습니다.
      • 마침표(.)는 \.로 이스케이프해야 합니다.
  • public
    • '로 시작하고 끝나는 문자열입니다.
    • \N 표현식을 사용하여 발생 순서대로 source 정규 표현식의 캡처 그룹을 참조할 수 있습니다. (\1부터 시작)

소스 경로에 대한 공개 경로는 해당 경로와 일치하는 첫 번째 source 표현식을 찾아 해당하는 public 경로로 반환하며, 필요한 경우 () 캡처 그룹의 값으로 \N 표현식을 바꿉니다.

위 예시에서 매핑이 정의된 순서대로 평가되는 데 활용되어 /source/index.html.haml/source\/(.+?\.html).*/ 대신에 /source\/(.*)/와 일치하여 index.html이 아닌 index.html.haml로 결과가 나오도록 합니다.

라우트 맵을 설정한 후 다음 위치에서 적용됩니다:

  • 병합 요청 위젯:
    • 앱 보기 버튼을 선택하여 .gitlab-ci.yml 파일에서 설정된 환경 URL로 이동할 수 있습니다.
    • 목록에는 라우트 맵에서 일치하는 항목 중 첫 5개가 표시되지만, 5개 이상일 경우에는 필터링할 수 있습니다.

      병합 요청 위젯의 앱 파일 목록 보기

  • 비교나 커밋에 대한 차이점:
    • 파일 옆의 보기 ()를 선택하여 보기
  • blob 파일 보기:
    • 파일 옆의 보기 ()를 선택하여 보기